<?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>100104</bug_id>
          
          <creation_ts>2012-10-23 04:01:32 -0700</creation_ts>
          <short_desc>[EFL][WK2] Make History client a C++ class</short_desc>
          <delta_ts>2012-10-24 00:54:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>99992</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>748471</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-23 04:01:32 -0700</bug_when>
    <thetext>As part of https://bugs.webkit.org/show_bug.cgi?id=99992, we should convert the Context History client to C++.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748615</commentid>
    <comment_count>1</comment_count>
      <attachid>170159</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-23 07:17:22 -0700</bug_when>
    <thetext>Created attachment 170159
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748635</commentid>
    <comment_count>2</comment_count>
      <attachid>170159</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-10-23 07:44:09 -0700</bug_when>
    <thetext>Comment on attachment 170159
patch

Attachment 170159 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14487904</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749425</commentid>
    <comment_count>3</comment_count>
      <attachid>170335</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-24 00:22:37 -0700</bug_when>
    <thetext>Created attachment 170335
to be landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749447</commentid>
    <comment_count>4</comment_count>
      <attachid>170335</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 00:54:41 -0700</bug_when>
    <thetext>Comment on attachment 170335
to be landed

Clearing flags on attachment: 170335

Committed r132326: &lt;http://trac.webkit.org/changeset/132326&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749448</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 00:54:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170159</attachid>
            <date>2012-10-23 07:17:22 -0700</date>
            <delta_ts>2012-10-24 00:22:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug100104</filename>
            <type>text/plain</type>
            <size>23659</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGI0ZTE0NjgyYmE4MGEwYWVlYzgyMGFjNmNkMGNhYjJlM2JkOTlkNTYKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIE9jdCAyMyAxNjo0OToyNSAyMDEyICswMzAwCgogICAgYnVnMTAwMTA0CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDU1MzU0N2IuLjdiY2Q0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMi0x
MC0yMyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIE1ha2UgSGlzdG9yeSBjbGllbnQgYSBDKysgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDEwNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZWQgQ29u
dGV4dEhpc3RvcnlDbGllbnRFZmwgY2xhc3MgdG8gZW5jYXBzdWxhdGUgaGlzdG9yeSBjbGllbnQg
Y29kZSBmb3IgRUZMLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoRXdrX0NvbnRleHQ6
OkV3a19Db250ZXh0KToKKyAgICAgICAgKGV3a19jb250ZXh0X2hpc3RvcnlfY2FsbGJhY2tzX3Nl
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfaGlzdG9yeV9jbGll
bnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X2hpc3RvcnlfY2xpZW50X3ByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoRXdrX0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlD
bGllbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OnRvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0SGlz
dG9yeUNsaWVudEVmbDo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAo
V2ViS2l0OjpDb250ZXh0SGlzdG9yeUNsaWVudEVmbDo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
KToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmRpZFBlcmZvcm1T
ZXJ2ZXJSZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRIaXN0b3J5Q2xpZW50RWZs
OjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0SGlzdG9y
eUNsaWVudEVmbDo6cG9wdWxhdGVWaXNpdGVkTGlua3MpOgorICAgICAgICAoV2ViS2l0OjpDb250
ZXh0SGlzdG9yeUNsaWVudEVmbDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmwpOgorICAgICAgICAo
V2ViS2l0OjpDb250ZXh0SGlzdG9yeUNsaWVudEVmbDo6c2V0Q2FsbGJhY2tzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKENvbnRleHRIaXN0b3J5Q2xpZW50RWZsKToKKyAgICAgICAg
KFdlYktpdDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmNyZWF0ZSk6CisKIDIwMTItMTAtMjMg
IENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAg
ICBbRUZMXVtXSzJdIE1ha2UgcmVxdWVzdCBtYW5hZ2VyIGNsaWVudCBhIEMrKyBjbGFzcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA3NDFmMzQ4Li5lMmI1OWU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtNTAsNyArNTAsNiBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3QuY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHRfaGlzdG9yeV9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nv
b2tpZV9tYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2Iu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmNwcApAQCAtNzQsNiArNzMsNyBA
QCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9jYWlyby9CYWNr
aW5nU3RvcmVDYWlyby5jcHAKIAorICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGll
bnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCiAgICAg
VUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1Bh
Z2VQb2xpY3lDbGllbnRFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggZmJjMjRhMy4uY2RiMTQyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMjIsNiAr
MjIsNyBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAKICNpbmNsdWRlICJCYXR0ZXJ5UHJv
dmlkZXIuaCIKKyNpbmNsdWRlICJDb250ZXh0SGlzdG9yeUNsaWVudEVmbC5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtJbmZvUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZXF1ZXN0TWFuYWdlckNsaWVudEVm
bC5oIgogI2luY2x1ZGUgIlZpYnJhdGlvblByb3ZpZGVyLmgiCkBAIC0zMyw3ICszNCw2IEBACiAj
aW5jbHVkZSAiV2ViQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5oIgogI2lu
Y2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCi0jaW5jbHVkZSAiZXdrX2NvbnRl
eHRfaGlzdG9yeV9jbGllbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
ImV3a19mYXZpY29uX2RhdGFiYXNlX3ByaXZhdGUuaCIKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGlj
IGlubGluZSBDb250ZXh0TWFwJiBjb250ZXh0TWFwKCkKIAogRXdrX0NvbnRleHQ6OkV3a19Db250
ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX2hpc3RvcnlDbGllbnQoKQorICAgICwgbV9oaXN0b3J5Q2xpZW50KENvbnRleHRIaXN0b3J5
Q2xpZW50RWZsOjpjcmVhdGUoY29udGV4dCkpCiB7CiAgICAgQ29udGV4dE1hcDo6QWRkUmVzdWx0
IHJlc3VsdCA9IGNvbnRleHRNYXAoKS5hZGQoY29udGV4dCwgdGhpcyk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKQEAgLTk5LDcgKzk5LDYgQEAgRXdrX0Nv
bnRleHQ6OkV3a19Db250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogI2VuZGlmCiAKICAgICAv
LyBJbml0aWFsaXplIFdLQ29udGV4dCBjbGllbnRzLgotICAgIGV3a19jb250ZXh0X2hpc3Rvcnlf
Y2xpZW50X2F0dGFjaCh0aGlzKTsKICAgICBtX2Rvd25sb2FkTWFuYWdlciA9IERvd25sb2FkTWFu
YWdlckVmbDo6Y3JlYXRlKHRoaXMpOwogICAgIG1fcmVxdWVzdE1hbmFnZXJDbGllbnQgPSBSZXF1
ZXN0TWFuYWdlckNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpOwogfQpAQCAtMjczLDE2ICsyNzIsOSBA
QCB2b2lkIGV3a19jb250ZXh0X2hpc3RvcnlfY2FsbGJhY2tzX3NldChFd2tfQ29udGV4dCogZXdr
Q29udGV4dCwgRXdrX0hpc3RvcnlfTmF2aQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKGV3a0NvbnRleHQpOwogCi0gICAgRXdrX0NvbnRleHRfSGlzdG9yeV9DbGllbnQmIGhpc3Rv
cnlDbGllbnQgPSBld2tDb250ZXh0LT5oaXN0b3J5Q2xpZW50KCk7Ci0gICAgaGlzdG9yeUNsaWVu
dC5uYXZpZ2F0ZV9mdW5jID0gbmF2aWdhdGU7Ci0gICAgaGlzdG9yeUNsaWVudC5jbGllbnRfcmVk
aXJlY3RfZnVuYyA9IGNsaWVudFJlZGlyZWN0OwotICAgIGhpc3RvcnlDbGllbnQuc2VydmVyX3Jl
ZGlyZWN0X2Z1bmMgPSBzZXJ2ZXJSZWRpcmVjdDsKLSAgICBoaXN0b3J5Q2xpZW50LnRpdGxlX3Vw
ZGF0ZV9mdW5jID0gdGl0bGVVcGRhdGU7Ci0gICAgaGlzdG9yeUNsaWVudC5wb3B1bGF0ZV92aXNp
dGVkX2xpbmtzX2Z1bmMgPSBwb3B1bGF0ZVZpc2l0ZWRMaW5rczsKLSAgICBoaXN0b3J5Q2xpZW50
LnVzZXJfZGF0YSA9IGRhdGE7CisgICAgZXdrQ29udGV4dC0+aGlzdG9yeUNsaWVudCgpLT5zZXRD
YWxsYmFja3MobmF2aWdhdGUsIGNsaWVudFJlZGlyZWN0LCBzZXJ2ZXJSZWRpcmVjdCwgdGl0bGVV
cGRhdGUsIHBvcHVsYXRlVmlzaXRlZExpbmtzLCBkYXRhKTsKIH0KIAotCiB2b2lkIGV3a19jb250
ZXh0X3Zpc2l0ZWRfbGlua19hZGQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIGNvbnN0IGNoYXIq
IHZpc2l0ZWRVUkwpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXdrQ29udGV4
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dF9oaXN0b3J5X2NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dF9oaXN0b3J5X2NsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRmNzkzYjkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfaGlzdG9yeV9jbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJld2tfY29udGV4dC5oIgotCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgotI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLQ29udGV4dC5oIgotI2luY2x1ZGUgIldL
RWluYVNoYXJlZFN0cmluZy5oIgotI2luY2x1ZGUgIldLU3RyaW5nLmgiCi0jaW5jbHVkZSAiZXdr
X2NvbnRleHRfaGlzdG9yeV9jbGllbnRfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19jb250ZXh0
X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9kYXRhLmgiCi0jaW5jbHVkZSAi
ZXdrX25hdmlnYXRpb25fZGF0YV9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3VybF9yZXNwb25z
ZS5oIgotI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3
a192aWV3X3ByaXZhdGUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RhdGljIGlu
bGluZSBjb25zdCBFd2tfQ29udGV4dF9IaXN0b3J5X0NsaWVudCYgZ2V0RXdrSGlzdG9yeUNsaWVu
dChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIEFTU0VSVChjbGllbnRJbmZvKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgRXdrX0NvbnRleHQqPihjbGllbnRJbmZvKS0+aGlz
dG9yeUNsaWVudCgpOwotfQotCi1zdGF0aWMgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YShXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25EYXRhUmVmIG5h
dmlnYXRpb25EYXRhLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAg
IGNvbnN0IEV3a19Db250ZXh0X0hpc3RvcnlfQ2xpZW50JiBoaXN0b3J5Q2xpZW50ID0gZ2V0RXdr
SGlzdG9yeUNsaWVudChjbGllbnRJbmZvKTsKLQotICAgIGlmICghaGlzdG9yeUNsaWVudC5uYXZp
Z2F0ZV9mdW5jKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8RXdrX05hdmlnYXRpb25f
RGF0YT4gbmF2aWdhdGlvbkRhdGFFd2sgPSBFd2tfTmF2aWdhdGlvbl9EYXRhOjpjcmVhdGUobmF2
aWdhdGlvbkRhdGEpOwotICAgIGhpc3RvcnlDbGllbnQubmF2aWdhdGVfZnVuYyhld2tfdmlld19m
cm9tX3BhZ2VfZ2V0KHRvSW1wbChwYWdlKSksIG5hdmlnYXRpb25EYXRhRXdrLmdldCgpLCBoaXN0
b3J5Q2xpZW50LnVzZXJfZGF0YSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFBlcmZvcm1DbGllbnRS
ZWRpcmVjdChXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBzb3VyY2VVUkws
IFdLVVJMUmVmIGRlc3RpbmF0aW9uVVJMLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQotewotICAgIGNvbnN0IEV3a19Db250ZXh0X0hpc3RvcnlfQ2xpZW50JiBoaXN0b3J5Q2xp
ZW50ID0gZ2V0RXdrSGlzdG9yeUNsaWVudChjbGllbnRJbmZvKTsKLQotICAgIGlmICghaGlzdG9y
eUNsaWVudC5jbGllbnRfcmVkaXJlY3RfZnVuYykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV0tF
aW5hU2hhcmVkU3RyaW5nIHNvdXJjZVVSTFN0cmluZyhzb3VyY2VVUkwpOwotICAgIFdLRWluYVNo
YXJlZFN0cmluZyBkZXN0aW5hdGlvblVSTFN0cmluZyhkZXN0aW5hdGlvblVSTCk7Ci0KLSAgICBo
aXN0b3J5Q2xpZW50LmNsaWVudF9yZWRpcmVjdF9mdW5jKGV3a192aWV3X2Zyb21fcGFnZV9nZXQo
dG9JbXBsKHBhZ2UpKSwgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgaGlz
dG9yeUNsaWVudC51c2VyX2RhdGEpOwotfQotCi1zdGF0aWMgdm9pZCBkaWRQZXJmb3JtU2VydmVy
UmVkaXJlY3QoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgc291cmNlVVJM
LCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKLXsKLSAgICBjb25zdCBFd2tfQ29udGV4dF9IaXN0b3J5X0NsaWVudCYgaGlzdG9yeUNs
aWVudCA9IGdldEV3a0hpc3RvcnlDbGllbnQoY2xpZW50SW5mbyk7Ci0KLSAgICBpZiAoIWhpc3Rv
cnlDbGllbnQuc2VydmVyX3JlZGlyZWN0X2Z1bmMpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdL
RWluYVNoYXJlZFN0cmluZyBzb3VyY2VVUkxTdHJpbmcoc291cmNlVVJMKTsKLSAgICBXS0VpbmFT
aGFyZWRTdHJpbmcgZGVzdGluYXRpb25VUkxTdHJpbmcoZGVzdGluYXRpb25VUkwpOwotCi0gICAg
aGlzdG9yeUNsaWVudC5zZXJ2ZXJfcmVkaXJlY3RfZnVuYyhld2tfdmlld19mcm9tX3BhZ2VfZ2V0
KHRvSW1wbChwYWdlKSksIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcsIGhp
c3RvcnlDbGllbnQudXNlcl9kYXRhKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkVXBkYXRlSGlzdG9y
eVRpdGxlKFdLQ29udGV4dFJlZiwgV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRpdGxlLCBX
S1VSTFJlZiBVUkwsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
Y29uc3QgRXdrX0NvbnRleHRfSGlzdG9yeV9DbGllbnQmIGhpc3RvcnlDbGllbnQgPSBnZXRFd2tI
aXN0b3J5Q2xpZW50KGNsaWVudEluZm8pOwotCi0gICAgaWYgKCFoaXN0b3J5Q2xpZW50LnRpdGxl
X3VwZGF0ZV9mdW5jKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXS0VpbmFTaGFyZWRTdHJpbmcg
dGl0bGVTdHJpbmcodGl0bGUpOwotICAgIFdLRWluYVNoYXJlZFN0cmluZyBzdHJpbmdVUkwoVVJM
KTsKLQotICAgIGhpc3RvcnlDbGllbnQudGl0bGVfdXBkYXRlX2Z1bmMoZXdrX3ZpZXdfZnJvbV9w
YWdlX2dldCh0b0ltcGwocGFnZSkpLCB0aXRsZVN0cmluZywgc3RyaW5nVVJMLCBoaXN0b3J5Q2xp
ZW50LnVzZXJfZGF0YSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzKFdL
Q29udGV4dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBjb25zdCBFd2tfQ29u
dGV4dF9IaXN0b3J5X0NsaWVudCYgaGlzdG9yeUNsaWVudCA9IGdldEV3a0hpc3RvcnlDbGllbnQo
Y2xpZW50SW5mbyk7Ci0KLSAgICBpZiAoIWhpc3RvcnlDbGllbnQucG9wdWxhdGVfdmlzaXRlZF9s
aW5rc19mdW5jKQotICAgICAgICByZXR1cm47Ci0KLSAgICBoaXN0b3J5Q2xpZW50LnBvcHVsYXRl
X3Zpc2l0ZWRfbGlua3NfZnVuYyhoaXN0b3J5Q2xpZW50LnVzZXJfZGF0YSk7Ci19Ci0KLXZvaWQg
ZXdrX2NvbnRleHRfaGlzdG9yeV9jbGllbnRfYXR0YWNoKEV3a19Db250ZXh0KiBld2tDb250ZXh0
KQotewotICAgIFdLQ29udGV4dEhpc3RvcnlDbGllbnQgd2tIaXN0b3J5Q2xpZW50OwotICAgIG1l
bXNldCgmd2tIaXN0b3J5Q2xpZW50LCAwLCBzaXplb2YoV0tDb250ZXh0SGlzdG9yeUNsaWVudCkp
OwotCi0gICAgd2tIaXN0b3J5Q2xpZW50LnZlcnNpb24gPSBrV0tDb250ZXh0SGlzdG9yeUNsaWVu
dEN1cnJlbnRWZXJzaW9uOwotICAgIHdrSGlzdG9yeUNsaWVudC5jbGllbnRJbmZvID0gZXdrQ29u
dGV4dDsKLQotICAgIHdrSGlzdG9yeUNsaWVudC5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YSA9IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOwotICAgIHdrSGlzdG9yeUNsaWVudC5k
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QgPSBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Q7Ci0gICAg
d2tIaXN0b3J5Q2xpZW50LmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCA9IGRpZFBlcmZvcm1TZXJ2
ZXJSZWRpcmVjdDsKLSAgICB3a0hpc3RvcnlDbGllbnQuZGlkVXBkYXRlSGlzdG9yeVRpdGxlID0g
ZGlkVXBkYXRlSGlzdG9yeVRpdGxlOwotICAgIHdrSGlzdG9yeUNsaWVudC5wb3B1bGF0ZVZpc2l0
ZWRMaW5rcyA9IHBvcHVsYXRlVmlzaXRlZExpbmtzOwotCi0gICAgV0tDb250ZXh0U2V0SGlzdG9y
eUNsaWVudChld2tDb250ZXh0LT53a0NvbnRleHQoKSwgJndrSGlzdG9yeUNsaWVudCk7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9o
aXN0b3J5X2NsaWVudF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dF9oaXN0b3J5X2NsaWVudF9wcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDBiNDcwZGMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfaGlzdG9yeV9jbGllbnRfcHJpdmF0ZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBld2tf
Y29udGV4dF9oaXN0b3J5X2NsaWVudF9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX2NvbnRleHRfaGlz
dG9yeV9jbGllbnRfcHJpdmF0ZV9oCi0KLSNpbmNsdWRlICJld2tfY29udGV4dC5oIgotCi1zdHJ1
Y3QgRXdrX0NvbnRleHRfSGlzdG9yeV9DbGllbnQgewotICAgIHZvaWQqIHVzZXJfZGF0YTsKLSAg
ICBFd2tfSGlzdG9yeV9OYXZpZ2F0aW9uX0NiIG5hdmlnYXRlX2Z1bmM7Ci0gICAgRXdrX0hpc3Rv
cnlfQ2xpZW50X1JlZGlyZWN0aW9uX0NiIGNsaWVudF9yZWRpcmVjdF9mdW5jOwotICAgIEV3a19I
aXN0b3J5X1NlcnZlcl9SZWRpcmVjdGlvbl9DYiBzZXJ2ZXJfcmVkaXJlY3RfZnVuYzsKLSAgICBF
d2tfSGlzdG9yeV9UaXRsZV9VcGRhdGVfQ2IgdGl0bGVfdXBkYXRlX2Z1bmM7Ci0gICAgRXdrX0hp
c3RvcnlfUG9wdWxhdGVfVmlzaXRlZF9MaW5rc19DYiBwb3B1bGF0ZV92aXNpdGVkX2xpbmtzX2Z1
bmM7Ci19OwotCi12b2lkIGV3a19jb250ZXh0X2hpc3RvcnlfY2xpZW50X2F0dGFjaChFd2tfQ29u
dGV4dCopOwotCi0jZW5kaWYgLy8gZXdrX2NvbnRleHRfaGlzdG9yeV9jbGllbnRfcHJpdmF0ZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dF9wcml2YXRlLmgKaW5kZXggYjllNzkyOC4uY2YzOWVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaApAQCAtMjMs
NyArMjMsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlckVmbC5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCi0jaW5jbHVkZSAiZXdrX2NvbnRl
eHRfaGlzdG9yeV9jbGllbnRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAK
IGNsYXNzIEV3a19VcmxfU2NoZW1lX1JlcXVlc3Q7CiBjbGFzcyBFd2tfQ29va2llX01hbmFnZXI7
CkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFZpYnJhdGlvblByb3ZpZGVyOwogI2VuZGlmCiAKIG5h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgQ29udGV4dEhpc3RvcnlDbGllbnRFZmw7CiBjbGFzcyBS
ZXF1ZXN0TWFuYWdlckNsaWVudEVmbDsKIH0KIApAQCAtNzQsOCArNzUsNyBAQCBwdWJsaWM6CiAK
ICAgICBXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbCogZG93bmxvYWRNYW5hZ2VyKCkgY29uc3Q7
CiAKLSAgICBjb25zdCBFd2tfQ29udGV4dF9IaXN0b3J5X0NsaWVudCYgaGlzdG9yeUNsaWVudCgp
IGNvbnN0ICB7IHJldHVybiBtX2hpc3RvcnlDbGllbnQ7IH0KLSAgICBFd2tfQ29udGV4dF9IaXN0
b3J5X0NsaWVudCYgaGlzdG9yeUNsaWVudCgpIHsgcmV0dXJuIG1faGlzdG9yeUNsaWVudDsgfQor
ICAgIFdlYktpdDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmwqIGhpc3RvcnlDbGllbnQoKTsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBFd2tfQ29udGV4dChXS0NvbnRleHRSZWYpOwpAQCAtOTYs
NyArOTYsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVm
bD4gbV9kb3dubG9hZE1hbmFnZXI7CiAgICAgT3duUHRyPFdlYktpdDo6UmVxdWVzdE1hbmFnZXJD
bGllbnRFZmw+IG1fcmVxdWVzdE1hbmFnZXJDbGllbnQ7CiAKLSAgICBFd2tfQ29udGV4dF9IaXN0
b3J5X0NsaWVudCBtX2hpc3RvcnlDbGllbnQ7CisgICAgT3duUHRyPFdlYktpdDo6Q29udGV4dEhp
c3RvcnlDbGllbnRFZmw+IG1faGlzdG9yeUNsaWVudDsKIH07CiAKICNlbmRpZiAvLyBld2tfY29u
dGV4dF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
Q29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9Db250ZXh0SGlzdG9yeUNsaWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMDA3M2U2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCkBAIC0wLDAgKzEsMTQ0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ29udGV4
dEhpc3RvcnlDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0NvbnRleHQuaCIKKyNpbmNsdWRlICJXS0Vp
bmFTaGFyZWRTdHJpbmcuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgImV3a19j
b250ZXh0X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9kYXRhLmgiCisjaW5j
bHVkZSAiZXdrX25hdmlnYXRpb25fZGF0YV9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3VybF9y
ZXNwb25zZS5oIgorI2luY2x1ZGUgImV3a191cmxfcmVzcG9uc2VfcHJpdmF0ZS5oIgorI2luY2x1
ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBp
bmxpbmUgY29uc3QgQ29udGV4dEhpc3RvcnlDbGllbnRFZmwqIHRvQ29udGV4dEhpc3RvcnlDbGll
bnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBBU1NFUlQoY2xpZW50SW5mbyk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENvbnRleHRIaXN0b3J5Q2xpZW50RWZsKj4o
Y2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmRpZE5hdmln
YXRlV2l0aE5hdmlnYXRpb25EYXRhKFdLQ29udGV4dFJlZiwgV0tQYWdlUmVmIHBhZ2UsIFdLTmF2
aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit7CisgICAgY29uc3QgQ29udGV4dEhpc3RvcnlDbGllbnRFZmwqIGhpc3RvcnlD
bGllbnQgPSB0b0NvbnRleHRIaXN0b3J5Q2xpZW50RWZsKGNsaWVudEluZm8pOworCisgICAgaWYg
KCFoaXN0b3J5Q2xpZW50LT5tX25hdmlnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQ
dHI8RXdrX05hdmlnYXRpb25fRGF0YT4gbmF2aWdhdGlvbkRhdGFFd2sgPSBFd2tfTmF2aWdhdGlv
bl9EYXRhOjpjcmVhdGUobmF2aWdhdGlvbkRhdGEpOworICAgIGhpc3RvcnlDbGllbnQtPm1fbmF2
aWdhdGUoZXdrX3ZpZXdfZnJvbV9wYWdlX2dldCh0b0ltcGwocGFnZSkpLCBuYXZpZ2F0aW9uRGF0
YUV3ay5nZXQoKSwgaGlzdG9yeUNsaWVudC0+bV91c2VyRGF0YSk7Cit9CisKK3ZvaWQgQ29udGV4
dEhpc3RvcnlDbGllbnRFZmw6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXS0NvbnRleHRSZWYs
IFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBzb3VyY2VVUkwsIFdLVVJMUmVmIGRlc3RpbmF0aW9u
VVJMLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGNvbnN0IENv
bnRleHRIaXN0b3J5Q2xpZW50RWZsKiBoaXN0b3J5Q2xpZW50ID0gdG9Db250ZXh0SGlzdG9yeUNs
aWVudEVmbChjbGllbnRJbmZvKTsKKworICAgIGlmICghaGlzdG9yeUNsaWVudC0+bV9jbGllbnRS
ZWRpcmVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHNvdXJj
ZVVSTFN0cmluZyhzb3VyY2VVUkwpOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBkZXN0aW5hdGlv
blVSTFN0cmluZyhkZXN0aW5hdGlvblVSTCk7CisKKyAgICBoaXN0b3J5Q2xpZW50LT5tX2NsaWVu
dFJlZGlyZWN0KGV3a192aWV3X2Zyb21fcGFnZV9nZXQodG9JbXBsKHBhZ2UpKSwgc291cmNlVVJM
U3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgaGlzdG9yeUNsaWVudC0+bV91c2VyRGF0YSk7
Cit9CisKK3ZvaWQgQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdChXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBzb3VyY2VVUkwsIFdL
VVJMUmVmIGRlc3RpbmF0aW9uVVJMLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIGNvbnN0IENvbnRleHRIaXN0b3J5Q2xpZW50RWZsKiBoaXN0b3J5Q2xpZW50ID0g
dG9Db250ZXh0SGlzdG9yeUNsaWVudEVmbChjbGllbnRJbmZvKTsKKworICAgIGlmICghaGlzdG9y
eUNsaWVudC0+bV9zZXJ2ZXJSZWRpcmVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tFaW5h
U2hhcmVkU3RyaW5nIHNvdXJjZVVSTFN0cmluZyhzb3VyY2VVUkwpOworICAgIFdLRWluYVNoYXJl
ZFN0cmluZyBkZXN0aW5hdGlvblVSTFN0cmluZyhkZXN0aW5hdGlvblVSTCk7CisKKyAgICBoaXN0
b3J5Q2xpZW50LT5tX3NlcnZlclJlZGlyZWN0KGV3a192aWV3X2Zyb21fcGFnZV9nZXQodG9JbXBs
KHBhZ2UpKSwgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlvblVSTFN0cmluZywgaGlzdG9yeUNs
aWVudC0+bV91c2VyRGF0YSk7Cit9CisKK3ZvaWQgQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmRp
ZFVwZGF0ZUhpc3RvcnlUaXRsZShXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiBwYWdlLCBXS1N0cmlu
Z1JlZiB0aXRsZSwgV0tVUkxSZWYgVVJMLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQoreworICAgIGNvbnN0IENvbnRleHRIaXN0b3J5Q2xpZW50RWZsKiBoaXN0b3J5Q2xpZW50
ID0gdG9Db250ZXh0SGlzdG9yeUNsaWVudEVmbChjbGllbnRJbmZvKTsKKworICAgIGlmICghaGlz
dG9yeUNsaWVudC0+bV90aXRsZVVwZGF0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdLRWlu
YVNoYXJlZFN0cmluZyB0aXRsZVN0cmluZyh0aXRsZSk7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5n
IHN0cmluZ1VSTChVUkwpOworCisgICAgaGlzdG9yeUNsaWVudC0+bV90aXRsZVVwZGF0ZWQoZXdr
X3ZpZXdfZnJvbV9wYWdlX2dldCh0b0ltcGwocGFnZSkpLCB0aXRsZVN0cmluZywgc3RyaW5nVVJM
LCBoaXN0b3J5Q2xpZW50LT5tX3VzZXJEYXRhKTsKK30KKwordm9pZCBDb250ZXh0SGlzdG9yeUNs
aWVudEVmbDo6cG9wdWxhdGVWaXNpdGVkTGlua3MoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIGNvbnN0IENvbnRleHRIaXN0b3J5Q2xpZW50RWZsKiBoaXN0b3J5
Q2xpZW50ID0gdG9Db250ZXh0SGlzdG9yeUNsaWVudEVmbChjbGllbnRJbmZvKTsKKworICAgIGlm
ICghaGlzdG9yeUNsaWVudC0+bV9wb3B1bGF0ZVZpc2l0ZWRMaW5rcykKKyAgICAgICAgcmV0dXJu
OworCisgICAgaGlzdG9yeUNsaWVudC0+bV9wb3B1bGF0ZVZpc2l0ZWRMaW5rcyhoaXN0b3J5Q2xp
ZW50LT5tX3VzZXJEYXRhKTsKK30KKworQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OkNvbnRleHRI
aXN0b3J5Q2xpZW50RWZsKFdLQ29udGV4dFJlZiBjb250ZXh0KQorICAgIDogbV91c2VyRGF0YSgw
KQorICAgICwgbV9uYXZpZ2F0ZSgwKQorICAgICwgbV9jbGllbnRSZWRpcmVjdCgwKQorICAgICwg
bV9zZXJ2ZXJSZWRpcmVjdCgwKQorICAgICwgbV90aXRsZVVwZGF0ZWQoMCkKKyAgICAsIG1fcG9w
dWxhdGVWaXNpdGVkTGlua3MoMCkKK3sKKyAgICBBU1NFUlQoY29udGV4dCk7CisKKyAgICBXS0Nv
bnRleHRIaXN0b3J5Q2xpZW50IHdrSGlzdG9yeUNsaWVudDsKKyAgICBtZW1zZXQoJndrSGlzdG9y
eUNsaWVudCwgMCwgc2l6ZW9mKFdLQ29udGV4dEhpc3RvcnlDbGllbnQpKTsKKworICAgIHdrSGlz
dG9yeUNsaWVudC52ZXJzaW9uID0ga1dLQ29udGV4dEhpc3RvcnlDbGllbnRDdXJyZW50VmVyc2lv
bjsKKyAgICB3a0hpc3RvcnlDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisKKyAgICB3a0hpc3Rv
cnlDbGllbnQuZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEgPSBkaWROYXZpZ2F0ZVdpdGhO
YXZpZ2F0aW9uRGF0YTsKKyAgICB3a0hpc3RvcnlDbGllbnQuZGlkUGVyZm9ybUNsaWVudFJlZGly
ZWN0ID0gZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0OworICAgIHdrSGlzdG9yeUNsaWVudC5kaWRQ
ZXJmb3JtU2VydmVyUmVkaXJlY3QgPSBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q7CisgICAgd2tI
aXN0b3J5Q2xpZW50LmRpZFVwZGF0ZUhpc3RvcnlUaXRsZSA9IGRpZFVwZGF0ZUhpc3RvcnlUaXRs
ZTsKKyAgICB3a0hpc3RvcnlDbGllbnQucG9wdWxhdGVWaXNpdGVkTGlua3MgPSBwb3B1bGF0ZVZp
c2l0ZWRMaW5rczsKKworICAgIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoY29udGV4dCwgJndr
SGlzdG9yeUNsaWVudCk7Cit9CisKK3ZvaWQgQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OnNldENh
bGxiYWNrcyhFd2tfSGlzdG9yeV9OYXZpZ2F0aW9uX0NiIG5hdmlnYXRlLCBFd2tfSGlzdG9yeV9D
bGllbnRfUmVkaXJlY3Rpb25fQ2IgY2xpZW50UmVkaXJlY3QsIEV3a19IaXN0b3J5X1NlcnZlcl9S
ZWRpcmVjdGlvbl9DYiBzZXJ2ZXJSZWRpcmVjdCwgRXdrX0hpc3RvcnlfVGl0bGVfVXBkYXRlX0Ni
IHRpdGxlVXBkYXRlLCBFd2tfSGlzdG9yeV9Qb3B1bGF0ZV9WaXNpdGVkX0xpbmtzX0NiIHBvcHVs
YXRlVmlzaXRlZExpbmtzLCB2b2lkKiBkYXRhKQoreworICAgIG1fbmF2aWdhdGUgPSBuYXZpZ2F0
ZTsKKyAgICBtX2NsaWVudFJlZGlyZWN0ID0gY2xpZW50UmVkaXJlY3Q7CisgICAgbV9zZXJ2ZXJS
ZWRpcmVjdCA9IHNlcnZlclJlZGlyZWN0OworICAgIG1fdGl0bGVVcGRhdGVkID0gdGl0bGVVcGRh
dGU7CisgICAgbV9wb3B1bGF0ZVZpc2l0ZWRMaW5rcyA9IHBvcHVsYXRlVmlzaXRlZExpbmtzOwor
ICAgIG1fdXNlckRhdGEgPSBkYXRhOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRF
ZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRF
ZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjAzMjU2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Db250ZXh0SGlzdG9yeUNs
aWVudEVmbC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Q29udGV4dEhpc3RvcnlDbGllbnRFZmxfaAorI2RlZmluZSBDb250ZXh0SGlzdG9yeUNsaWVudEVm
bF9oCisKKyNpbmNsdWRlICJld2tfY29udGV4dC5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNl
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIENvbnRleHRIaXN0b3J5Q2xpZW50RWZsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxDb250ZXh0SGlzdG9yeUNsaWVudEVmbD4gY3JlYXRlKFdLQ29udGV4dFJlZiBjb250
ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZXh0SGlzdG9yeUNs
aWVudEVmbChjb250ZXh0KSk7CisgICAgfQorCisgICAgdm9pZCBzZXRDYWxsYmFja3MoRXdrX0hp
c3RvcnlfTmF2aWdhdGlvbl9DYiwgRXdrX0hpc3RvcnlfQ2xpZW50X1JlZGlyZWN0aW9uX0NiLCBF
d2tfSGlzdG9yeV9TZXJ2ZXJfUmVkaXJlY3Rpb25fQ2IsIEV3a19IaXN0b3J5X1RpdGxlX1VwZGF0
ZV9DYiwgRXdrX0hpc3RvcnlfUG9wdWxhdGVfVmlzaXRlZF9MaW5rc19DYiwgdm9pZCopOworCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IENvbnRleHRIaXN0b3J5Q2xpZW50RWZsKFdLQ29udGV4dFJl
Zik7CisKKyAgICBzdGF0aWMgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXS0Nv
bnRleHRSZWYsIFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uRGF0YVJlZiwgV0tGcmFtZVJlZiwgY29u
c3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXS0Nv
bnRleHRSZWYsIFdLUGFnZVJlZiwgV0tVUkxSZWYgc291cmNlVVJMLCBXS1VSTFJlZiwgV0tGcmFt
ZVJlZiwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdChXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiwgV0tVUkxSZWYgc291cmNlVVJMLCBXS1VSTFJl
ZiwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIGRpZFVwZGF0ZUhp
c3RvcnlUaXRsZShXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIFdLVVJMUmVm
LCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgcG9wdWxhdGVWaXNp
dGVkTGlua3MoV0tDb250ZXh0UmVmLCBjb25zdCB2b2lkKik7CisKKyAgICB2b2lkKiBtX3VzZXJE
YXRhOworICAgIEV3a19IaXN0b3J5X05hdmlnYXRpb25fQ2IgbV9uYXZpZ2F0ZTsKKyAgICBFd2tf
SGlzdG9yeV9DbGllbnRfUmVkaXJlY3Rpb25fQ2IgbV9jbGllbnRSZWRpcmVjdDsKKyAgICBFd2tf
SGlzdG9yeV9TZXJ2ZXJfUmVkaXJlY3Rpb25fQ2IgbV9zZXJ2ZXJSZWRpcmVjdDsKKyAgICBFd2tf
SGlzdG9yeV9UaXRsZV9VcGRhdGVfQ2IgbV90aXRsZVVwZGF0ZWQ7CisgICAgRXdrX0hpc3Rvcnlf
UG9wdWxhdGVfVmlzaXRlZF9MaW5rc19DYiBtX3BvcHVsYXRlVmlzaXRlZExpbmtzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBDb250ZXh0SGlzdG9yeUNsaWVudEVm
bF9oCg==
</data>
<flag name="review"
          id="183668"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="183669"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170335</attachid>
            <date>2012-10-24 00:22:37 -0700</date>
            <delta_ts>2012-10-24 00:54:40 -0700</delta_ts>
            <desc>to be landed</desc>
            <filename>bug100104_v2</filename>
            <type>text/plain</type>
            <size>24011</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGQxNzVjMWI3YjkzMmEyYTVmYmVkMzc5MmMxYTYxNDU2MWIzYjY1NzYKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIE9jdCAyNCAxMDoxOTozNSAyMDEyICswMzAwCgogICAgYnVnMTAwMTA0CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDI3Zjg0MWYuLjhiZWQxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMi0x
MC0yMyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXSzJdIE1ha2UgSGlzdG9yeSBjbGllbnQgYSBDKysgY2xhc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDEwNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAg
IENyZWF0ZWQgQ29udGV4dEhpc3RvcnlDbGllbnRFZmwgY2xhc3MgdG8gZW5jYXBzdWxhdGUgaGlz
dG9yeSBjbGllbnQgY29kZSBmb3IgRUZMLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAo
RXdrX0NvbnRleHQ6OkV3a19Db250ZXh0KToKKyAgICAgICAgKGV3a19jb250ZXh0X2hpc3Rvcnlf
Y2FsbGJhY2tzX3NldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
aGlzdG9yeV9jbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X2hpc3RvcnlfY2xpZW50X3ByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoRXdrX0NvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvQ29u
dGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OnRvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0
OjpDb250ZXh0SGlzdG9yeUNsaWVudEVmbDo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEp
OgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0SGlzdG9yeUNsaWVudEVmbDo6ZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmw6
OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNvbnRleHRIaXN0
b3J5Q2xpZW50RWZsOjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUpOgorICAgICAgICAoV2ViS2l0OjpD
b250ZXh0SGlzdG9yeUNsaWVudEVmbDo6cG9wdWxhdGVWaXNpdGVkTGlua3MpOgorICAgICAgICAo
V2ViS2l0OjpDb250ZXh0SGlzdG9yeUNsaWVudEVmbDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmwp
OgorICAgICAgICAoV2ViS2l0OjpDb250ZXh0SGlzdG9yeUNsaWVudEVmbDo6c2V0Q2FsbGJhY2tz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKENvbnRleHRIaXN0b3J5Q2xpZW50RWZs
KToKKyAgICAgICAgKFdlYktpdDo6Q29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmNyZWF0ZSk6CisK
IDIwMTItMTAtMjMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWJLaXQyIHBhcnQgb2YgPHJkYXI6Ly9wcm9ibGVtLzI5NjY5NzQ+IFttYWNdIEtlcm5pbmcgYW5k
IGxpZ2F0dXJlcyBhcmUgbm90IGVuYWJsZWQgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5j
bWFrZQppbmRleCA3NDFmMzQ4Li5lMmI1OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtNTAsNyArNTAsNiBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfaGlzdG9y
eV9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Nvb2tpZV9tYW5hZ2VyLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuY3BwCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Vycm9yLmNwcApAQCAtNzQsNiArNzMsNyBAQCBMSVNUKEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5j
cHAKIAorICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCiAgICAg
VUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Q
YWdlTG9hZENsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1BhZ2VQb2xpY3lDbGllbnRF
ZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dC5jcHAKaW5kZXggZmJjMjRhMy4uNWQyNTE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1
ZGUgImV3a19jb250ZXh0LmgiCiAKICNpbmNsdWRlICJCYXR0ZXJ5UHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJDb250ZXh0SGlzdG9yeUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIk5ldHdvcmtJbmZvUHJv
dmlkZXIuaCIKICNpbmNsdWRlICJSZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5oIgogI2luY2x1ZGUg
IlZpYnJhdGlvblByb3ZpZGVyLmgiCkBAIC0zMyw3ICszNCw2IEBACiAjaW5jbHVkZSAiV2ViQ29u
dGV4dC5oIgogI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5LmgiCi0jaW5jbHVkZSAiZXdrX2NvbnRleHRfaGlzdG9yeV9jbGll
bnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRl
ICJld2tfY29va2llX21hbmFnZXJfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2Rh
dGFiYXNlX3ByaXZhdGUuaCIKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGlubGluZSBDb250ZXh0
TWFwJiBjb250ZXh0TWFwKCkKIAogRXdrX0NvbnRleHQ6OkV3a19Db250ZXh0KFdLQ29udGV4dFJl
ZiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX2hpc3RvcnlDbGll
bnQoKQorICAgICwgbV9oaXN0b3J5Q2xpZW50KENvbnRleHRIaXN0b3J5Q2xpZW50RWZsOjpjcmVh
dGUoY29udGV4dCkpCiB7CiAgICAgQ29udGV4dE1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IGNvbnRl
eHRNYXAoKS5hZGQoY29udGV4dCwgdGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdC5pc05ld0VudHJ5KTsKQEAgLTk5LDcgKzk5LDYgQEAgRXdrX0NvbnRleHQ6OkV3a19Db250
ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogI2VuZGlmCiAKICAgICAvLyBJbml0aWFsaXplIFdL
Q29udGV4dCBjbGllbnRzLgotICAgIGV3a19jb250ZXh0X2hpc3RvcnlfY2xpZW50X2F0dGFjaCh0
aGlzKTsKICAgICBtX2Rvd25sb2FkTWFuYWdlciA9IERvd25sb2FkTWFuYWdlckVmbDo6Y3JlYXRl
KHRoaXMpOwogICAgIG1fcmVxdWVzdE1hbmFnZXJDbGllbnQgPSBSZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbDo6Y3JlYXRlKHRoaXMpOwogfQpAQCAtMjMyLDYgKzIzMSwxMSBAQCBEb3dubG9hZE1hbmFn
ZXJFZmwqIEV3a19Db250ZXh0Ojpkb3dubG9hZE1hbmFnZXIoKSBjb25zdAogICAgIHJldHVybiBt
X2Rvd25sb2FkTWFuYWdlci5nZXQoKTsKIH0KIAorQ29udGV4dEhpc3RvcnlDbGllbnRFZmwqIEV3
a19Db250ZXh0OjpoaXN0b3J5Q2xpZW50KCkKK3sKKyAgICByZXR1cm4gbV9oaXN0b3J5Q2xpZW50
LmdldCgpOworfQorCiBFd2tfQ29udGV4dCogZXdrX2NvbnRleHRfZGVmYXVsdF9nZXQoKQogewog
ICAgIHJldHVybiBFd2tfQ29udGV4dDo6ZGVmYXVsdENvbnRleHQoKS5nZXQoKTsKQEAgLTI3Mywx
NiArMjc3LDkgQEAgdm9pZCBld2tfY29udGV4dF9oaXN0b3J5X2NhbGxiYWNrc19zZXQoRXdrX0Nv
bnRleHQqIGV3a0NvbnRleHQsIEV3a19IaXN0b3J5X05hdmkKIHsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihld2tDb250ZXh0KTsKIAotICAgIEV3a19Db250ZXh0X0hpc3RvcnlfQ2xp
ZW50JiBoaXN0b3J5Q2xpZW50ID0gZXdrQ29udGV4dC0+aGlzdG9yeUNsaWVudCgpOwotICAgIGhp
c3RvcnlDbGllbnQubmF2aWdhdGVfZnVuYyA9IG5hdmlnYXRlOwotICAgIGhpc3RvcnlDbGllbnQu
Y2xpZW50X3JlZGlyZWN0X2Z1bmMgPSBjbGllbnRSZWRpcmVjdDsKLSAgICBoaXN0b3J5Q2xpZW50
LnNlcnZlcl9yZWRpcmVjdF9mdW5jID0gc2VydmVyUmVkaXJlY3Q7Ci0gICAgaGlzdG9yeUNsaWVu
dC50aXRsZV91cGRhdGVfZnVuYyA9IHRpdGxlVXBkYXRlOwotICAgIGhpc3RvcnlDbGllbnQucG9w
dWxhdGVfdmlzaXRlZF9saW5rc19mdW5jID0gcG9wdWxhdGVWaXNpdGVkTGlua3M7Ci0gICAgaGlz
dG9yeUNsaWVudC51c2VyX2RhdGEgPSBkYXRhOworICAgIGV3a0NvbnRleHQtPmhpc3RvcnlDbGll
bnQoKS0+c2V0Q2FsbGJhY2tzKG5hdmlnYXRlLCBjbGllbnRSZWRpcmVjdCwgc2VydmVyUmVkaXJl
Y3QsIHRpdGxlVXBkYXRlLCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcywgZGF0YSk7CiB9CiAKLQogdm9p
ZCBld2tfY29udGV4dF92aXNpdGVkX2xpbmtfYWRkKEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBj
b25zdCBjaGFyKiB2aXNpdGVkVVJMKQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KGV3a0NvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHRfaGlzdG9yeV9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfaGlzdG9yeV9jbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0Zjc5M2I5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2hpc3RvcnlfY2xpZW50LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEyNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKLQotI2luY2x1ZGUgIkRvd25sb2FkUHJv
eHkuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS0NvbnRleHQuaCIKLSNp
bmNsdWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJXS1N0cmluZy5oIgotI2lu
Y2x1ZGUgImV3a19jb250ZXh0X2hpc3RvcnlfY2xpZW50X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJl
d2tfY29udGV4dF9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fZGF0YS5oIgot
I2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2RhdGFfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a191
cmxfcmVzcG9uc2UuaCIKLSNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGUuaCIKLSNp
bmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0K
LXN0YXRpYyBpbmxpbmUgY29uc3QgRXdrX0NvbnRleHRfSGlzdG9yeV9DbGllbnQmIGdldEV3a0hp
c3RvcnlDbGllbnQoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBBU1NFUlQoY2xpZW50
SW5mbyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEV3a19Db250ZXh0Kj4oY2xpZW50
SW5mbyktPmhpc3RvcnlDbGllbnQoKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGEoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9u
RGF0YVJlZiBuYXZpZ2F0aW9uRGF0YSwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKLXsKLSAgICBjb25zdCBFd2tfQ29udGV4dF9IaXN0b3J5X0NsaWVudCYgaGlzdG9yeUNsaWVu
dCA9IGdldEV3a0hpc3RvcnlDbGllbnQoY2xpZW50SW5mbyk7Ci0KLSAgICBpZiAoIWhpc3RvcnlD
bGllbnQubmF2aWdhdGVfZnVuYykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPEV3a19O
YXZpZ2F0aW9uX0RhdGE+IG5hdmlnYXRpb25EYXRhRXdrID0gRXdrX05hdmlnYXRpb25fRGF0YTo6
Y3JlYXRlKG5hdmlnYXRpb25EYXRhKTsKLSAgICBoaXN0b3J5Q2xpZW50Lm5hdmlnYXRlX2Z1bmMo
ZXdrX3ZpZXdfZnJvbV9wYWdlX2dldCh0b0ltcGwocGFnZSkpLCBuYXZpZ2F0aW9uRGF0YUV3ay5n
ZXQoKSwgaGlzdG9yeUNsaWVudC51c2VyX2RhdGEpOwotfQotCi1zdGF0aWMgdm9pZCBkaWRQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYg
c291cmNlVVJMLCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCwgV0tGcmFtZVJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKLXsKLSAgICBjb25zdCBFd2tfQ29udGV4dF9IaXN0b3J5X0NsaWVudCYg
aGlzdG9yeUNsaWVudCA9IGdldEV3a0hpc3RvcnlDbGllbnQoY2xpZW50SW5mbyk7Ci0KLSAgICBp
ZiAoIWhpc3RvcnlDbGllbnQuY2xpZW50X3JlZGlyZWN0X2Z1bmMpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFdLRWluYVNoYXJlZFN0cmluZyBzb3VyY2VVUkxTdHJpbmcoc291cmNlVVJMKTsKLSAg
ICBXS0VpbmFTaGFyZWRTdHJpbmcgZGVzdGluYXRpb25VUkxTdHJpbmcoZGVzdGluYXRpb25VUkwp
OwotCi0gICAgaGlzdG9yeUNsaWVudC5jbGllbnRfcmVkaXJlY3RfZnVuYyhld2tfdmlld19mcm9t
X3BhZ2VfZ2V0KHRvSW1wbChwYWdlKSksIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxT
dHJpbmcsIGhpc3RvcnlDbGllbnQudXNlcl9kYXRhKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkUGVy
Zm9ybVNlcnZlclJlZGlyZWN0KFdLQ29udGV4dFJlZiwgV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVm
IHNvdXJjZVVSTCwgV0tVUkxSZWYgZGVzdGluYXRpb25VUkwsIFdLRnJhbWVSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCi17Ci0gICAgY29uc3QgRXdrX0NvbnRleHRfSGlzdG9yeV9DbGllbnQm
IGhpc3RvcnlDbGllbnQgPSBnZXRFd2tIaXN0b3J5Q2xpZW50KGNsaWVudEluZm8pOwotCi0gICAg
aWYgKCFoaXN0b3J5Q2xpZW50LnNlcnZlcl9yZWRpcmVjdF9mdW5jKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBXS0VpbmFTaGFyZWRTdHJpbmcgc291cmNlVVJMU3RyaW5nKHNvdXJjZVVSTCk7Ci0g
ICAgV0tFaW5hU2hhcmVkU3RyaW5nIGRlc3RpbmF0aW9uVVJMU3RyaW5nKGRlc3RpbmF0aW9uVVJM
KTsKLQotICAgIGhpc3RvcnlDbGllbnQuc2VydmVyX3JlZGlyZWN0X2Z1bmMoZXdrX3ZpZXdfZnJv
bV9wYWdlX2dldCh0b0ltcGwocGFnZSkpLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJM
U3RyaW5nLCBoaXN0b3J5Q2xpZW50LnVzZXJfZGF0YSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZFVw
ZGF0ZUhpc3RvcnlUaXRsZShXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1Jl
ZiB0aXRsZSwgV0tVUkxSZWYgVVJMLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQotewotICAgIGNvbnN0IEV3a19Db250ZXh0X0hpc3RvcnlfQ2xpZW50JiBoaXN0b3J5Q2xpZW50
ID0gZ2V0RXdrSGlzdG9yeUNsaWVudChjbGllbnRJbmZvKTsKLQotICAgIGlmICghaGlzdG9yeUNs
aWVudC50aXRsZV91cGRhdGVfZnVuYykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV0tFaW5hU2hh
cmVkU3RyaW5nIHRpdGxlU3RyaW5nKHRpdGxlKTsKLSAgICBXS0VpbmFTaGFyZWRTdHJpbmcgc3Ry
aW5nVVJMKFVSTCk7Ci0KLSAgICBoaXN0b3J5Q2xpZW50LnRpdGxlX3VwZGF0ZV9mdW5jKGV3a192
aWV3X2Zyb21fcGFnZV9nZXQodG9JbXBsKHBhZ2UpKSwgdGl0bGVTdHJpbmcsIHN0cmluZ1VSTCwg
aGlzdG9yeUNsaWVudC51c2VyX2RhdGEpOwotfQotCi1zdGF0aWMgdm9pZCBwb3B1bGF0ZVZpc2l0
ZWRMaW5rcyhXS0NvbnRleHRSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgY29u
c3QgRXdrX0NvbnRleHRfSGlzdG9yeV9DbGllbnQmIGhpc3RvcnlDbGllbnQgPSBnZXRFd2tIaXN0
b3J5Q2xpZW50KGNsaWVudEluZm8pOwotCi0gICAgaWYgKCFoaXN0b3J5Q2xpZW50LnBvcHVsYXRl
X3Zpc2l0ZWRfbGlua3NfZnVuYykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaGlzdG9yeUNsaWVu
dC5wb3B1bGF0ZV92aXNpdGVkX2xpbmtzX2Z1bmMoaGlzdG9yeUNsaWVudC51c2VyX2RhdGEpOwot
fQotCi12b2lkIGV3a19jb250ZXh0X2hpc3RvcnlfY2xpZW50X2F0dGFjaChFd2tfQ29udGV4dCog
ZXdrQ29udGV4dCkKLXsKLSAgICBXS0NvbnRleHRIaXN0b3J5Q2xpZW50IHdrSGlzdG9yeUNsaWVu
dDsKLSAgICBtZW1zZXQoJndrSGlzdG9yeUNsaWVudCwgMCwgc2l6ZW9mKFdLQ29udGV4dEhpc3Rv
cnlDbGllbnQpKTsKLQotICAgIHdrSGlzdG9yeUNsaWVudC52ZXJzaW9uID0ga1dLQ29udGV4dEhp
c3RvcnlDbGllbnRDdXJyZW50VmVyc2lvbjsKLSAgICB3a0hpc3RvcnlDbGllbnQuY2xpZW50SW5m
byA9IGV3a0NvbnRleHQ7Ci0KLSAgICB3a0hpc3RvcnlDbGllbnQuZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGEgPSBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YTsKLSAgICB3a0hpc3Rv
cnlDbGllbnQuZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0ID0gZGlkUGVyZm9ybUNsaWVudFJlZGly
ZWN0OwotICAgIHdrSGlzdG9yeUNsaWVudC5kaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QgPSBkaWRQ
ZXJmb3JtU2VydmVyUmVkaXJlY3Q7Ci0gICAgd2tIaXN0b3J5Q2xpZW50LmRpZFVwZGF0ZUhpc3Rv
cnlUaXRsZSA9IGRpZFVwZGF0ZUhpc3RvcnlUaXRsZTsKLSAgICB3a0hpc3RvcnlDbGllbnQucG9w
dWxhdGVWaXNpdGVkTGlua3MgPSBwb3B1bGF0ZVZpc2l0ZWRMaW5rczsKLQotICAgIFdLQ29udGV4
dFNldEhpc3RvcnlDbGllbnQoZXdrQ29udGV4dC0+d2tDb250ZXh0KCksICZ3a0hpc3RvcnlDbGll
bnQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHRfaGlzdG9yeV9jbGllbnRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfaGlzdG9yeV9jbGllbnRfcHJpdmF0ZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjQ3MGRjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X2hpc3RvcnlfY2xpZW50X3ByaXZhdGUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgZXdrX2NvbnRleHRfaGlzdG9yeV9jbGllbnRfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a19j
b250ZXh0X2hpc3RvcnlfY2xpZW50X3ByaXZhdGVfaAotCi0jaW5jbHVkZSAiZXdrX2NvbnRleHQu
aCIKLQotc3RydWN0IEV3a19Db250ZXh0X0hpc3RvcnlfQ2xpZW50IHsKLSAgICB2b2lkKiB1c2Vy
X2RhdGE7Ci0gICAgRXdrX0hpc3RvcnlfTmF2aWdhdGlvbl9DYiBuYXZpZ2F0ZV9mdW5jOwotICAg
IEV3a19IaXN0b3J5X0NsaWVudF9SZWRpcmVjdGlvbl9DYiBjbGllbnRfcmVkaXJlY3RfZnVuYzsK
LSAgICBFd2tfSGlzdG9yeV9TZXJ2ZXJfUmVkaXJlY3Rpb25fQ2Igc2VydmVyX3JlZGlyZWN0X2Z1
bmM7Ci0gICAgRXdrX0hpc3RvcnlfVGl0bGVfVXBkYXRlX0NiIHRpdGxlX3VwZGF0ZV9mdW5jOwot
ICAgIEV3a19IaXN0b3J5X1BvcHVsYXRlX1Zpc2l0ZWRfTGlua3NfQ2IgcG9wdWxhdGVfdmlzaXRl
ZF9saW5rc19mdW5jOwotfTsKLQotdm9pZCBld2tfY29udGV4dF9oaXN0b3J5X2NsaWVudF9hdHRh
Y2goRXdrX0NvbnRleHQqKTsKLQotI2VuZGlmIC8vIGV3a19jb250ZXh0X2hpc3RvcnlfY2xpZW50
X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHRfcHJpdmF0ZS5oCmluZGV4IGI5ZTc5MjguLmNmMzllYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRl
LmgKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXJFZmwuaCIKICNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2luY2x1ZGUg
ImV3a19jb250ZXh0X2hpc3RvcnlfY2xpZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfY29u
dGV4dC5oIgogCiBjbGFzcyBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0OwogY2xhc3MgRXdrX0Nvb2tp
ZV9NYW5hZ2VyOwpAQCAtMzksNiArMzksNyBAQCBjbGFzcyBWaWJyYXRpb25Qcm92aWRlcjsKICNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIENvbnRleHRIaXN0b3J5Q2xpZW50RWZs
OwogY2xhc3MgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw7CiB9CiAKQEAgLTc0LDggKzc1LDcgQEAg
cHVibGljOgogCiAgICAgV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmwqIGRvd25sb2FkTWFuYWdl
cigpIGNvbnN0OwogCi0gICAgY29uc3QgRXdrX0NvbnRleHRfSGlzdG9yeV9DbGllbnQmIGhpc3Rv
cnlDbGllbnQoKSBjb25zdCAgeyByZXR1cm4gbV9oaXN0b3J5Q2xpZW50OyB9Ci0gICAgRXdrX0Nv
bnRleHRfSGlzdG9yeV9DbGllbnQmIGhpc3RvcnlDbGllbnQoKSB7IHJldHVybiBtX2hpc3RvcnlD
bGllbnQ7IH0KKyAgICBXZWJLaXQ6OkNvbnRleHRIaXN0b3J5Q2xpZW50RWZsKiBoaXN0b3J5Q2xp
ZW50KCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRXdrX0NvbnRleHQoV0tDb250ZXh0UmVm
KTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpEb3dubG9h
ZE1hbmFnZXJFZmw+IG1fZG93bmxvYWRNYW5hZ2VyOwogICAgIE93blB0cjxXZWJLaXQ6OlJlcXVl
c3RNYW5hZ2VyQ2xpZW50RWZsPiBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50OwogCi0gICAgRXdrX0Nv
bnRleHRfSGlzdG9yeV9DbGllbnQgbV9oaXN0b3J5Q2xpZW50OworICAgIE93blB0cjxXZWJLaXQ6
OkNvbnRleHRIaXN0b3J5Q2xpZW50RWZsPiBtX2hpc3RvcnlDbGllbnQ7CiB9OwogCiAjZW5kaWYg
Ly8gZXdrX2NvbnRleHRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL0NvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjAwNzNlNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmNwcApAQCAtMCwwICsx
LDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkNvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmgiCisKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5
LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tDb250ZXh0LmgiCisjaW5j
bHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNs
dWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fZGF0
YS5oIgorI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2RhdGFfcHJpdmF0ZS5oIgorI2luY2x1ZGUg
ImV3a191cmxfcmVzcG9uc2UuaCIKKyNpbmNsdWRlICJld2tfdXJsX3Jlc3BvbnNlX3ByaXZhdGUu
aCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitzdGF0aWMgaW5saW5lIGNvbnN0IENvbnRleHRIaXN0b3J5Q2xpZW50RWZsKiB0b0NvbnRleHRI
aXN0b3J5Q2xpZW50RWZsKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgQVNTRVJUKGNs
aWVudEluZm8pOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDb250ZXh0SGlzdG9yeUNs
aWVudEVmbCo+KGNsaWVudEluZm8pOworfQorCit2b2lkIENvbnRleHRIaXN0b3J5Q2xpZW50RWZs
OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXS0NvbnRleHRSZWYsIFdLUGFnZVJlZiBw
YWdlLCBXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhLCBXS0ZyYW1lUmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGNvbnN0IENvbnRleHRIaXN0b3J5Q2xpZW50RWZs
KiBoaXN0b3J5Q2xpZW50ID0gdG9Db250ZXh0SGlzdG9yeUNsaWVudEVmbChjbGllbnRJbmZvKTsK
KworICAgIGlmICghaGlzdG9yeUNsaWVudC0+bV9uYXZpZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVmUHRyPEV3a19OYXZpZ2F0aW9uX0RhdGE+IG5hdmlnYXRpb25EYXRhRXdrID0gRXdr
X05hdmlnYXRpb25fRGF0YTo6Y3JlYXRlKG5hdmlnYXRpb25EYXRhKTsKKyAgICBoaXN0b3J5Q2xp
ZW50LT5tX25hdmlnYXRlKGV3a192aWV3X2Zyb21fcGFnZV9nZXQodG9JbXBsKHBhZ2UpKSwgbmF2
aWdhdGlvbkRhdGFFd2suZ2V0KCksIGhpc3RvcnlDbGllbnQtPm1fdXNlckRhdGEpOworfQorCit2
b2lkIENvbnRleHRIaXN0b3J5Q2xpZW50RWZsOjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV0tD
b250ZXh0UmVmLCBXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgc291cmNlVVJMLCBXS1VSTFJlZiBk
ZXN0aW5hdGlvblVSTCwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBjb25zdCBDb250ZXh0SGlzdG9yeUNsaWVudEVmbCogaGlzdG9yeUNsaWVudCA9IHRvQ29udGV4
dEhpc3RvcnlDbGllbnRFZmwoY2xpZW50SW5mbyk7CisKKyAgICBpZiAoIWhpc3RvcnlDbGllbnQt
Pm1fY2xpZW50UmVkaXJlY3QpCisgICAgICAgIHJldHVybjsKKworICAgIFdLRWluYVNoYXJlZFN0
cmluZyBzb3VyY2VVUkxTdHJpbmcoc291cmNlVVJMKTsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcg
ZGVzdGluYXRpb25VUkxTdHJpbmcoZGVzdGluYXRpb25VUkwpOworCisgICAgaGlzdG9yeUNsaWVu
dC0+bV9jbGllbnRSZWRpcmVjdChld2tfdmlld19mcm9tX3BhZ2VfZ2V0KHRvSW1wbChwYWdlKSks
IHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcsIGhpc3RvcnlDbGllbnQtPm1f
dXNlckRhdGEpOworfQorCit2b2lkIENvbnRleHRIaXN0b3J5Q2xpZW50RWZsOjpkaWRQZXJmb3Jt
U2VydmVyUmVkaXJlY3QoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgc291
cmNlVVJMLCBXS1VSTFJlZiBkZXN0aW5hdGlvblVSTCwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICBjb25zdCBDb250ZXh0SGlzdG9yeUNsaWVudEVmbCogaGlzdG9y
eUNsaWVudCA9IHRvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwoY2xpZW50SW5mbyk7CisKKyAgICBp
ZiAoIWhpc3RvcnlDbGllbnQtPm1fc2VydmVyUmVkaXJlY3QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFdLRWluYVNoYXJlZFN0cmluZyBzb3VyY2VVUkxTdHJpbmcoc291cmNlVVJMKTsKKyAgICBX
S0VpbmFTaGFyZWRTdHJpbmcgZGVzdGluYXRpb25VUkxTdHJpbmcoZGVzdGluYXRpb25VUkwpOwor
CisgICAgaGlzdG9yeUNsaWVudC0+bV9zZXJ2ZXJSZWRpcmVjdChld2tfdmlld19mcm9tX3BhZ2Vf
Z2V0KHRvSW1wbChwYWdlKSksIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcs
IGhpc3RvcnlDbGllbnQtPm1fdXNlckRhdGEpOworfQorCit2b2lkIENvbnRleHRIaXN0b3J5Q2xp
ZW50RWZsOjpkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYgcGFn
ZSwgV0tTdHJpbmdSZWYgdGl0bGUsIFdLVVJMUmVmIFVSTCwgV0tGcmFtZVJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3sKKyAgICBjb25zdCBDb250ZXh0SGlzdG9yeUNsaWVudEVmbCogaGlz
dG9yeUNsaWVudCA9IHRvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwoY2xpZW50SW5mbyk7CisKKyAg
ICBpZiAoIWhpc3RvcnlDbGllbnQtPm1fdGl0bGVVcGRhdGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgdGl0bGVTdHJpbmcodGl0bGUpOworICAgIFdLRWluYVNo
YXJlZFN0cmluZyBzdHJpbmdVUkwoVVJMKTsKKworICAgIGhpc3RvcnlDbGllbnQtPm1fdGl0bGVV
cGRhdGVkKGV3a192aWV3X2Zyb21fcGFnZV9nZXQodG9JbXBsKHBhZ2UpKSwgdGl0bGVTdHJpbmcs
IHN0cmluZ1VSTCwgaGlzdG9yeUNsaWVudC0+bV91c2VyRGF0YSk7Cit9CisKK3ZvaWQgQ29udGV4
dEhpc3RvcnlDbGllbnRFZmw6OnBvcHVsYXRlVmlzaXRlZExpbmtzKFdLQ29udGV4dFJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBjb25zdCBDb250ZXh0SGlzdG9yeUNsaWVudEVm
bCogaGlzdG9yeUNsaWVudCA9IHRvQ29udGV4dEhpc3RvcnlDbGllbnRFZmwoY2xpZW50SW5mbyk7
CisKKyAgICBpZiAoIWhpc3RvcnlDbGllbnQtPm1fcG9wdWxhdGVWaXNpdGVkTGlua3MpCisgICAg
ICAgIHJldHVybjsKKworICAgIGhpc3RvcnlDbGllbnQtPm1fcG9wdWxhdGVWaXNpdGVkTGlua3Mo
aGlzdG9yeUNsaWVudC0+bV91c2VyRGF0YSk7Cit9CisKK0NvbnRleHRIaXN0b3J5Q2xpZW50RWZs
OjpDb250ZXh0SGlzdG9yeUNsaWVudEVmbChXS0NvbnRleHRSZWYgY29udGV4dCkKKyAgICA6IG1f
dXNlckRhdGEoMCkKKyAgICAsIG1fbmF2aWdhdGUoMCkKKyAgICAsIG1fY2xpZW50UmVkaXJlY3Qo
MCkKKyAgICAsIG1fc2VydmVyUmVkaXJlY3QoMCkKKyAgICAsIG1fdGl0bGVVcGRhdGVkKDApCisg
ICAgLCBtX3BvcHVsYXRlVmlzaXRlZExpbmtzKDApCit7CisgICAgQVNTRVJUKGNvbnRleHQpOwor
CisgICAgV0tDb250ZXh0SGlzdG9yeUNsaWVudCB3a0hpc3RvcnlDbGllbnQ7CisgICAgbWVtc2V0
KCZ3a0hpc3RvcnlDbGllbnQsIDAsIHNpemVvZihXS0NvbnRleHRIaXN0b3J5Q2xpZW50KSk7CisK
KyAgICB3a0hpc3RvcnlDbGllbnQudmVyc2lvbiA9IGtXS0NvbnRleHRIaXN0b3J5Q2xpZW50Q3Vy
cmVudFZlcnNpb247CisgICAgd2tIaXN0b3J5Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworCisg
ICAgd2tIaXN0b3J5Q2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhID0gZGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE7CisgICAgd2tIaXN0b3J5Q2xpZW50LmRpZFBlcmZvcm1D
bGllbnRSZWRpcmVjdCA9IGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdDsKKyAgICB3a0hpc3RvcnlD
bGllbnQuZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0ID0gZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0
OworICAgIHdrSGlzdG9yeUNsaWVudC5kaWRVcGRhdGVIaXN0b3J5VGl0bGUgPSBkaWRVcGRhdGVI
aXN0b3J5VGl0bGU7CisgICAgd2tIaXN0b3J5Q2xpZW50LnBvcHVsYXRlVmlzaXRlZExpbmtzID0g
cG9wdWxhdGVWaXNpdGVkTGlua3M7CisKKyAgICBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KGNv
bnRleHQsICZ3a0hpc3RvcnlDbGllbnQpOworfQorCit2b2lkIENvbnRleHRIaXN0b3J5Q2xpZW50
RWZsOjpzZXRDYWxsYmFja3MoRXdrX0hpc3RvcnlfTmF2aWdhdGlvbl9DYiBuYXZpZ2F0ZSwgRXdr
X0hpc3RvcnlfQ2xpZW50X1JlZGlyZWN0aW9uX0NiIGNsaWVudFJlZGlyZWN0LCBFd2tfSGlzdG9y
eV9TZXJ2ZXJfUmVkaXJlY3Rpb25fQ2Igc2VydmVyUmVkaXJlY3QsIEV3a19IaXN0b3J5X1RpdGxl
X1VwZGF0ZV9DYiB0aXRsZVVwZGF0ZSwgRXdrX0hpc3RvcnlfUG9wdWxhdGVfVmlzaXRlZF9MaW5r
c19DYiBwb3B1bGF0ZVZpc2l0ZWRMaW5rcywgdm9pZCogZGF0YSkKK3sKKyAgICBtX25hdmlnYXRl
ID0gbmF2aWdhdGU7CisgICAgbV9jbGllbnRSZWRpcmVjdCA9IGNsaWVudFJlZGlyZWN0OworICAg
IG1fc2VydmVyUmVkaXJlY3QgPSBzZXJ2ZXJSZWRpcmVjdDsKKyAgICBtX3RpdGxlVXBkYXRlZCA9
IHRpdGxlVXBkYXRlOworICAgIG1fcG9wdWxhdGVWaXNpdGVkTGlua3MgPSBwb3B1bGF0ZVZpc2l0
ZWRMaW5rczsKKyAgICBtX3VzZXJEYXRhID0gZGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0
b3J5Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0NvbnRleHRIaXN0
b3J5Q2xpZW50RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIwMzI1
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvQ29udGV4
dEhpc3RvcnlDbGllbnRFZmwuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIENvbnRleHRIaXN0b3J5Q2xpZW50RWZsX2gKKyNkZWZpbmUgQ29udGV4dEhpc3Rv
cnlDbGllbnRFZmxfaAorCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBDb250ZXh0SGlzdG9yeUNsaWVudEVmbCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8Q29udGV4dEhpc3RvcnlDbGllbnRFZmw+IGNyZWF0ZShXS0NvbnRl
eHRSZWYgY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29udGV4
dEhpc3RvcnlDbGllbnRFZmwoY29udGV4dCkpOworICAgIH0KKworICAgIHZvaWQgc2V0Q2FsbGJh
Y2tzKEV3a19IaXN0b3J5X05hdmlnYXRpb25fQ2IsIEV3a19IaXN0b3J5X0NsaWVudF9SZWRpcmVj
dGlvbl9DYiwgRXdrX0hpc3RvcnlfU2VydmVyX1JlZGlyZWN0aW9uX0NiLCBFd2tfSGlzdG9yeV9U
aXRsZV9VcGRhdGVfQ2IsIEV3a19IaXN0b3J5X1BvcHVsYXRlX1Zpc2l0ZWRfTGlua3NfQ2IsIHZv
aWQqKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBDb250ZXh0SGlzdG9yeUNsaWVudEVmbChX
S0NvbnRleHRSZWYpOworCisgICAgc3RhdGljIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlv
bkRhdGEoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvbkRhdGFSZWYsIFdLRnJh
bWVSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVk
aXJlY3QoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYsIFdLVVJMUmVmIHNvdXJjZVVSTCwgV0tVUkxS
ZWYsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRQZXJmb3Jt
U2VydmVyUmVkaXJlY3QoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYsIFdLVVJMUmVmIHNvdXJjZVVS
TCwgV0tVUkxSZWYsIFdLRnJhbWVSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRVcGRhdGVIaXN0b3J5VGl0bGUoV0tDb250ZXh0UmVmLCBXS1BhZ2VSZWYsIFdLU3RyaW5nUmVm
LCBXS1VSTFJlZiwgV0tGcmFtZVJlZiwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIHBv
cHVsYXRlVmlzaXRlZExpbmtzKFdLQ29udGV4dFJlZiwgY29uc3Qgdm9pZCopOworCisgICAgdm9p
ZCogbV91c2VyRGF0YTsKKyAgICBFd2tfSGlzdG9yeV9OYXZpZ2F0aW9uX0NiIG1fbmF2aWdhdGU7
CisgICAgRXdrX0hpc3RvcnlfQ2xpZW50X1JlZGlyZWN0aW9uX0NiIG1fY2xpZW50UmVkaXJlY3Q7
CisgICAgRXdrX0hpc3RvcnlfU2VydmVyX1JlZGlyZWN0aW9uX0NiIG1fc2VydmVyUmVkaXJlY3Q7
CisgICAgRXdrX0hpc3RvcnlfVGl0bGVfVXBkYXRlX0NiIG1fdGl0bGVVcGRhdGVkOworICAgIEV3
a19IaXN0b3J5X1BvcHVsYXRlX1Zpc2l0ZWRfTGlua3NfQ2IgbV9wb3B1bGF0ZVZpc2l0ZWRMaW5r
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gQ29udGV4dEhpc3Rv
cnlDbGllbnRFZmxfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>