<?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>82595</bug_id>
          
          <creation_ts>2012-03-29 03:58:40 -0700</creation_ts>
          <short_desc>webkit-file tool needs base classes for platform-specific objects</short_desc>
          <delta_ts>2013-10-31 08:30:32 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61772</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Roland Steiner">rolandsteiner</reporter>
          <assigned_to name="Roland Steiner">rolandsteiner</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>dpranke</cc>
    
    <cc>haraken</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>591019</commentid>
    <comment_count>0</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-03-29 03:58:40 -0700</bug_when>
    <thetext>Some functionality is the same across different platforms. Factor those out into base-classes for reusability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591039</commentid>
    <comment_count>1</comment_count>
      <attachid>134548</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-03-29 04:47:26 -0700</bug_when>
    <thetext>Created attachment 134548
patch (depends on 564148)

Patch for platform base-classes. Platform-specific code depends on these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945530</commentid>
    <comment_count>2</comment_count>
      <attachid>134548</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-31 08:30:26 -0700</bug_when>
    <thetext>Comment on attachment 134548
patch (depends on 564148)

Nobody is working on this and it&apos;s cluttering up the Bugzilla review queue so I&apos;m going to go ahead and close this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134548</attachid>
            <date>2012-03-29 04:47:26 -0700</date>
            <delta_ts>2013-10-31 08:30:26 -0700</delta_ts>
            <desc>patch (depends on 564148)</desc>
            <filename>bug-82595-20120329204724.patch</filename>
            <type>text/plain</type>
            <size>54140</size>
            <attacher name="Roland Steiner">rolandsteiner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNTA4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDU5ZGVjYTg5NmRkODc1ZDBhYjViMzBkN2FiZTcwODE4
MjMwNDY0Zi4uZDg3MzNmMjdmOTA4YTFhMGNhNDFkMmJmZTAyOWM5MjM0Yjk2YjdmYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
NyBAQAorMjAxMi0wMy0yOSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVt
Lm9yZz4KKworICAgICAgICB3ZWJraXQtZmlsZSB0b29sIG5lZWRzIGJhc2UgY2xhc3NlcyBmb3Ig
cGxhdGZvcm0tc3BlY2lmaWMgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODI1OTUKKworICAgICAgICBCYXNlcyBjbGFzc2VzIGZvciBwbGF0
Zm9ybS1zcGVjaWZpYyBvYmplY3RzIGZvciB0aGUgd2Via2l0LWZpbGUgdG9vbC4KKyAgICAgICAg
VGhlc2UgYXJlIGZ1cnRoZXIgc3BsaXQgaW50byBjbGFzc2VzIGZvciBncm91cC1iYXNlZCBwbGF0
Zm9ybXMgKGkuZS4sIFhjb2RlLCBWUykKKyAgICAgICAgYW5kIGNsYXNzZXMgZm9yIG1ha2UtZmls
ZS1iYXNlZCBwbGF0Zm9ybXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcm9qZWN0L2dyb3VwYmFzZS5w
eTogQWRkZWQuCisgICAgICAgIChQcm9qZWN0R3JvdXBDb250YWluZXIpOgorICAgICAgICAoUHJv
amVjdEdyb3VwQ29udGFpbmVyLl9faW5pdF9fKToKKyAgICAgICAgKFByb2plY3RHcm91cENvbnRh
aW5lci5fYWRkX2dyb3VwKToKKyAgICAgICAgKFByb2plY3RHcm91cENvbnRhaW5lci5fcmVtb3Zl
X2dyb3VwKToKKyAgICAgICAgKFByb2plY3RHcm91cENvbnRhaW5lci5pc192YWxpZCk6CisgICAg
ICAgIChQcm9qZWN0R3JvdXBDb250YWluZXIuaXNfZW1wdHkpOgorICAgICAgICAoUHJvamVjdEdy
b3VwQ29udGFpbmVyLmdyb3VwX2NvdW50KToKKyAgICAgICAgKFByb2plY3RHcm91cENvbnRhaW5l
ci5jb250YWluc19ncm91cCk6CisgICAgICAgIChQcm9qZWN0R3JvdXApOgorICAgICAgICAoUHJv
amVjdEdyb3VwLl9faW5pdF9fKToKKyAgICAgICAgKFByb2plY3RHcm91cC5fX2hhc2hfXyk6Cisg
ICAgICAgIChQcm9qZWN0R3JvdXAuX19lcV9fKToKKyAgICAgICAgKFByb2plY3RHcm91cC5fX25l
X18pOgorICAgICAgICAoUHJvamVjdEdyb3VwLl9zZXRfY29udGFpbmVyKToKKyAgICAgICAgKFBy
b2plY3RHcm91cC5pc192YWxpZCk6CisgICAgICAgIChQcm9qZWN0R3JvdXAuaXNfZW1wdHkpOgor
ICAgICAgICAoR3JvdXBQcm9qZWN0RmlsZVJlZmVyZW5jZSk6CisgICAgICAgIChHcm91cFByb2pl
Y3RGaWxlUmVmZXJlbmNlLmluKToKKyAgICAgICAgKEdyb3VwUHJvamVjdEZpbGVSZWZlcmVuY2Uu
X19pbml0X18pOgorICAgICAgICAoR3JvdXBQcm9qZWN0RmlsZVJlZmVyZW5jZS5fc2V0X2NvbnRh
aW5lcik6CisgICAgICAgIChHcm91cFByb2plY3RGaWxlUmVmZXJlbmNlLmlzX3ZhbGlkKToKKyAg
ICAgICAgKEdyb3VwUHJvamVjdCk6CisgICAgICAgIChHcm91cFByb2plY3QuZm9yKToKKyAgICAg
ICAgKEdyb3VwUHJvamVjdC52YXJpYWJsZSk6CisgICAgICAgIChHcm91cFByb2plY3QuX19pbml0
X18pOgorICAgICAgICAoR3JvdXBQcm9qZWN0Ll9zZXRfbWFpbl9ncm91cCk6CisgICAgICAgIChH
cm91cFByb2plY3QuX2FkZF9ncm91cCk6CisgICAgICAgIChHcm91cFByb2plY3QuX3JlbW92ZV9n
cm91cCk6CisgICAgICAgIChHcm91cFByb2plY3QuYWRkX2ZpbGUpOgorICAgICAgICAoR3JvdXBQ
cm9qZWN0LmVuc3VyZV9ncm91cF9mb3JfZGlyZWN0b3J5KToKKyAgICAgICAgKEdyb3VwUHJvamVj
dC5lbnN1cmVfZmlsZV9yZWZlcmVuY2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3Byb2plY3QvZ3JvdXBiYXNlX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKEdyb3Vw
QmFzZVRlc3QpOgorICAgICAgICAoR3JvdXBCYXNlVGVzdC5zZXRVcCk6CisgICAgICAgIChHcm91
cEJhc2VUZXN0LnRlc3RfUHJvamVjdEdyb3VwKToKKyAgICAgICAgKEdyb3VwQmFzZVRlc3QudGVz
dF9Hcm91cFByb2plY3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3Byb2pl
Y3QvbWFrZWJhc2UucHk6IEFkZGVkLgorICAgICAgICAoSW5saW5lQ29tbWVudHMpOgorICAgICAg
ICAoSW5saW5lQ29tbWVudHMuZm9yKToKKyAgICAgICAgKElubGluZUNvbW1lbnRzLl9faW5pdF9f
KToKKyAgICAgICAgKFN0YXRlbWVudCk6CisgICAgICAgIChTdGF0ZW1lbnQuZm9yKToKKyAgICAg
ICAgKFN0YXRlbWVudC5fX2luaXRfXyk6CisgICAgICAgIChTdGF0ZW1lbnQuX3NldF9jb250YWlu
aW5nX3N0YXRlbWVudF9saXN0KToKKyAgICAgICAgKFN0YXRlbWVudC5wcmVwZW5kX2NvbW1lbnQp
OgorICAgICAgICAoU3RhdGVtZW50LmFwcGVuZF9jb21tZW50KToKKyAgICAgICAgKFN0YXRlbWVu
dExpc3QpOgorICAgICAgICAoU3RhdGVtZW50TGlzdC5fX2luaXRfXyk6CisgICAgICAgIChTdGF0
ZW1lbnRMaXN0Ll9hcHBlbmRfc3RhdGVtZW50KToKKyAgICAgICAgKFN0YXRlbWVudExpc3QucGFy
ZW50X3N0YXRlbWVudF9saXN0KToKKyAgICAgICAgKFN0YXRlbWVudExpc3Quc3RhdGVtZW50X2Nv
dW50KToKKyAgICAgICAgKENvbW1lbnQpOgorICAgICAgICAoQ29tbWVudC5fX2luaXRfXyk6Cisg
ICAgICAgIChBc3NpZ25tZW50KToKKyAgICAgICAgKEFzc2lnbm1lbnQuZm9yKToKKyAgICAgICAg
KEFzc2lnbm1lbnQuX19pbml0X18pOgorICAgICAgICAoQXNzaWdubWVudC5pc19lbXB0eSk6Cisg
ICAgICAgIChBc3NpZ25tZW50LnZhbHVlX2NvdW50KToKKyAgICAgICAgKEZpbGVSZWZlcmVuY2Vz
QXNzaWdubWVudCk6CisgICAgICAgIChGaWxlUmVmZXJlbmNlc0Fzc2lnbm1lbnQuX19pbml0X18p
OgorICAgICAgICAoRmlsZVJlZmVyZW5jZXNBc3NpZ25tZW50LmlzX2VtcHR5KToKKyAgICAgICAg
KEZpbGVSZWZlcmVuY2VzQXNzaWdubWVudC52YWx1ZV9jb3VudCk6CisgICAgICAgIChEaXJlY3Rv
cnlSZWZlcmVuY2VzQXNzaWdubWVudCk6CisgICAgICAgIChEaXJlY3RvcnlSZWZlcmVuY2VzQXNz
aWdubWVudC5fX2luaXRfXyk6CisgICAgICAgIChEaXJlY3RvcnlSZWZlcmVuY2VzQXNzaWdubWVu
dC5pc19lbXB0eSk6CisgICAgICAgIChEaXJlY3RvcnlSZWZlcmVuY2VzQXNzaWdubWVudC52YWx1
ZV9jb3VudCk6CisgICAgICAgIChBcmJpdHJhcnlBc3NpZ25tZW50KToKKyAgICAgICAgKEFyYml0
cmFyeUFzc2lnbm1lbnQuX19pbml0X18pOgorICAgICAgICAoQXJiaXRyYXJ5QXNzaWdubWVudC5h
cHBlbmRfdmFsdWUpOgorICAgICAgICAoQXJiaXRyYXJ5QXNzaWdubWVudC5pc19lbXB0eSk6Cisg
ICAgICAgIChBcmJpdHJhcnlBc3NpZ25tZW50LnZhbHVlX2NvdW50KToKKyAgICAgICAgKENvbmRp
dGlvbik6CisgICAgICAgIChDb25kaXRpb24uZm9yKToKKyAgICAgICAgKENvbmRpdGlvbi5fX2lu
aXRfXyk6CisgICAgICAgIChDb25kaXRpb24uX2FwcGVuZF9icmFuY2gpOgorICAgICAgICAoQ29u
ZGl0aW9uLmJyYW5jaF9jb3VudCk6CisgICAgICAgIChDb25kaXRpb25CcmFuY2gpOgorICAgICAg
ICAoQ29uZGl0aW9uQnJhbmNoLmZvcik6CisgICAgICAgIChDb25kaXRpb25CcmFuY2guX19pbml0
X18pOgorICAgICAgICAoQ29uZGl0aW9uQnJhbmNoLnBhcmVudF9zdGF0ZW1lbnRfbGlzdCk6Cisg
ICAgICAgIChUZXN0Q29uZGl0aW9uQnJhbmNoKToKKyAgICAgICAgKFRlc3RDb25kaXRpb25CcmFu
Y2guZm9yKToKKyAgICAgICAgKFRlc3RDb25kaXRpb25CcmFuY2guX19pbml0X18pOgorICAgICAg
ICAoQXJiaXRyYXJ5VGVzdENvbmRpdGlvbkJyYW5jaCk6CisgICAgICAgIChBcmJpdHJhcnlUZXN0
Q29uZGl0aW9uQnJhbmNoLl9faW5pdF9fKToKKyAgICAgICAgKERFRklORUNvbmRpdGlvbkJyYW5j
aCk6CisgICAgICAgIChERUZJTkVDb25kaXRpb25CcmFuY2guX19pbml0X18pOgorICAgICAgICAo
REVGSU5FQ29uZGl0aW9uQnJhbmNoLnNhdGlzZmllcyk6CisgICAgICAgIChFbHNlQ29uZGl0aW9u
QnJhbmNoKToKKyAgICAgICAgKEVsc2VDb25kaXRpb25CcmFuY2guX19pbml0X18pOgorICAgICAg
ICAoTWFrZUZpbGUpOgorICAgICAgICAoTWFrZUZpbGUuX19pbml0X18pOgorICAgICAgICAoTWFr
ZUZpbGUuX19oYXNoX18pOgorICAgICAgICAoTWFrZUZpbGUuX19lcV9fKToKKyAgICAgICAgKE1h
a2VGaWxlLl9fbmVfXyk6CisgICAgICAgIChNYWtlRmlsZS5wYXJlbnRfc3RhdGVtZW50X2xpc3Qp
OgorICAgICAgICAoTWFrZUZpbGUuYWRkX3N1Yl9tYWtlX2ZpbGUpOgorICAgICAgICAoTWFrZVBy
b2plY3QpOgorICAgICAgICAoTWFrZVByb2plY3QuZm9yKToKKyAgICAgICAgKE1ha2VQcm9qZWN0
Ll9faW5pdF9fKToKKyAgICAgICAgKE1ha2VQcm9qZWN0LmFkZF9tYWtlX2ZpbGUpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3Byb2plY3QvbWFrZWJhc2VfdW5pdHRlc3QucHk6
IEFkZGVkLgorICAgICAgICAoTWFrZUJhc2VUZXN0KToKKyAgICAgICAgKE1ha2VCYXNlVGVzdC5z
ZXRVcCk6CisgICAgICAgIChNYWtlQmFzZVRlc3QudGVzdF9zdGF0ZW1lbnRfYmFzaWNzKToKKyAg
ICAgICAgKE1ha2VCYXNlVGVzdC50ZXN0X2Fzc2lnbm1lbnRfYmFzaWNzKToKKyAgICAgICAgKE1h
a2VCYXNlVGVzdC50ZXN0X2NvbmRpdGlvbl9iYXNpY3MpOgorICAgICAgICAoTWFrZUJhc2VUZXN0
LnRlc3RfTWFrZUZpbGVfYW5kX01ha2VQcm9qZWN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9wcm9qZWN0L3Byb2plY3QucHk6IEFkZGVkLgorICAgICAgICAoUHJvamVjdEZp
bGVSZWZlcmVuY2UpOgorICAgICAgICAoUHJvamVjdEZpbGVSZWZlcmVuY2UuX19pbml0X18pOgor
ICAgICAgICAoUHJvamVjdEZpbGVSZWZlcmVuY2UuX19oYXNoX18pOgorICAgICAgICAoUHJvamVj
dEZpbGVSZWZlcmVuY2UuaXNfdmFsaWQpOgorICAgICAgICAoUHJvamVjdEZpbGVSZWZlcmVuY2Uu
X3NldF9maWxlKToKKyAgICAgICAgKFByb2plY3RGaWxlUmVmZXJlbmNlQ29udGFpbmVyKToKKyAg
ICAgICAgKFByb2plY3RGaWxlUmVmZXJlbmNlQ29udGFpbmVyLl9faW5pdF9fKToKKyAgICAgICAg
KFByb2plY3RGaWxlUmVmZXJlbmNlQ29udGFpbmVyLl9hZGRfZmlsZV9yZWZlcmVuY2UpOgorICAg
ICAgICAoUHJvamVjdEZpbGVSZWZlcmVuY2VDb250YWluZXIuX3JlbW92ZV9maWxlX3JlZmVyZW5j
ZSk6CisgICAgICAgIChQcm9qZWN0RmlsZVJlZmVyZW5jZUNvbnRhaW5lci5pc192YWxpZCk6Cisg
ICAgICAgIChQcm9qZWN0RmlsZVJlZmVyZW5jZUNvbnRhaW5lci5pc19lbXB0eSk6CisgICAgICAg
IChQcm9qZWN0RmlsZVJlZmVyZW5jZUNvbnRhaW5lci5maWxlX3JlZmVyZW5jZXNfY291bnQpOgor
ICAgICAgICAoUHJvamVjdEZpbGVSZWZlcmVuY2VDb250YWluZXIuY29udGFpbnNfcmVmZXJlbmNl
X3RvX2ZpbGUpOgorICAgICAgICAoUHJvamVjdERpcmVjdG9yeVJlZmVyZW5jZSk6CisgICAgICAg
IChQcm9qZWN0RGlyZWN0b3J5UmVmZXJlbmNlLl9faW5pdF9fKToKKyAgICAgICAgKFByb2plY3RE
aXJlY3RvcnlSZWZlcmVuY2UuX19oYXNoX18pOgorICAgICAgICAoUHJvamVjdERpcmVjdG9yeVJl
ZmVyZW5jZS5pc192YWxpZCk6CisgICAgICAgIChQcm9qZWN0RGlyZWN0b3J5UmVmZXJlbmNlLl9z
ZXRfZGlyZWN0b3J5KToKKyAgICAgICAgKFByb2plY3REaXJlY3RvcnlSZWZlcmVuY2VDb250YWlu
ZXIpOgorICAgICAgICAoUHJvamVjdERpcmVjdG9yeVJlZmVyZW5jZUNvbnRhaW5lci5fX2luaXRf
Xyk6CisgICAgICAgIChQcm9qZWN0RGlyZWN0b3J5UmVmZXJlbmNlQ29udGFpbmVyLl9hZGRfZGly
ZWN0b3J5X3JlZmVyZW5jZSk6CisgICAgICAgIChQcm9qZWN0RGlyZWN0b3J5UmVmZXJlbmNlQ29u
dGFpbmVyLl9yZW1vdmVfZGlyZWN0b3J5X3JlZmVyZW5jZSk6CisgICAgICAgIChQcm9qZWN0RGly
ZWN0b3J5UmVmZXJlbmNlQ29udGFpbmVyLmlzX3ZhbGlkKToKKyAgICAgICAgKFByb2plY3REaXJl
Y3RvcnlSZWZlcmVuY2VDb250YWluZXIuaXNfZW1wdHkpOgorICAgICAgICAoUHJvamVjdERpcmVj
dG9yeVJlZmVyZW5jZUNvbnRhaW5lci5kaXJlY3RvcnlfcmVmZXJlbmNlc19jb3VudCk6CisgICAg
ICAgIChQcm9qZWN0RGlyZWN0b3J5UmVmZXJlbmNlQ29udGFpbmVyLmNvbnRhaW5zX3JlZmVyZW5j
ZV90b19kaXJlY3RvcnkpOgorICAgICAgICAoUHJvamVjdFJlYWRlcik6CisgICAgICAgIChQcm9q
ZWN0UmVhZGVyLmZvcik6CisgICAgICAgIChQcm9qZWN0UmVhZGVyLl9faW5pdF9fKToKKyAgICAg
ICAgKFByb2plY3RSZWFkZXIuZGVidWcpOgorICAgICAgICAoUHJvamVjdFJlYWRlci5pbmZvKToK
KyAgICAgICAgKFByb2plY3RSZWFkZXIud2FybmluZyk6CisgICAgICAgIChQcm9qZWN0UmVhZGVy
LmVycm9yKToKKyAgICAgICAgKFByb2plY3RSZWFkZXIudmVyaWZ5KToKKyAgICAgICAgKFByb2pl
Y3RSZWFkZXIucmVhZF9wcm9qZWN0X2ZpbGUpOgorICAgICAgICAoUHJvamVjdFJlYWRlci5yZWFk
KToKKyAgICAgICAgKFByb2plY3RXcml0ZXIpOgorICAgICAgICAoUHJvamVjdFdyaXRlci5mb3Ip
OgorICAgICAgICAoUHJvamVjdFdyaXRlci5fX2luaXRfXyk6CisgICAgICAgIChQcm9qZWN0V3Jp
dGVyLmRlYnVnKToKKyAgICAgICAgKFByb2plY3RXcml0ZXIuaW5mbyk6CisgICAgICAgIChQcm9q
ZWN0V3JpdGVyLndhcm5pbmcpOgorICAgICAgICAoUHJvamVjdFdyaXRlci5lcnJvcik6CisgICAg
ICAgIChQcm9qZWN0V3JpdGVyLnZlcmlmeSk6CisgICAgICAgIChQcm9qZWN0V3JpdGVyLndyaXRl
X3Byb2plY3RfZmlsZSk6CisgICAgICAgIChQcm9qZWN0V3JpdGVyLndyaXRlKToKKyAgICAgICAg
KFByb2plY3QpOgorICAgICAgICAoUHJvamVjdC5mb3IpOgorICAgICAgICAoUHJvamVjdC5fX2lu
aXRfXyk6CisgICAgICAgIChQcm9qZWN0Ll9faGFzaF9fKToKKyAgICAgICAgKFByb2plY3QuZGVi
dWcpOgorICAgICAgICAoUHJvamVjdC5pbmZvKToKKyAgICAgICAgKFByb2plY3Qud2FybmluZyk6
CisgICAgICAgIChQcm9qZWN0LmVycm9yKToKKyAgICAgICAgKFByb2plY3QudmVyaWZ5KToKKyAg
ICAgICAgKFByb2plY3QuYWRkX2ZpbGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3Byb2plY3QvcHJvamVjdF91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgIChQcm9qZWN0
VGVzdCk6CisgICAgICAgIChQcm9qZWN0VGVzdC5zZXRVcCk6CisgICAgICAgIChQcm9qZWN0VGVz
dC50ZXN0X2ZpbGVfcmVmZXJlbmNlKToKKyAgICAgICAgKFByb2plY3RUZXN0LnRlc3RfZGlyZWN0
b3J5X3JlZmVyZW5jZSk6CisgICAgICAgIChQcm9qZWN0VGVzdC50ZXN0X1Byb2plY3QpOgorCiAy
MDEyLTAzLTI5ICBWaW5lZXQgQ2hhdWRoYXJ5ICA8cmdmNzQ4QG1vdG9yb2xhLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgY3VzdG9tIGJpbmRpbmdzIGZvcm0gSW50ZXJuYWxzLmlkbCBvZiBhdHRyaWJ1
dGUgdHlwZSBBcnJheS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3Byb2plY3QvZ3JvdXBiYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJv
amVjdC9ncm91cGJhc2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2JhOTQ3NjExMjg1ODQyOGE3ODU3ZDRhZTc0
MDU2MTNlODE2ZjcxNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3Byb2plY3QvZ3JvdXBiYXNlLnB5CkBAIC0wLDAgKzEsMTcxIEBACisjIS91c3IvYmlu
L2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlz
dHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5wcm9qZWN0
LnByb2plY3QgaW1wb3J0ICoKKworCitjbGFzcyBQcm9qZWN0R3JvdXBDb250YWluZXIob2JqZWN0
KToKKyAgICAiIiIKKyAgICBDbGFzcyBob2xkaW5nIGEgbGlzdCBvZiBQcm9qZWN0R3JvdXAgb2Jq
ZWN0cy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2dy
b3VwcyA9IHNldCgpCisKKyAgICBkZWYgX2FkZF9ncm91cChzZWxmLCBncm91cCk6CisgICAgICAg
IGFzc2VydCBncm91cAorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShncm91cCwgUHJvamVjdEdy
b3VwKQorICAgICAgICBhc3NlcnQgZ3JvdXAgbm90IGluIHNlbGYuX2dyb3VwcworICAgICAgICBz
ZWxmLl9ncm91cHMuYWRkKGdyb3VwKQorCisgICAgZGVmIF9yZW1vdmVfZ3JvdXAoc2VsZiwgZ3Jv
dXApOgorICAgICAgICBhc3NlcnQgZ3JvdXAKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ3Jv
dXAsIFByb2plY3RHcm91cCkKKyAgICAgICAgYXNzZXJ0IGdyb3VwIGluIHNlbGYuX2dyb3Vwcwor
ICAgICAgICBzZWxmLl9ncm91cHMucmVtb3ZlKGdyb3VwKQorCisgICAgZGVmIGlzX3ZhbGlkKHNl
bGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGlzX2VtcHR5KHNlbGYpOgorICAg
ICAgICByZXR1cm4gbm90IHNlbGYuX2dyb3VwcworCisgICAgZGVmIGdyb3VwX2NvdW50KHNlbGYp
OgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuX2dyb3VwcykKKworICAgIGRlZiBjb250YWluc19n
cm91cChzZWxmLCBncm91cCk6CisgICAgICAgIGFzc2VydCBncm91cAorICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShncm91cCwgUHJvamVjdEdyb3VwKQorICAgICAgICByZXR1cm4gZ3JvdXAgaW4g
c2VsZi5fZ3JvdXBzCisKKworY2xhc3MgUHJvamVjdEdyb3VwKFByb2plY3REaXJlY3RvcnlSZWZl
cmVuY2UsIFByb2plY3RHcm91cENvbnRhaW5lciwgUHJvamVjdEZpbGVSZWZlcmVuY2VDb250YWlu
ZXIpOgorICAgICIiIgorICAgIENsYXNzIGhvbGRpbmcgYSBsaXN0IG9mIGZpbGUgcmVmZXJlbmNl
cyBhbmQgYSBsaXN0IG9mIHN1cC1ncm91cHMuCisgICAgQWxzbywgY29ycmVzcG9uZHMgdG8gYSBz
cGVjaWZpYyBkaXJlY3RvcnkuCisgICAgIiIiCisgICAgSURfQ09VTlRFUiA9IDAKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBjb250YWluZXI9Tm9uZSwgZGlyZWN0b3J5PU5vbmUpOgorICAgICAg
ICBhc3NlcnQgbm90IGNvbnRhaW5lciBvciBpc2luc3RhbmNlKGNvbnRhaW5lciwgUHJvamVjdEdy
b3VwQ29udGFpbmVyKQorICAgICAgICBhc3NlcnQgbm90IGRpcmVjdG9yeSBvciBpc2luc3RhbmNl
KGRpcmVjdG9yeSwgQ29tbW9uRGlyZWN0b3J5KQorICAgICAgICBQcm9qZWN0RGlyZWN0b3J5UmVm
ZXJlbmNlLl9faW5pdF9fKHNlbGYsIGRpcmVjdG9yeSkKKyAgICAgICAgUHJvamVjdEdyb3VwQ29u
dGFpbmVyLl9faW5pdF9fKHNlbGYpCisgICAgICAgIFByb2plY3RGaWxlUmVmZXJlbmNlQ29udGFp
bmVyLl9faW5pdF9fKHNlbGYpCisgICAgICAgIFByb2plY3RHcm91cC5JRF9DT1VOVEVSICs9IDEK
KyAgICAgICAgc2VsZi5faWQgPSBQcm9qZWN0R3JvdXAuSURfQ09VTlRFUgorICAgICAgICBzZWxm
LmNvbnRhaW5lciA9IGNvbnRhaW5lcgorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAg
ICByZXR1cm4gaGFzaChzZWxmLl9pZCkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgor
ICAgICAgICBhc3NlcnQgc2VsZiBpcyBvdGhlciBvciBzZWxmLl9pZCAhPSBvdGhlci5faWQKKyAg
ICAgICAgcmV0dXJuIHNlbGYgaXMgb3RoZXIKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIp
OgorICAgICAgICBhc3NlcnQgbm90IG90aGVyIG9yIGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuUHJv
amVjdEdyb3VwKQorICAgICAgICBhc3NlcnQgc2VsZiBpcyBvdGhlciBvciBzZWxmLl9pZCAhPSBv
dGhlci5faWQKKyAgICAgICAgcmV0dXJuIHNlbGYgaXMgbm90IG90aGVyCisKKyAgICBkZWYgX3Nl
dF9jb250YWluZXIoc2VsZiwgY29udGFpbmVyKToKKyAgICAgICAgYXNzZXJ0IG5vdCBjb250YWlu
ZXIgb3IgaXNpbnN0YW5jZShjb250YWluZXIsIFByb2plY3RHcm91cENvbnRhaW5lcikKKyAgICAg
ICAgYXNzZXJ0IG5vdCBzZWxmLmNvbnRhaW5lcgorICAgICAgICBzZWxmLmNvbnRhaW5lciA9IGNv
bnRhaW5lcgorCisgICAgZGVmIGlzX3ZhbGlkKHNlbGYpOgorICAgICAgICByZXR1cm4gUHJvamVj
dERpcmVjdG9yeVJlZmVyZW5jZS5pc192YWxpZChzZWxmKSBhbmQgUHJvamVjdEdyb3VwQ29udGFp
bmVyLmlzX3ZhbGlkKHNlbGYpIGFuZCBQcm9qZWN0RmlsZVJlZmVyZW5jZUNvbnRhaW5lci5pc192
YWxpZChzZWxmKQorCisgICAgZGVmIGlzX2VtcHR5KHNlbGYpOgorICAgICAgICByZXR1cm4gUHJv
amVjdEdyb3VwQ29udGFpbmVyLmlzX2VtcHR5KHNlbGYpIGFuZCBQcm9qZWN0RmlsZVJlZmVyZW5j
ZUNvbnRhaW5lci5pc19lbXB0eShzZWxmKQorCisKK2NsYXNzIEdyb3VwUHJvamVjdEZpbGVSZWZl
cmVuY2UoUHJvamVjdEZpbGVSZWZlcmVuY2UpOgorICAgICIiIgorICAgIEZpbGUgcmVmZXJlbmNl
IGNsYXNzIGluIGEgZ3JvdXAgcHJvamVjdC4gU3RvcmVzIHRoZSBjb250YWluZXIgKHVzdS4gYSBn
cm91cCkuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGU9Tm9uZSwgY29udGFp
bmVyPU5vbmUpOgorICAgICAgICBhc3NlcnQgbm90IGNvbnRhaW5lciBvciBpc2luc3RhbmNlKGNv
bnRhaW5lciwgUHJvamVjdEZpbGVSZWZlcmVuY2VDb250YWluZXIpCisgICAgICAgIFByb2plY3RG
aWxlUmVmZXJlbmNlLl9faW5pdF9fKHNlbGYsIGZpbGUpCisgICAgICAgIHNlbGYuY29udGFpbmVy
ID0gY29udGFpbmVyCisKKyAgICBkZWYgX3NldF9jb250YWluZXIoc2VsZiwgY29udGFpbmVyKToK
KyAgICAgICAgYXNzZXJ0IG5vdCBjb250YWluZXIgb3IgaXNpbnN0YW5jZShjb250YWluZXIsIFBy
b2plY3RGaWxlUmVmZXJlbmNlQ29udGFpbmVyKQorICAgICAgICBhc3NlcnQgbm90IGNvbnRhaW5l
ciBvciBub3Qgc2VsZi5jb250YWluZXIKKyAgICAgICAgc2VsZi5jb250YWluZXIgPSBjb250YWlu
ZXIKKworICAgIGRlZiBpc192YWxpZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY29udGFp
bmVyIGFuZCBQcm9qZWN0RmlsZVJlZmVyZW5jZS5pc192YWxpZChzZWxmKQorCisKK2NsYXNzIEdy
b3VwUHJvamVjdChQcm9qZWN0KToKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIGZvciBwcm9qZWN0
cyB0aGF0IGNvbnNpc3Qgb2YgbmVzdGVkIGdyb3VwcyBhbmQgZmlsZXMgKGUuZy4sIFhjb2RlLCBW
aXN1YWwgU3R1ZGlvKS4KKworICAgIERlcml2ZWQgY2xhc3NlcyBNVVNUIGRlZmluZToKKyAgICAt
KSBhIGNsYXNzIHZhcmlhYmxlICdQUk9KRUNUX0dST1VQX0NMQVNTJyB0aGF0IGNvbnRhaW5zIHRo
ZSBjbGFzcyBvZiBncm91cHMgd2l0aGluIHRoZSBwcm9qZWN0CisgICAgIiIiCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGNvbW1vbiwgZmlsZSwgdmFyaWFibGVfdG9fZGlyZWN0b3J5PU5vbmUsIHBy
b2plY3RfbmFtZT1Ob25lKToKKyAgICAgICAgUHJvamVjdC5fX2luaXRfXyhzZWxmLCBjb21tb24s
IGZpbGUsIHZhcmlhYmxlX3RvX2RpcmVjdG9yeSwgcHJvamVjdF9uYW1lKQorICAgICAgICAjIENv
dW50ZXIgb3ZlciBhbGwgZ3JvdXBzIGluIHRoZSBwcm9qZWN0LiBUaGlzIGFsc28gc2ltcGxpZmll
cyB1bmlxdWVuZXNzIGFuZCBzYW1lbmVzcyB0ZXN0cy4KKyAgICAgICAgc2VsZi5ncm91cF9pZF9j
b3VudGVyID0gMAorICAgICAgICAjIG1haW4gZ3JvdXAgY29udGFpbmluZyBhbGwgb3RoZXIgZ3Jv
dXBzCisgICAgICAgIHNlbGYubWFpbl9ncm91cCA9IE5vbmUKKyAgICAgICAgIyBhbGwgZ3JvdXBz
IGZvciBxdWljayByZWZlcmVuY2UKKyAgICAgICAgc2VsZi5hbGxfZ3JvdXBzID0gc2V0KCkKKwor
ICAgIGRlZiBfc2V0X21haW5fZ3JvdXAoc2VsZiwgZ3JvdXApOgorICAgICAgICBhc3NlcnQgZ3Jv
dXAKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ3JvdXAsIFByb2plY3RHcm91cCkKKyAgICAg
ICAgYXNzZXJ0IG5vdCBzZWxmLm1haW5fZ3JvdXAKKyAgICAgICAgYXNzZXJ0IG5vdCBncm91cC5j
b250YWluZXIKKyAgICAgICAgYXNzZXJ0IGdyb3VwIGluIHNlbGYuYWxsX2dyb3VwcworICAgICAg
ICBzZWxmLm1haW5fZ3JvdXAgPSBncm91cAorCisgICAgZGVmIF9hZGRfZ3JvdXAoc2VsZiwgZ3Jv
dXApOgorICAgICAgICBhc3NlcnQgZ3JvdXAKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZ3Jv
dXAsIFByb2plY3RHcm91cCkKKyAgICAgICAgYXNzZXJ0IGdyb3VwIG5vdCBpbiBzZWxmLmFsbF9n
cm91cHMKKyAgICAgICAgc2VsZi5hbGxfZ3JvdXBzLmFkZChncm91cCkKKworICAgIGRlZiBfcmVt
b3ZlX2dyb3VwKHNlbGYsIGdyb3VwKToKKyAgICAgICAgYXNzZXJ0IGdyb3VwCisgICAgICAgIGFz
c2VydCBpc2luc3RhbmNlKGdyb3VwLCBQcm9qZWN0R3JvdXApCisgICAgICAgIGFzc2VydCBncm91
cCBpbiBzZWxmLmFsbF9ncm91cHMKKyAgICAgICAgc2VsZi5hbGxfZ3JvdXBzLnJlbW92ZShncm91
cCkKKworICAgICMgLS0tIHByb2plY3QgbWFuaXB1bGF0aW9uIC0tLQorCisgICAgZGVmIGFkZF9m
aWxlKHNlbGYsIGZpbGUsIG9wdGlvbnMpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKKworICAgIGRlZiBlbnN1cmVfZ3JvdXBf
Zm9yX2RpcmVjdG9yeShzZWxmLCBkaXJlY3RvcnkpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikKKworICAgIGRlZiBlbnN1cmVf
ZmlsZV9yZWZlcmVuY2Uoc2VsZiwgZmlsZSwgb3B0aW9ucyk6CisgICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJvamVjdC9ncm91cGJhc2VfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcm9qZWN0L2dyb3VwYmFzZV91bml0
dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wOWIzNzc0N2Q2MDU4ZWIwMjdkMDFhZTliYzA4MmRkMGE2YzFh
YWMxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJv
amVjdC9ncm91cGJhc2VfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw2OCBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnByb2plY3QuY29tbW9uIGltcG9ydCAqCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5w
cm9qZWN0Lmdyb3VwYmFzZSBpbXBvcnQgKgorCisKK2NsYXNzIEdyb3VwQmFzZVRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jb21tb24g
PSBDb21tb25JbmZvKCJXZWJDb3JlIikKKworICAgIGRlZiB0ZXN0X1Byb2plY3RHcm91cChzZWxm
KToKKyAgICAgICAgbWFpbl9kaXJlY3RvcnkgPSBzZWxmLmNvbW1vbi5zY21fZGlyZWN0b3J5Cisg
ICAgICAgIHN1Yl9kaXJlY3RvcnkgPSBzZWxmLmNvbW1vbi5jcmVhdGVfc3ViZGlyZWN0b3J5KG1h
aW5fZGlyZWN0b3J5LCAndGVzdCcpCisgICAgICAgIG1haW5fZ3JvdXAgPSBQcm9qZWN0R3JvdXAo
Tm9uZSwgbWFpbl9kaXJlY3RvcnkpCisgICAgICAgIHN1Yl9ncm91cCA9IFByb2plY3RHcm91cCht
YWluX2dyb3VwLCBzdWJfZGlyZWN0b3J5KQorICAgICAgICBtYWluX2dyb3VwLl9hZGRfZ3JvdXAo
c3ViX2dyb3VwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1haW5fZ3JvdXAuaXNfZW1wdHko
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1Yl9ncm91cC5pc19lbXB0eSgpKQorICAgICAg
ICBzZWxmLmFzc2VydFRydWUoc3ViX2dyb3VwLmNvbnRhaW5lciBpcyBtYWluX2dyb3VwKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUobWFpbl9ncm91cC5jb250YWluc19ncm91cChzdWJfZ3JvdXAp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haW5fZ3JvdXAuZ3JvdXBfY291bnQoKSwgMSkK
KworICAgIGRlZiB0ZXN0X0dyb3VwUHJvamVjdChzZWxmKToKKyAgICAgICAgcHJvamVjdF9maWxl
X25hbWUgPSAncHJvamVjdC5wcm9qJworICAgICAgICBwcm9qZWN0X2ZpbGUgPSBzZWxmLmNvbW1v
bi5jcmVhdGVfZmlsZShzZWxmLmNvbW1vbi5zY21fZGlyZWN0b3J5LCBwcm9qZWN0X2ZpbGVfbmFt
ZSkKKyAgICAgICAgcHJvamVjdCA9IEdyb3VwUHJvamVjdChzZWxmLmNvbW1vbiwgcHJvamVjdF9m
aWxlKQorICAgICAgICBtYWluX2RpcmVjdG9yeSA9IHNlbGYuY29tbW9uLnNjbV9kaXJlY3RvcnkK
KyAgICAgICAgc3ViX2RpcmVjdG9yeSA9IHNlbGYuY29tbW9uLmNyZWF0ZV9zdWJkaXJlY3Rvcnko
bWFpbl9kaXJlY3RvcnksICd0ZXN0JykKKyAgICAgICAgbWFpbl9ncm91cCA9IFByb2plY3RHcm91
cChOb25lLCBtYWluX2RpcmVjdG9yeSkKKyAgICAgICAgc3ViX2dyb3VwID0gUHJvamVjdEdyb3Vw
KG1haW5fZ3JvdXAsIHN1Yl9kaXJlY3RvcnkpCisgICAgICAgIHByb2plY3QuX2FkZF9ncm91cCht
YWluX2dyb3VwKQorICAgICAgICBwcm9qZWN0Ll9hZGRfZ3JvdXAoc3ViX2dyb3VwKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihwcm9qZWN0LmFsbF9ncm91cHMpLCAyKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUobWFpbl9ncm91cCBpbiBwcm9qZWN0LmFsbF9ncm91cHMpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShzdWJfZ3JvdXAgaW4gcHJvamVjdC5hbGxfZ3JvdXBzKQorCisKK2lm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcm9qZWN0L21ha2ViYXNlLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJvamVjdC9tYWtlYmFzZS5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hNTA3ZTQ3MmEzMDk0NTk4YmUwM2FmNDA4MWMzZTliODkwMmZlMGQ4Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJvamVjdC9tYWtlYmFzZS5weQpA
QCAtMCwwICsxLDI4MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
ZnJvbSB3ZWJraXRweS5jb21tb24ucHJvamVjdC5wcm9qZWN0IGltcG9ydCAqCisKKworY2xhc3Mg
SW5saW5lQ29tbWVudHMob2JqZWN0KToKKyAgICAiIiIKKyAgICBNaXhpbiBjbGFzcyBmb3IgaW5s
aW5lIGNvbW1lbnRzIGFzc2lnbmVkIHRvIHN0YXRlbWVudHMuCisgICAgIiIiCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmlubGluZV9jb21tZW50cyA9IFtdICAjIGFycmF5
IG9mIHN0cmluZ3MsIHJlcHJlc2VudGluZyBsaW5lcyBvZiBjb21tZW50cworCisKK2NsYXNzIFN0
YXRlbWVudChvYmplY3QpOgorICAgICIiIgorICAgIEJhc2UgY2xhc3MgZm9yIHN0YXRlbWVudHMg
Y29udGFpbmVkIGluIGEgU3RhdGVtZW50TGlzdC4KKyAgICBFdmVyeSBzdGF0ZW1lbnQgYWxzbyBz
dG9yZXMgd2l0aCBpdCBhIHNlcmllcyBvZiBjb21tZW50IGxpbmVzIHRoYXQgYXJlIGFzc29jaWF0
ZWQgd2l0IGl0LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb250YWluaW5nX3N0
YXRlbWVudF9saXN0PU5vbmUpOgorICAgICAgICBhc3NlcnQgbm90IGNvbnRhaW5pbmdfc3RhdGVt
ZW50X2xpc3Qgb3IgaXNpbnN0YW5jZShjb250YWluaW5nX3N0YXRlbWVudF9saXN0LCBTdGF0ZW1l
bnRMaXN0KQorICAgICAgICBzZWxmLmNvbnRhaW5pbmdfc3RhdGVtZW50X2xpc3QgPSBjb250YWlu
aW5nX3N0YXRlbWVudF9saXN0CisgICAgICAgIHNlbGYuY29tbWVudHMgPSBbXQorCisgICAgZGVm
IF9zZXRfY29udGFpbmluZ19zdGF0ZW1lbnRfbGlzdChzZWxmLCBjb250YWluaW5nX3N0YXRlbWVu
dF9saXN0KToKKyAgICAgICAgYXNzZXJ0IGNvbnRhaW5pbmdfc3RhdGVtZW50X2xpc3QKKyAgICAg
ICAgYXNzZXJ0IGlzaW5zdGFuY2UoY29udGFpbmluZ19zdGF0ZW1lbnRfbGlzdCwgU3RhdGVtZW50
TGlzdCkKKyAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLmNvbnRhaW5pbmdfc3RhdGVtZW50X2xpc3QK
KyAgICAgICAgc2VsZi5jb250YWluaW5nX3N0YXRlbWVudF9saXN0ID0gY29udGFpbmluZ19zdGF0
ZW1lbnRfbGlzdAorCisgICAgZGVmIHByZXBlbmRfY29tbWVudChzZWxmLCBjb21tZW50KToKKyAg
ICAgICAgc2VsZi5jb21tZW50cy5pbnNlcnQoMCwgY29tbWVudCkKKworICAgIGRlZiBhcHBlbmRf
Y29tbWVudChzZWxmLCBjb21tZW50KToKKyAgICAgICAgc2VsZi5jb21tZW50cy5hcHBlbmQoY29t
bWVudCkKKworCitjbGFzcyBTdGF0ZW1lbnRMaXN0KG9iamVjdCk6CisgICAgIiIiCisgICAgQ2xh
c3MgY29udGFpbmluZyBhIGxpc3Qgb2Ygc3RhdGVtZW50cy4gRWl0aGVyIHRvcC1sZXZlbCwgb3Ig
Y29udGFpbmVkIGluIGEgQ29uZGl0aW9uQnJhbmNoLgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBjb250YWluZXI9Tm9uZSk6CisgICAgICAgIHNlbGYuY29udGFpbmVyID0gY29udGFp
bmVyCisgICAgICAgIHNlbGYuc3RhdGVtZW50cyA9IFtdCisKKyAgICBkZWYgX2FwcGVuZF9zdGF0
ZW1lbnQoc2VsZiwgc3RhdGVtZW50KToKKyAgICAgICAgc2VsZi5zdGF0ZW1lbnRzLmFwcGVuZChz
dGF0ZW1lbnQpCisKKyAgICBkZWYgcGFyZW50X3N0YXRlbWVudF9saXN0KHNlbGYpOgorICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IHBh
cmVudF9zdGF0ZW1lbnRfbGlzdCgpIikKKworICAgIGRlZiBzdGF0ZW1lbnRfY291bnQoc2VsZik6
CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5zdGF0ZW1lbnRzKQorCisKK2NsYXNzIENvbW1lbnQo
U3RhdGVtZW50KToKKyAgICAiIiIKKyAgICBDbGFzcyBob2xkaW5nIGEgc2luZ2xlIGNvbW1lbnQg
bGluZSBhdCB0aGUgc2FtZSBsZXZlbCBhcyBvdGhlciBzdGF0ZW1lbnRzLgorICAgICIiIgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBjb250YWluaW5nX3N0YXRlbWVudF9saXN0LCBjb21tZW50KToK
KyAgICAgICAgU3RhdGVtZW50Ll9faW5pdF9fKHNlbGYsIGNvbnRhaW5pbmdfc3RhdGVtZW50X2xp
c3QpCisgICAgICAgIHNlbGYuY29tbWVudCA9IGNvbW1lbnQKKworCitjbGFzcyBBc3NpZ25tZW50
KFN0YXRlbWVudCk6CisgICAgIiIiCisgICAgQmFzZSBjbGFzcyBmb3IgYXNzaWdubWVudCBvZiBh
IGxpc3Qgb2YgdmFsdWVzIHRvIGEgdmFyaWFibGUKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgY29udGFpbmluZ19zdGF0ZW1lbnRfbGlzdCwgdmFyaWFibGUsIG9wZXJhdG9yKToKKyAg
ICAgICAgYXNzZXJ0IHZhcmlhYmxlCisgICAgICAgIGFzc2VydCBvcGVyYXRvcgorICAgICAgICBT
dGF0ZW1lbnQuX19pbml0X18oc2VsZiwgY29udGFpbmluZ19zdGF0ZW1lbnRfbGlzdCkKKyAgICAg
ICAgc2VsZi52YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgICAgIHNlbGYub3BlcmF0b3IgPSBvcGVy
YXRvcgorCisgICAgZGVmIGlzX2VtcHR5KHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IGlzX2VtcHR5KCkiKQorCisgICAg
ZGVmIHZhbHVlX2NvdW50KHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
KCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IGNvdW50KCkiKQorCisKK2NsYXNzIEZpbGVSZWZl
cmVuY2VzQXNzaWdubWVudChBc3NpZ25tZW50LCBQcm9qZWN0RmlsZVJlZmVyZW5jZUNvbnRhaW5l
cik6CisgICAgIiIiCisgICAgQXNzaWdubWVudCBvZiBhIGxpc3Qgb2YgZmlsZSByZWZlcmVuY2Vz
IHRvIGEgdmFyaWFibGUuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbnRhaW5p
bmdfc3RhdGVtZW50X2xpc3QsIHZhcmlhYmxlLCBvcGVyYXRvcik6CisgICAgICAgIEFzc2lnbm1l
bnQuX19pbml0X18oc2VsZiwgY29udGFpbmluZ19zdGF0ZW1lbnRfbGlzdCwgdmFyaWFibGUsIG9w
ZXJhdG9yKQorICAgICAgICBQcm9qZWN0RmlsZVJlZmVyZW5jZUNvbnRhaW5lci5fX2luaXRfXyhz
ZWxmKQorCisgICAgZGVmIGlzX2VtcHR5KHNlbGYpOgorICAgICAgICByZXR1cm4gUHJvamVjdEZp
bGVSZWZlcmVuY2VDb250YWluZXIuaXNfZW1wdHkoc2VsZikKKworICAgIGRlZiB2YWx1ZV9jb3Vu
dChzZWxmKToKKyAgICAgICAgcmV0dXJuIFByb2plY3RGaWxlUmVmZXJlbmNlQ29udGFpbmVyLmZp
bGVfcmVmZXJlbmNlc19jb3VudChzZWxmKQorCisKK2NsYXNzIERpcmVjdG9yeVJlZmVyZW5jZXNB
c3NpZ25tZW50KEFzc2lnbm1lbnQsIFByb2plY3REaXJlY3RvcnlSZWZlcmVuY2VDb250YWluZXIp
OgorICAgICIiIgorICAgIEFzc2lnbm1lbnQgb2YgYSBsaXN0IG9mIGZpbGUgcmVmZXJlbmNlcyB0
byBhIHZhcmlhYmxlLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb250YWluaW5n
X3N0YXRlbWVudF9saXN0LCB2YXJpYWJsZSwgb3BlcmF0b3IpOgorICAgICAgICBBc3NpZ25tZW50
Ll9faW5pdF9fKHNlbGYsIGNvbnRhaW5pbmdfc3RhdGVtZW50X2xpc3QsIHZhcmlhYmxlLCBvcGVy
YXRvcikKKyAgICAgICAgUHJvamVjdERpcmVjdG9yeVJlZmVyZW5jZUNvbnRhaW5lci5fX2luaXRf
XyhzZWxmKQorCisgICAgZGVmIGlzX2VtcHR5KHNlbGYpOgorICAgICAgICByZXR1cm4gUHJvamVj
dERpcmVjdG9yeVJlZmVyZW5jZUNvbnRhaW5lci5pc19lbXB0eShzZWxmKQorCisgICAgZGVmIHZh
bHVlX2NvdW50KHNlbGYpOgorICAgICAgICByZXR1cm4gUHJvamVjdERpcmVjdG9yeVJlZmVyZW5j
ZUNvbnRhaW5lci5kaXJlY3RvcnlfcmVmZXJlbmNlc19jb3VudChzZWxmKQorCisKK2NsYXNzIEFy
Yml0cmFyeUFzc2lnbm1lbnQoQXNzaWdubWVudCk6CisgICAgIiIiCisgICAgQXNzaWdubWVudCBv
ZiBhIGxpc3Qgb2Ygbm9uLWZpbGUgdmFsdWVzIHRvIGEgdmFyaWFibGUuIERvZXMgbm90IGNvbnRh
aW4gKG1hbmFnZWQpIGZpbGUgcmVmZXJlbmNlcy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgY29udGFpbmluZ19zdGF0ZW1lbnRfbGlzdCwgdmFyaWFibGUsIG9wZXJhdG9yKToKKyAg
ICAgICAgQXNzaWdubWVudC5fX2luaXRfXyhzZWxmLCBjb250YWluaW5nX3N0YXRlbWVudF9saXN0
LCB2YXJpYWJsZSwgb3BlcmF0b3IpCisgICAgICAgIHNlbGYudmFsdWVzID0gW10gICMgb3JkZXJl
ZCBsaXN0IG9mIGFyYml0cmFyeSB2YWx1ZXMgKHN0cmluZ3MpCisKKyAgICBkZWYgYXBwZW5kX3Zh
bHVlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi52YWx1ZXMuYXBwZW5kKHZhbHVlKQorCisg
ICAgZGVmIGlzX2VtcHR5KHNlbGYpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYudmFsdWVzCisK
KyAgICBkZWYgdmFsdWVfY291bnQoc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi52YWx1
ZXMpCisKKworY2xhc3MgQ29uZGl0aW9uKFN0YXRlbWVudCk6CisgICAgIiIiCisgICAgQ29udGFp
bmVyIGNsYXNzIGZvciBhIGxpc3Qgb2YgQ29uZGl0aW9uQnJhbmNoIG9iamVjdHMuCisgICAgIiIi
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbnRhaW5pbmdfc3RhdGVtZW50X2xpc3QpOgorICAg
ICAgICBTdGF0ZW1lbnQuX19pbml0X18oc2VsZiwgY29udGFpbmluZ19zdGF0ZW1lbnRfbGlzdCkK
KyAgICAgICAgc2VsZi5icmFuY2hlcyA9IFtdICAjIGxpc3Qgb2YgQ29uZGl0aW9uQnJhbmNoIG9i
amVjdHMKKworICAgIGRlZiBfYXBwZW5kX2JyYW5jaChzZWxmLCBicmFuY2gpOgorICAgICAgICBh
c3NlcnQgYnJhbmNoCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGJyYW5jaCwgQ29uZGl0aW9u
QnJhbmNoKQorICAgICAgICBhc3NlcnQgc2VsZi5icmFuY2hlcyBvciBub3QgaXNpbnN0YW5jZShi
cmFuY2gsIEVsc2VDb25kaXRpb25CcmFuY2gpCisgICAgICAgIGFzc2VydCBub3Qgc2VsZi5icmFu
Y2hlcyBvciBub3QgaXNpbnN0YW5jZShzZWxmLmJyYW5jaGVzWy0xXSwgRWxzZUNvbmRpdGlvbkJy
YW5jaCkKKyAgICAgICAgc2VsZi5icmFuY2hlcy5hcHBlbmQoYnJhbmNoKQorCisgICAgZGVmIGJy
YW5jaF9jb3VudChzZWxmKToKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmJyYW5jaGVzKQorCisK
K2NsYXNzIENvbmRpdGlvbkJyYW5jaChTdGF0ZW1lbnRMaXN0KToKKyAgICAiIiIKKyAgICBCYXNl
IGNsYXNzIGZvciBjb25kaXRpb24gYnJhbmNoZXMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGNvbnRhaW5pbmdfY29uZGl0aW9uKToKKyAgICAgICAgYXNzZXJ0IGNvbnRhaW5pbmdf
Y29uZGl0aW9uCisgICAgICAgIFN0YXRlbWVudExpc3QuX19pbml0X18oc2VsZiwgY29udGFpbmlu
Z19jb25kaXRpb24pCisgICAgICAgIHNlbGYuY29udGFpbmluZ19jb25kaXRpb24gPSBjb250YWlu
aW5nX2NvbmRpdGlvbgorCisgICAgZGVmIHBhcmVudF9zdGF0ZW1lbnRfbGlzdChzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYuY29udGFpbmluZ19jb25kaXRpb24uY29udGFpbmluZ19zdGF0ZW1l
bnRfbGlzdAorCisKK2NsYXNzIFRlc3RDb25kaXRpb25CcmFuY2goQ29uZGl0aW9uQnJhbmNoKToK
KyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIGZvciBjb25kaXRpb24gYnJhbmNoZXMgdGhhdCBoYXZl
IGEgdGVzdCAoaS5lLiwgYXJlIG5vdCAnZWxzZScpLgorICAgICIiIgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBjb250YWluaW5nX2NvbmRpdGlvbiwgdGVzdCk6CisgICAgICAgIENvbmRpdGlvbkJy
YW5jaC5fX2luaXRfXyhzZWxmLCBjb250YWluaW5nX2NvbmRpdGlvbikKKyAgICAgICAgc2VsZi50
ZXN0ID0gdGVzdAorCisKK2NsYXNzIEFyYml0cmFyeVRlc3RDb25kaXRpb25CcmFuY2goVGVzdENv
bmRpdGlvbkJyYW5jaCk6CisgICAgIiIiCisgICAgU3RvcmVzIGEgdmVyYmF0aW0gdGVzdCBleHBy
ZXNzaW9uIHRoYXQgZG9lcyBub3QgcmVmZXIgYSBkZWZpbmUuCisgICAgIiIiCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGNvbnRhaW5pbmdfY29uZGl0aW9uLCB0ZXN0KToKKyAgICAgICAgVGVzdENv
bmRpdGlvbkJyYW5jaC5fX2luaXRfXyhzZWxmLCBjb250YWluaW5nX2NvbmRpdGlvbiwgdGVzdCkK
KworCitjbGFzcyBERUZJTkVDb25kaXRpb25CcmFuY2goVGVzdENvbmRpdGlvbkJyYW5jaCk6Cisg
ICAgIiIiCisgICAgU3RvcmVzIHRoZSBkZWZpbmUgdmFyaWFibGUgKGUuZy4sIEVOQUJMRV9WSURF
TykgaW4gYWRkaXRpb24gdG8gdGhlIHZlcmJhdGltIHRlc3QgZXhwcmVzc2lvbi4KKyAgICAiIiIK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgY29udGFpbmluZ19jb25kaXRpb24sIHRlc3QsIGRlZmlu
ZSwgbmVnYXRlZD1Ob25lKToKKyAgICAgICAgYXNzZXJ0IGRlZmluZQorICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShkZWZpbmUsIENvbW1vbkRFRklORSkKKyAgICAgICAgVGVzdENvbmRpdGlvbkJy
YW5jaC5fX2luaXRfXyhzZWxmLCBjb250YWluaW5nX2NvbmRpdGlvbiwgdGVzdCkKKyAgICAgICAg
c2VsZi5kZWZpbmUgPSBkZWZpbmUKKyAgICAgICAgc2VsZi5uZWdhdGVkID0gbmVnYXRlZCBvciBG
YWxzZQorCisgICAgZGVmIHNhdGlzZmllcyh2YXJpYWJsZSwgbmVnYXRlZD1GYWxzZSk6CisgICAg
ICAgIHJldHVybiBzZWxmLnZhcmlhYmxlID09IHZhcmlhYmxlIGFuZCBzZWxmLm5lZ2F0ZWQgPT0g
bmVnYXRlZAorCisKK2NsYXNzIEVsc2VDb25kaXRpb25CcmFuY2goQ29uZGl0aW9uQnJhbmNoKToK
KyAgICAiIiIKKyAgICBTdG9yZXMgYW4gJ2Vsc2UnIGNvbmRpdGlvbiBicmFuY2guIFRoaXMgbXVz
dCBiZSB0aGUgbGFzdCBicmFuY2ggaW4gdGhlIGNvbnRhaW5pbmcgY29kaXRpb24sIGFuZCBjYW5u
b3QgYmUgdGhlIG9ubHkgb25lLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb250
YWluaW5nX2NvbmRpdGlvbik6CisgICAgICAgIENvbmRpdGlvbkJyYW5jaC5fX2luaXRfXyhzZWxm
LCBjb250YWluaW5nX2NvbmRpdGlvbikKKworCisjIEZJWE1FOiAnTWFrZUZpbGUnIG1ha2VzIGl0
IHNvdW5kIGxpa2UgaXQgc2hvdWxkIGJlIGEgQ29tbW9uRmlsZSBvYmplY3QgLSB0cnkgdG8gZmlu
ZCBhIGJldHRlciBuYW1lCitjbGFzcyBNYWtlRmlsZShTdGF0ZW1lbnRMaXN0KToKKyAgICAiIiIK
KyAgICBDbGFzcyBzdG9yaW5nIHRoZSBjb250ZW50cyBvZiBhIHNpbmdsZSBtYWtlLWZpbGUuIEEg
bWFrZS1iYXNlZCBwcm9qZWN0IG1heSBiZSBzcHJlYWQgb3ZlciBtdWx0aXBsZSBtYWtlIGZpbGVz
LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBwYXJlbnRfbWFrZV9maWxl
PU5vbmUpOgorICAgICAgICBhc3NlcnQgZmlsZQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShm
aWxlLCBDb21tb25GaWxlKQorICAgICAgICBTdGF0ZW1lbnRMaXN0Ll9faW5pdF9fKHNlbGYpCisg
ICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKKyAgICAgICAgc2VsZi5wYXJlbnRfbWFrZV9maWxlID0g
cGFyZW50X21ha2VfZmlsZQorICAgICAgICBzZWxmLnN1Yl9tYWtlX2ZpbGVzID0gc2V0KCkKKwor
ICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5maWxlKQor
CisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGFzc2VydCBub3Qgb3RoZXIg
b3IgaXNpbnN0YW5jZShvdGhlciwgTWFrZUZpbGUpCisgICAgICAgIGFzc2VydCBub3Qgb3RoZXIg
b3Igc2VsZiBpcyBvdGhlciBvciBzZWxmLmZpbGUgaXMgbm90IG90aGVyLmZpbGUKKyAgICAgICAg
cmV0dXJuIHNlbGYgaXMgb3RoZXIKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAg
ICAgICBhc3NlcnQgbm90IG90aGVyIG9yIGlzaW5zdGFuY2Uob3RoZXIsIE1ha2VGaWxlKQorICAg
ICAgICBhc3NlcnQgbm90IG90aGVyIG9yIHNlbGYgaXMgb3RoZXIgb3Igc2VsZi5maWxlIGlzIG5v
dCBvdGhlci5maWxlCisgICAgICAgIHJldHVybiBzZWxmIGlzIG5vdCBvdGhlcgorCisgICAgZGVm
IHBhcmVudF9zdGF0ZW1lbnRfbGlzdChzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAg
IGRlZiBhZGRfc3ViX21ha2VfZmlsZShzZWxmLCBtYWtlX2ZpbGUpOgorICAgICAgICBhc3NlcnQg
bWFrZV9maWxlCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1ha2VfZmlsZSwgTWFrZUZpbGUp
CisgICAgICAgIGFzc2VydCBtYWtlX2ZpbGUgbm90IGluIHNlbGYuc3ViX21ha2VfZmlsZXMKKyAg
ICAgICAgc2VsZi5zdWJfbWFrZV9maWxlcy5hZGQobWFrZV9maWxlKQorCisKK2NsYXNzIE1ha2VQ
cm9qZWN0KFByb2plY3QpOgorICAgICIiIgorICAgIEJhc2UgY2xhc3MgZm9yIHByb2plY3RzIHRo
YXQgYXJlIG1ha2UtZmlsZSBsaWtlIChlLmcuLCBRdCwgR05VbWFrZWZpbGUpCisgICAgU3VjaCBw
cm9qZWN0cyBtYXkgYmUgc3ByZWFkIG92ZXIgc2V2ZXJhbCBpbmRpdmlkdWFsIGZpbGVzLgorICAg
IFRoZSBNYWtlRmlsZSBvYmplY3QgcGFzc2VkIGluIHRvIHRoZSBQcm9qZWN0IG9iamVjdCBzaG91
bGQgcmVwcmVzZW50IHRoZSByb290IHByb2plY3QgZmlsZSB0aGF0IGluY2x1ZGVzIHRoZSByZXN0
LgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21tb24sIHJvb3RfbWFrZV9maWxl
LCBzcGVjaWFsX2RpcmVjdG9yaWVzPU5vbmUsIHByb2plY3RfbmFtZT1Ob25lKToKKyAgICAgICAg
YXNzZXJ0IHJvb3RfbWFrZV9maWxlCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHJvb3RfbWFr
ZV9maWxlLCBNYWtlRmlsZSkKKyAgICAgICAgUHJvamVjdC5fX2luaXRfXyhzZWxmLCBjb21tb24s
IHJvb3RfbWFrZV9maWxlLmZpbGUsIHNwZWNpYWxfZGlyZWN0b3JpZXMsIHByb2plY3RfbmFtZSkK
KyAgICAgICAgc2VsZi5yb290X21ha2VfZmlsZSA9IHJvb3RfbWFrZV9maWxlCisgICAgICAgIHNl
bGYuYWxsX21ha2VfZmlsZXMgPSBzZXQoKQorICAgICAgICBzZWxmLmFkZF9tYWtlX2ZpbGUocm9v
dF9tYWtlX2ZpbGUpCisKKyAgICBkZWYgYWRkX21ha2VfZmlsZShzZWxmLCBtYWtlX2ZpbGUpOgor
ICAgICAgICBhc3NlcnQgbWFrZV9maWxlCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1ha2Vf
ZmlsZSwgTWFrZUZpbGUpCisgICAgICAgIGFzc2VydCBtYWtlX2ZpbGUgbm90IGluIHNlbGYuYWxs
X21ha2VfZmlsZXMKKyAgICAgICAgc2VsZi5hbGxfbWFrZV9maWxlcy5hZGQobWFrZV9maWxlKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vcHJvamVjdC9tYWtlYmFz
ZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3Byb2plY3QvbWFr
ZWJhc2VfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGEwY2RlMmJjYWQ1NDkwMzUxYTEzZTZiMmFj
MGViYjU0ZTAzMTgwMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL3Byb2plY3QvbWFrZWJhc2VfdW5pdHRlc3QucHkKQEAgLTAsMCArMSwxNDEgQEAKKyMh
L3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0
OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAorCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5wcm9qZWN0Lm1ha2ViYXNlIGltcG9ydCAqCisKKworY2xhc3Mg
TWFrZUJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6Cisg
ICAgICAgIHNlbGYuY29tbW9uID0gQ29tbW9uSW5mbygiV2ViQ29yZSIpCisKKyAgICBkZWYgdGVz
dF9zdGF0ZW1lbnRfYmFzaWNzKHNlbGYpOgorICAgICAgICBzdGF0ZW1lbnRfbGlzdCA9IFN0YXRl
bWVudExpc3QoKQorICAgICAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQoc3RhdGVtZW50X2xpc3Qp
CisgICAgICAgIHN0YXRlbWVudF9saXN0Ll9hcHBlbmRfc3RhdGVtZW50KHN0YXRlbWVudCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXRlbWVudC5jb250YWluaW5nX3N0YXRlbWVudF9saXN0
IGlzIHN0YXRlbWVudF9saXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRlbWVudF9s
aXN0LnN0YXRlbWVudF9jb3VudCgpLCAxKQorICAgICAgICBzdGF0ZW1lbnQuYXBwZW5kX2NvbW1l
bnQoIkIiKQorICAgICAgICBzdGF0ZW1lbnQucHJlcGVuZF9jb21tZW50KCJBIikKKyAgICAgICAg
c3RhdGVtZW50LmFwcGVuZF9jb21tZW50KCJDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChs
ZW4oc3RhdGVtZW50LmNvbW1lbnRzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0
ZW1lbnQuY29tbWVudHNbMF0sICJBIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0ZW1l
bnQuY29tbWVudHNbMV0sICJCIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0ZW1lbnQu
Y29tbWVudHNbMl0sICJDIikKKyAgICAgICAgY29tbWVudCA9IENvbW1lbnQoc3RhdGVtZW50X2xp
c3QsICJXaWxlIEUuIENveW90ZSAtIEdlbml1cyEiKQorICAgICAgICBzdGF0ZW1lbnRfbGlzdC5f
YXBwZW5kX3N0YXRlbWVudChjb21tZW50KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tbWVu
dC5jb250YWluaW5nX3N0YXRlbWVudF9saXN0IGlzIHN0YXRlbWVudF9saXN0KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0YXRlbWVudF9saXN0LnN0YXRlbWVudF9jb3VudCgpLCAyKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUoc3RhdGVtZW50X2xpc3Quc3RhdGVtZW50c1swXSBpcyBzdGF0
ZW1lbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGF0ZW1lbnRfbGlzdC5zdGF0ZW1lbnRz
WzFdIGlzIGNvbW1lbnQpCisKKyAgICBkZWYgdGVzdF9hc3NpZ25tZW50X2Jhc2ljcyhzZWxmKToK
KyAgICAgICAgZmlsZV9yZWZlcmVuY2VzX3ZhcmlhYmxlID0gJ0ZJTEVTJworICAgICAgICBkaXJl
Y3RvcnlfcmVmZXJlbmNlc192YXJpYWJsZSA9ICdESVJFQ1RPUklFUycKKyAgICAgICAgdmFsdWVf
dmFyaWFibGUgPSAnVkFMVUVTJworICAgICAgICBvcGVyYXRvciA9ICcrPScKKyAgICAgICAgZmls
ZV9uYW1lID0gJ2ZpbGUuY3BwJworICAgICAgICBkaXJlY3RvcnlfbmFtZSA9ICdkaXInCisgICAg
ICAgIHZhbHVlID0gJ2tpd2knCisgICAgICAgIHN0YXRlbWVudF9saXN0ID0gU3RhdGVtZW50TGlz
dCgpCisgICAgICAgIGZpbGVfcmVmZXJlbmNlc19hc3NpZ25tZW50ID0gRmlsZVJlZmVyZW5jZXNB
c3NpZ25tZW50KHN0YXRlbWVudF9saXN0LCBmaWxlX3JlZmVyZW5jZXNfdmFyaWFibGUsIG9wZXJh
dG9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfcmVmZXJlbmNlc19hc3NpZ25tZW50
LnZhcmlhYmxlLCBmaWxlX3JlZmVyZW5jZXNfdmFyaWFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZmlsZV9yZWZlcmVuY2VzX2Fzc2lnbm1lbnQub3BlcmF0b3IsIG9wZXJhdG9yKQorICAg
ICAgICBkaXJlY3RvcnlfcmVmZXJlbmNlc19hc3NpZ25tZW50ID0gRGlyZWN0b3J5UmVmZXJlbmNl
c0Fzc2lnbm1lbnQoc3RhdGVtZW50X2xpc3QsIGRpcmVjdG9yeV9yZWZlcmVuY2VzX3ZhcmlhYmxl
LCBvcGVyYXRvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJlY3RvcnlfcmVmZXJlbmNl
c19hc3NpZ25tZW50LnZhcmlhYmxlLCBkaXJlY3RvcnlfcmVmZXJlbmNlc192YXJpYWJsZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJlY3RvcnlfcmVmZXJlbmNlc19hc3NpZ25tZW50Lm9w
ZXJhdG9yLCBvcGVyYXRvcikKKyAgICAgICAgYXJiaXRyYXJ5X2Fzc2lnbm1lbnQgPSBBcmJpdHJh
cnlBc3NpZ25tZW50KHN0YXRlbWVudF9saXN0LCB2YWx1ZV92YXJpYWJsZSwgb3BlcmF0b3IpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJiaXRyYXJ5X2Fzc2lnbm1lbnQudmFyaWFibGUsIHZh
bHVlX3ZhcmlhYmxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyYml0cmFyeV9hc3NpZ25t
ZW50Lm9wZXJhdG9yLCBvcGVyYXRvcikKKyAgICAgICAgc3RhdGVtZW50X2xpc3QuX2FwcGVuZF9z
dGF0ZW1lbnQoZmlsZV9yZWZlcmVuY2VzX2Fzc2lnbm1lbnQpCisgICAgICAgIHN0YXRlbWVudF9s
aXN0Ll9hcHBlbmRfc3RhdGVtZW50KGRpcmVjdG9yeV9yZWZlcmVuY2VzX2Fzc2lnbm1lbnQpCisg
ICAgICAgIHN0YXRlbWVudF9saXN0Ll9hcHBlbmRfc3RhdGVtZW50KGFyYml0cmFyeV9hc3NpZ25t
ZW50KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsZV9yZWZlcmVuY2VzX2Fzc2lnbm1lbnQu
aXNfZW1wdHkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX3JlZmVyZW5jZXNfYXNz
aWdubWVudC52YWx1ZV9jb3VudCgpLCAwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlyZWN0
b3J5X3JlZmVyZW5jZXNfYXNzaWdubWVudC5pc19lbXB0eSgpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGRpcmVjdG9yeV9yZWZlcmVuY2VzX2Fzc2lnbm1lbnQudmFsdWVfY291bnQoKSwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFyYml0cmFyeV9hc3NpZ25tZW50LmlzX2VtcHR5KCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJiaXRyYXJ5X2Fzc2lnbm1lbnQudmFsdWVfY291
bnQoKSwgMCkKKyAgICAgICAgZmlsZSA9IHNlbGYuY29tbW9uLmNyZWF0ZV9maWxlKHNlbGYuY29t
bW9uLnNjbV9kaXJlY3RvcnksIGZpbGVfbmFtZSkKKyAgICAgICAgZmlsZV9yZWZlcmVuY2UgPSBQ
cm9qZWN0RmlsZVJlZmVyZW5jZShmaWxlKQorICAgICAgICBkaXJlY3RvcnkgPSBzZWxmLmNvbW1v
bi5jcmVhdGVfc3ViZGlyZWN0b3J5KHNlbGYuY29tbW9uLnNjbV9kaXJlY3RvcnksIGRpcmVjdG9y
eV9uYW1lKQorICAgICAgICBkaXJlY3RvcnlfcmVmZXJlbmNlID0gUHJvamVjdERpcmVjdG9yeVJl
ZmVyZW5jZShkaXJlY3RvcnkpCisgICAgICAgIGZpbGVfcmVmZXJlbmNlc19hc3NpZ25tZW50Ll9h
ZGRfZmlsZV9yZWZlcmVuY2UoZmlsZV9yZWZlcmVuY2UpCisgICAgICAgIGRpcmVjdG9yeV9yZWZl
cmVuY2VzX2Fzc2lnbm1lbnQuX2FkZF9kaXJlY3RvcnlfcmVmZXJlbmNlKGRpcmVjdG9yeV9yZWZl
cmVuY2UpCisgICAgICAgIGFyYml0cmFyeV9hc3NpZ25tZW50LmFwcGVuZF92YWx1ZSh2YWx1ZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaWxlX3JlZmVyZW5jZXNfYXNzaWdubWVudC5pc19l
bXB0eSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfcmVmZXJlbmNlc19hc3NpZ25t
ZW50LnZhbHVlX2NvdW50KCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGlyZWN0b3J5
X3JlZmVyZW5jZXNfYXNzaWdubWVudC5pc19lbXB0eSgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGRpcmVjdG9yeV9yZWZlcmVuY2VzX2Fzc2lnbm1lbnQudmFsdWVfY291bnQoKSwgMSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShhcmJpdHJhcnlfYXNzaWdubWVudC5pc19lbXB0eSgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyYml0cmFyeV9hc3NpZ25tZW50LnZhbHVlX2NvdW50
KCksIDEpCisKKyAgICBkZWYgdGVzdF9jb25kaXRpb25fYmFzaWNzKHNlbGYpOgorICAgICAgICB0
ZXN0X2V4cHIgPSAnaGFzLWV5ZXMtb2YobmV3dCknCisgICAgICAgIGRlZmluZV92YXIgPSAnRU5B
QkxFX0VOQUJMRScKKyAgICAgICAgZGVmaW5lX2V4cHIgPSBkZWZpbmVfdmFyICsgJz0xJworICAg
ICAgICBkZWZpbmUgPSBzZWxmLmNvbW1vbi5lbnN1cmVfREVGSU5FKGRlZmluZV92YXIpCisgICAg
ICAgIHN0YXRlbWVudF9saXN0ID0gU3RhdGVtZW50TGlzdCgpCisgICAgICAgIGNvbmRpdGlvbiA9
IENvbmRpdGlvbihzdGF0ZW1lbnRfbGlzdCkKKyAgICAgICAgc3RhdGVtZW50X2xpc3QuX2FwcGVu
ZF9zdGF0ZW1lbnQoY29uZGl0aW9uKQorICAgICAgICB0ZXN0X2JyYW5jaCA9IEFyYml0cmFyeVRl
c3RDb25kaXRpb25CcmFuY2goY29uZGl0aW9uLCB0ZXN0X2V4cHIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwodGVzdF9icmFuY2gudGVzdCwgdGVzdF9leHByKQorICAgICAgICBkZWZpbmVfYnJh
bmNoID0gREVGSU5FQ29uZGl0aW9uQnJhbmNoKGNvbmRpdGlvbiwgZGVmaW5lX2V4cHIsIGRlZmlu
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZpbmVfYnJhbmNoLnRlc3QsIGRlZmluZV9l
eHByKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmluZV9icmFuY2guZGVmaW5lLCBkZWZp
bmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGVmaW5lX2JyYW5jaC5uZWdhdGVkKQorICAg
ICAgICBuZWdhdGVkX2JyYW5jaCA9IERFRklORUNvbmRpdGlvbkJyYW5jaChjb25kaXRpb24sIGRl
ZmluZV9leHByLCBkZWZpbmUsIG5lZ2F0ZWQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChuZWdhdGVkX2JyYW5jaC50ZXN0LCBkZWZpbmVfZXhwcikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChuZWdhdGVkX2JyYW5jaC5kZWZpbmUsIGRlZmluZSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG5lZ2F0ZWRfYnJhbmNoLm5lZ2F0ZWQpCisgICAgICAgIGVsc2VfYnJhbmNoID0gRWxzZUNv
bmRpdGlvbkJyYW5jaChjb25kaXRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZGl0
aW9uLmJyYW5jaF9jb3VudCgpLCAwKQorICAgICAgICBjb25kaXRpb24uX2FwcGVuZF9icmFuY2go
dGVzdF9icmFuY2gpCisgICAgICAgIGNvbmRpdGlvbi5fYXBwZW5kX2JyYW5jaChkZWZpbmVfYnJh
bmNoKQorICAgICAgICBjb25kaXRpb24uX2FwcGVuZF9icmFuY2gobmVnYXRlZF9icmFuY2gpCisg
ICAgICAgIGNvbmRpdGlvbi5fYXBwZW5kX2JyYW5jaChlbHNlX2JyYW5jaCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb25kaXRpb24uYnJhbmNoX2NvdW50KCksIDQpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSh0ZXN0X2JyYW5jaC5wYXJlbnRfc3RhdGVtZW50X2xpc3QoKSBpcyBzdGF0ZW1l
bnRfbGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRlZmluZV9icmFuY2gucGFyZW50X3N0
YXRlbWVudF9saXN0KCkgaXMgc3RhdGVtZW50X2xpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShuZWdhdGVkX2JyYW5jaC5wYXJlbnRfc3RhdGVtZW50X2xpc3QoKSBpcyBzdGF0ZW1lbnRfbGlz
dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVsc2VfYnJhbmNoLnBhcmVudF9zdGF0ZW1lbnRf
bGlzdCgpIGlzIHN0YXRlbWVudF9saXN0KQorCisgICAgZGVmIHRlc3RfTWFrZUZpbGVfYW5kX01h
a2VQcm9qZWN0KHNlbGYpOgorICAgICAgICBmaWxlX25hbWUgPSAncHJvamVjdC5tYWtlJworICAg
ICAgICBmaWxlID0gc2VsZi5jb21tb24uY3JlYXRlX2ZpbGUoc2VsZi5jb21tb24uc2NtX2RpcmVj
dG9yeSwgZmlsZV9uYW1lKQorICAgICAgICBtYWtlX2ZpbGUgPSBNYWtlRmlsZShmaWxlKQorICAg
ICAgICBwcm9qZWN0ID0gTWFrZVByb2plY3Qoc2VsZi5jb21tb24sIG1ha2VfZmlsZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKG1ha2VfZmlsZS5wYXJlbnRfc3RhdGVtZW50X2xpc3QoKSBpcyBO
b25lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvamVjdC5yb290X21ha2VfZmlsZSBpcyBt
YWtlX2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHByb2plY3QuYWxsX21ha2Vf
ZmlsZXMpLCAxKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3Qu
bWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcm9qZWN0
L3Byb2plY3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9wcm9qZWN0L3Byb2pl
Y3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjJmOGRjNGZhZWVjY2NhMWU3ZDE4MGI5ZWFiYTJlZmFlYTdmNjAz
YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3Byb2pl
Y3QvcHJvamVjdC5weQpAQCAtMCwwICsxLDMwMSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworZnJvbSB3ZWJraXRweS5jb21tb24ucHJvamVjdC5jb21tb24gaW1wb3J0
ICoKKworCitjbGFzcyBQcm9qZWN0RmlsZVJlZmVyZW5jZShvYmplY3QpOgorICAgICIiIgorICAg
IENsYXNzIGhvbGRpbmcgYSBwcm9qZWN0LXNwZWNpZmljIHJlZmVyZW5jZSB0byBhIENvbW1vbkZp
bGUuIFRoaXMgYWxsb3dzIHByb2plY3Qtc3BlY2lmaWMgImVtYmVsbGlzaG1lbnRzIiBzdWNoIGFz
IGNvbW1lbnRzLgorICAgIEV2ZW4gd2l0aGluIGEgc2luZ2xlIHByb2plY3QsIG11bHRpcGxlIHJl
ZmVyZW5jZXMgbWF5IGV4aXN0IHRvIHRoZSBzYW1lIGZpbGUgKGUuZy4sIGluIG1ha2UgZmlsZXMg
dW5kZXIgZGlmZmVyZW50IGNvbmRpdGlvbnMpLgorICAgICIiIgorICAgIElEX0NPVU5URVIgPSAw
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZT1Ob25lKToKKyAgICAgICAgYXNzZXJ0IG5v
dCBmaWxlIG9yIGlzaW5zdGFuY2UoZmlsZSwgQ29tbW9uRmlsZSkKKyAgICAgICAgc2VsZi5maWxl
ID0gZmlsZQorICAgICAgICBQcm9qZWN0RmlsZVJlZmVyZW5jZS5JRF9DT1VOVEVSICs9IDEKKyAg
ICAgICAgc2VsZi5faWQgPSBQcm9qZWN0RGlyZWN0b3J5UmVmZXJlbmNlLklEX0NPVU5URVIKKwor
ICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5faWQpCisK
KyAgICBkZWYgaXNfdmFsaWQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmZpbGUgYW5kIHNl
bGYuZmlsZS5pc192YWxpZCgpCisKKyAgICBkZWYgX3NldF9maWxlKHNlbGYsIGZpbGUpOgorICAg
ICAgICBhc3NlcnQgZmlsZQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShmaWxlLCBDb21tb25G
aWxlKQorICAgICAgICBhc3NlcnQgbm90IHNlbGYuZmlsZQorICAgICAgICBzZWxmLmZpbGUgPSBm
aWxlCisKKworY2xhc3MgUHJvamVjdEZpbGVSZWZlcmVuY2VDb250YWluZXIob2JqZWN0KToKKyAg
ICAiIiIKKyAgICBDbGFzcyBjb250YWluaW5nIFByb2plY3RGaWxlUmVmZXJlbmNlIG9iamVjdHMu
CisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfcmVm
ZXJlbmNlcyA9IHt9ICAjIG1hcCB7IENvbW1vbkZpbGUgLT4gUHJvamVjdEZpbGVSZWZlcmVuY2Ug
fQorCisgICAgZGVmIF9hZGRfZmlsZV9yZWZlcmVuY2Uoc2VsZiwgZmlsZV9yZWZlcmVuY2UpOgor
ICAgICAgICBhc3NlcnQgZmlsZV9yZWZlcmVuY2UKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
ZmlsZV9yZWZlcmVuY2UsIFByb2plY3RGaWxlUmVmZXJlbmNlKQorICAgICAgICBhc3NlcnQgZmls
ZV9yZWZlcmVuY2UuZmlsZQorICAgICAgICBhc3NlcnQgZmlsZV9yZWZlcmVuY2UuZmlsZSBub3Qg
aW4gc2VsZi5maWxlX3JlZmVyZW5jZXMKKyAgICAgICAgc2VsZi5maWxlX3JlZmVyZW5jZXNbZmls
ZV9yZWZlcmVuY2UuZmlsZV0gPSBmaWxlX3JlZmVyZW5jZQorCisgICAgZGVmIF9yZW1vdmVfZmls
ZV9yZWZlcmVuY2Uoc2VsZiwgZmlsZV9yZWZlcmVuY2UpOgorICAgICAgICBhc3NlcnQgZmlsZV9y
ZWZlcmVuY2UKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZmlsZV9yZWZlcmVuY2UsIFByb2pl
Y3RGaWxlUmVmZXJlbmNlKQorICAgICAgICBhc3NlcnQgZmlsZV9yZWZlcmVuY2UuZmlsZSBpbiBz
ZWxmLmZpbGVfcmVmZXJlbmNlcworICAgICAgICBkZWwgc2VsZi5maWxlX3JlZmVyZW5jZXNbZmls
ZV9yZWZlcmVuY2UuZmlsZV0KKworICAgIGRlZiBpc192YWxpZChzZWxmKToKKyAgICAgICAgcmV0
dXJuIFRydWUKKworICAgIGRlZiBpc19lbXB0eShzZWxmKToKKyAgICAgICAgcmV0dXJuIG5vdCBz
ZWxmLmZpbGVfcmVmZXJlbmNlcworCisgICAgZGVmIGZpbGVfcmVmZXJlbmNlc19jb3VudChzZWxm
KToKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmZpbGVfcmVmZXJlbmNlcykKKworICAgIGRlZiBj
b250YWluc19yZWZlcmVuY2VfdG9fZmlsZShzZWxmLCBmaWxlKToKKyAgICAgICAgcmV0dXJuIGZp
bGUgaW4gc2VsZi5maWxlX3JlZmVyZW5jZXMKKworCitjbGFzcyBQcm9qZWN0RGlyZWN0b3J5UmVm
ZXJlbmNlKG9iamVjdCk6CisgICAgIiIiCisgICAgQ2xhc3MgaG9sZGluZyBhIHByb2plY3Qtc3Bl
Y2lmaWMgcmVmZXJlbmNlIHRvIGEgQ29tbW9uRGlyZWN0b3J5LiBUaGlzIGFsbG93cyBwcm9qZWN0
LXNwZWNpZmljICJlbWJlbGxpc2htZW50cyIgc3VjaCBhcyBjb21tZW50cy4KKyAgICAiIiIKKyAg
ICBJRF9DT1VOVEVSID0gMAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpcmVjdG9yeT1Ob25l
KToKKyAgICAgICAgYXNzZXJ0IG5vdCBkaXJlY3Rvcnkgb3IgaXNpbnN0YW5jZShkaXJlY3Rvcnks
IENvbW1vbkRpcmVjdG9yeSkKKyAgICAgICAgc2VsZi5kaXJlY3RvcnkgPSBkaXJlY3RvcnkKKyAg
ICAgICAgUHJvamVjdERpcmVjdG9yeVJlZmVyZW5jZS5JRF9DT1VOVEVSICs9IDEKKyAgICAgICAg
c2VsZi5faWQgPSBQcm9qZWN0RGlyZWN0b3J5UmVmZXJlbmNlLklEX0NPVU5URVIKKworICAgIGRl
ZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5faWQpCisKKyAgICBk
ZWYgaXNfdmFsaWQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmRpcmVjdG9yeSBhbmQgc2Vs
Zi5kaXJlY3RvcnkuaXNfdmFsaWQoKQorCisgICAgZGVmIF9zZXRfZGlyZWN0b3J5KHNlbGYsIGRp
cmVjdG9yeSk6CisgICAgICAgIGFzc2VydCBub3QgZGlyZWN0b3J5IG9yIGlzaW5zdGFuY2UoZGly
ZWN0b3J5LCBDb21tb25EaXJlY3RvcnkpCisgICAgICAgIHNlbGYuZGlyZWN0b3J5ID0gZGlyZWN0
b3J5CisKKworY2xhc3MgUHJvamVjdERpcmVjdG9yeVJlZmVyZW5jZUNvbnRhaW5lcihvYmplY3Qp
OgorICAgICIiIgorICAgIENsYXNzIGNvbnRhaW5pbmcgUHJvamVjdERpcmVjdG9yeVJlZmVyZW5j
ZSBvYmplY3RzLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5kaXJlY3RvcnlfcmVmZXJlbmNlcyA9IHt9ICAjIG1hcCB7IENvbW1vbkRpcmVjdG9yeSAtPiBQ
cm9qZWN0RGlyZWN0b3J5UmVmZXJlbmNlIH0KKworICAgIGRlZiBfYWRkX2RpcmVjdG9yeV9yZWZl
cmVuY2Uoc2VsZiwgZGlyZWN0b3J5X3JlZmVyZW5jZSk6CisgICAgICAgIGFzc2VydCBkaXJlY3Rv
cnlfcmVmZXJlbmNlCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRpcmVjdG9yeV9yZWZlcmVu
Y2UsIFByb2plY3REaXJlY3RvcnlSZWZlcmVuY2UpCisgICAgICAgIGFzc2VydCBkaXJlY3Rvcnlf
cmVmZXJlbmNlLmRpcmVjdG9yeQorICAgICAgICBhc3NlcnQgZGlyZWN0b3J5X3JlZmVyZW5jZS5k
aXJlY3Rvcnkgbm90IGluIHNlbGYuZGlyZWN0b3J5X3JlZmVyZW5jZXMKKyAgICAgICAgc2VsZi5k
aXJlY3RvcnlfcmVmZXJlbmNlc1tkaXJlY3RvcnlfcmVmZXJlbmNlLmRpcmVjdG9yeV0gPSBkaXJl
Y3RvcnlfcmVmZXJlbmNlCisKKyAgICBkZWYgX3JlbW92ZV9kaXJlY3RvcnlfcmVmZXJlbmNlKHNl
bGYsIGRpcmVjdG9yeV9yZWZlcmVuY2UpOgorICAgICAgICBhc3NlcnQgZGlyZWN0b3J5X3JlZmVy
ZW5jZQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkaXJlY3RvcnlfcmVmZXJlbmNlLCBQcm9q
ZWN0RGlyZWN0b3J5UmVmZXJlbmNlKQorICAgICAgICBhc3NlcnQgZGlyZWN0b3J5X3JlZmVyZW5j
ZS5kaXJlY3RvcnkKKyAgICAgICAgYXNzZXJ0IGRpcmVjdG9yeV9yZWZlcmVuY2UuZGlyZWN0b3J5
IGluIHNlbGYuZGlyZWN0b3J5X3JlZmVyZW5jZXMKKyAgICAgICAgZGVsIHNlbGYuZGlyZWN0b3J5
X3JlZmVyZW5jZXNbZGlyZWN0b3J5X3JlZmVyZW5jZS5kaXJlY3RvcnldCisKKyAgICBkZWYgaXNf
dmFsaWQoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgaXNfZW1wdHkoc2Vs
Zik6CisgICAgICAgIHJldHVybiBub3Qgc2VsZi5kaXJlY3RvcnlfcmVmZXJlbmNlcworCisgICAg
ZGVmIGRpcmVjdG9yeV9yZWZlcmVuY2VzX2NvdW50KHNlbGYpOgorICAgICAgICByZXR1cm4gbGVu
KHNlbGYuZGlyZWN0b3J5X3JlZmVyZW5jZXMpCisKKyAgICBkZWYgY29udGFpbnNfcmVmZXJlbmNl
X3RvX2RpcmVjdG9yeShzZWxmLCBkaXJlY3RvcnkpOgorICAgICAgICByZXR1cm4gZGlyZWN0b3J5
IGluIHNlbGYuZGlyZWN0b3J5X3JlZmVyZW5jZXMKKworCitjbGFzcyBQcm9qZWN0UmVhZGVyKG9i
amVjdCk6CisgICAgIiIiCisgICAgQmFzZSBjbGFzcyBmb3IgYSBwcm9qZWN0IGZpbGUgc2VyaWFs
aXplciAocmVhZGVyKS4gRG9lcyBiYXNpYyBzZXR1cCBiZWZvcmUgY2FsbGluZyBwYXJzZV9wcm9q
ZWN0X2ZpbGUoKS4KKworICAgIERlcml2ZWQgY2xhc3NlcyBNVVNUIGRlZmluZToKKyAgICAtKSBh
IGZ1bmN0aW9uICdwYXJzZV9wcm9qZWN0X2ZpbGUoc2VsZiknIHRoYXQgcmVhZHMgaW4gdGhlIGZp
bGUgYW5kIHBvcHVsYXRlcyBzZWxmLnByb2plY3QKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgcHJvamVjdCwgZmlsZXN5c3RlbT1Ob25lKToKKyAgICAgICAgYXNzZXJ0IHByb2plY3QK
KyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocHJvamVjdCwgUHJvamVjdCkKKyAgICAgICAgc2Vs
Zi5wcm9qZWN0ID0gcHJvamVjdAorICAgICAgICBzZWxmLmNvbW1vbiA9IHByb2plY3QuY29tbW9u
CisgICAgICAgIHNlbGYuZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0gb3IgcHJvamVjdC5jb21tb24u
ZmlsZXN5c3RlbQorICAgICAgICBzZWxmLmZpbGUgPSBOb25lCisKKyAgICBkZWYgZGVidWcoc2Vs
ZiwgbXNnKToKKyAgICAgICAgIyBUT0RPOiBhZGQgSUQgb2YgcHJvamVjdCB0byBzaG93IHdoaWNo
IHByb2plY3QgdGhlIG1lc3NhZ2UgaXMgZm9yCisgICAgICAgIHNlbGYuY29tbW9uLmRlYnVnKG1z
ZykKKworICAgIGRlZiBpbmZvKHNlbGYsIG1zZyk6CisgICAgICAgICMgVE9ETzogYWRkIElEIG9m
IHByb2plY3QgdG8gc2hvdyB3aGljaCBwcm9qZWN0IHRoZSBtZXNzYWdlIGlzIGZvcgorICAgICAg
ICBzZWxmLmNvbW1vbi5pbmZvKG1zZykKKworICAgIGRlZiB3YXJuaW5nKHNlbGYsIG1zZyk6Cisg
ICAgICAgICMgVE9ETzogYWRkIElEIG9mIHByb2plY3QgdG8gc2hvdyB3aGljaCBwcm9qZWN0IHRo
ZSBtZXNzYWdlIGlzIGZvcgorICAgICAgICBzZWxmLmNvbW1vbi53YXJuaW5nKG1zZykKKworICAg
IGRlZiBlcnJvcihzZWxmLCBtc2cpOgorICAgICAgICAjIFRPRE86IGFkZCBJRCBvZiBwcm9qZWN0
IHRvIHNob3cgd2hpY2ggcHJvamVjdCB0aGUgbWVzc2FnZSBpcyBmb3IKKyAgICAgICAgc2VsZi5j
b21tb24uZXJyb3IobXNnKQorCisgICAgZGVmIHZlcmlmeShzZWxmLCBleHByLCBtc2cpOgorICAg
ICAgICAjIFRPRE86IGFkZCBJRCBvZiBwcm9qZWN0IHRvIHNob3cgd2hpY2ggcHJvamVjdCB0aGUg
bWVzc2FnZSBpcyBmb3IKKyAgICAgICAgc2VsZi5jb21tb24udmVyaWZ5KGV4cHIsIG1zZykKKwor
ICAgIGRlZiByZWFkX3Byb2plY3RfZmlsZShzZWxmLCBwcm9qZWN0X2ZpbGVfcGF0aCk6CisgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQi
KQorCisgICAgZGVmIHJlYWQoc2VsZiwgcHJvamVjdF9maWxlX3BhdGg9Tm9uZSk6CisgICAgICAg
ICIiIgorICAgICAgICBSZWFkIGEgcHJvamVjdCBmaWxlIG9yIG1ha2VmaWxlIGZyb20gZGlzYyBh
bmQgcGFyc2UgaXQuCisgICAgICAgIHByb2plY3RfZmlsZV9wYXRoIG11c3QgY29udGFpbiB0aGUg
cHJvamVjdCBmaWxlIGl0c2VsZiwgbm90IGp1c3QgYSBkaXJlY3RvcnkuCisgICAgICAgICIiIgor
ICAgICAgICBhc3NlcnQgc2VsZi5wcm9qZWN0LmZpbGUKKyAgICAgICAgYXNzZXJ0IHNlbGYucHJv
amVjdC5maWxlLm5hbWUKKyAgICAgICAgaWYgcHJvamVjdF9maWxlX3BhdGg6CisgICAgICAgICAg
ICBzZWxmLnZlcmlmeShzZWxmLmZpbGVzeXN0ZW0uaXNmaWxlKHByb2plY3RfZmlsZV9wYXRoKSwg
IlNwZWNpZmllZCBwcm9qZWN0IGZpbGUgcGF0aCAnJXMnIG5vdCBmb3VuZCBvciBub3QgYSBmaWxl
ISIgJSBwcm9qZWN0X2ZpbGVfcGF0aCkKKyAgICAgICAgICAgIHByb2plY3RfZmlsZV9wYXRoID0g
c2VsZi5jb21tb24uZmlsZXN5c3RlbS5hYnNwYXRoKHNlbGYuY29tbW9uLmZpbGVzeXN0ZW0uZXhw
YW5kdXNlcihwcm9qZWN0X2ZpbGVfcGF0aCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBw
cm9qZWN0X2ZpbGVfcGF0aCA9IHNlbGYuY29tbW9uLmZpbGVfYWJzcGF0aChzZWxmLnByb2plY3Qu
ZmlsZSwgc2VsZi5jb21tb24uZmlsZXN5c3RlbS5zZXAsIHtzZWxmLmNvbW1vbi5zY21fZGlyZWN0
b3J5OiBzZWxmLmNvbW1vbi5zY21fZGlyZWN0b3J5LmFic3BhdGh9KQorICAgICAgICBzZWxmLnJl
YWRfcHJvamVjdF9maWxlKHByb2plY3RfZmlsZV9wYXRoKQorCisKK2NsYXNzIFByb2plY3RXcml0
ZXIob2JqZWN0KToKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIGZvciBhIHByb2plY3QgZmlsZSBz
ZXJpYWxpemVyICh3cml0ZXIpLiBEb2VzIGJhc2ljIHNldHVwIGJlZm9yZSBjYWxsaW5nIHdyaXRl
X3Byb2plY3RfZmlsZSgpLgorCisgICAgRGVyaXZlZCBjbGFzc2VzIE1VU1QgZGVmaW5lOgorICAg
IC0pIGEgZnVuY3Rpb24gJ3dyaXRlX3Byb2plY3RfZmlsZShzZWxmLCBwcm9qZWN0LCBmaWxlX3Bh
dGgpJyB0aGF0IHdyaXRlcyB0aGUgcHJvamVjdCBpbnRvIHRoZSBwYXNzZWQtaW4gZmlsZQorICAg
ICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9qZWN0LCBmaWxlc3lzdGVtPU5vbmUpOgor
ICAgICAgICBhc3NlcnQgcHJvamVjdAorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwcm9qZWN0
LCBQcm9qZWN0KQorICAgICAgICBzZWxmLmNvbW1vbiA9IHByb2plY3QuY29tbW9uCisgICAgICAg
IHNlbGYucHJvamVjdCA9IHByb2plY3QKKyAgICAgICAgc2VsZi5maWxlc3lzdGVtID0gZmlsZXN5
c3RlbSBvciBwcm9qZWN0LmNvbW1vbi5maWxlc3lzdGVtCisKKyAgICBkZWYgZGVidWcoc2VsZiwg
bXNnKToKKyAgICAgICAgIyBUT0RPOiBhZGQgSUQgb2YgcHJvamVjdCB0byBzaG93IHdoaWNoIHBy
b2plY3QgdGhlIG1lc3NhZ2UgaXMgZm9yCisgICAgICAgIHNlbGYuY29tbW9uLmRlYnVnKG1zZykK
KworICAgIGRlZiBpbmZvKHNlbGYsIG1zZyk6CisgICAgICAgICMgVE9ETzogYWRkIElEIG9mIHBy
b2plY3QgdG8gc2hvdyB3aGljaCBwcm9qZWN0IHRoZSBtZXNzYWdlIGlzIGZvcgorICAgICAgICBz
ZWxmLmNvbW1vbi5pbmZvKG1zZykKKworICAgIGRlZiB3YXJuaW5nKHNlbGYsIG1zZyk6CisgICAg
ICAgICMgVE9ETzogYWRkIElEIG9mIHByb2plY3QgdG8gc2hvdyB3aGljaCBwcm9qZWN0IHRoZSBt
ZXNzYWdlIGlzIGZvcgorICAgICAgICBzZWxmLmNvbW1vbi53YXJuaW5nKG1zZykKKworICAgIGRl
ZiBlcnJvcihzZWxmLCBtc2cpOgorICAgICAgICAjIFRPRE86IGFkZCBJRCBvZiBwcm9qZWN0IHRv
IHNob3cgd2hpY2ggcHJvamVjdCB0aGUgbWVzc2FnZSBpcyBmb3IKKyAgICAgICAgc2VsZi5jb21t
b24uZXJyb3IobXNnKQorCisgICAgZGVmIHZlcmlmeShzZWxmLCBleHByLCBtc2cpOgorICAgICAg
ICAjIFRPRE86IGFkZCBJRCBvZiBwcm9qZWN0IHRvIHNob3cgd2hpY2ggcHJvamVjdCB0aGUgbWVz
c2FnZSBpcyBmb3IKKyAgICAgICAgc2VsZi5jb21tb24udmVyaWZ5KGV4cHIsIG1zZykKKworICAg
IGRlZiB3cml0ZV9wcm9qZWN0X2ZpbGUoc2VsZiwgcHJvamVjdF9maWxlX3BhdGgpOgorICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IikK
KworICAgIGRlZiB3cml0ZShzZWxmLCBwcm9qZWN0X2ZpbGVfcGF0aD1Ob25lKToKKyAgICAgICAg
IiIiCisgICAgICAgIFdyaXRlIGEgcHJvamVjdCBmaWxlIG9yIG1ha2VmaWxlIHRvIGRpc2MuCisg
ICAgICAgICIiIgorICAgICAgICBhc3NlcnQgc2VsZi5wcm9qZWN0LmZpbGUKKyAgICAgICAgYXNz
ZXJ0IHNlbGYucHJvamVjdC5maWxlLm5hbWUKKyAgICAgICAgaWYgbm90IHByb2plY3RfZmlsZV9w
YXRoOgorICAgICAgICAgICAgIyBObyBuZXcgcGF0aCBnaXZlbjogd3JpdGUgYmFjayB0byB0aGUg
b3JpZ2luYWwgZmlsZS4KKyAgICAgICAgICAgIHByb2plY3RfZmlsZV9wYXRoID0gc2VsZi5jb21t
b24uZmlsZV9hYnNwYXRoKHNlbGYucHJvamVjdC5maWxlLCBzZWxmLmNvbW1vbi5maWxlc3lzdGVt
LnNlcCwge3NlbGYuY29tbW9uLnNjbV9kaXJlY3Rvcnk6IHNlbGYuY29tbW9uLnNjbV9kaXJlY3Rv
cnkuYWJzcGF0aH0pCisgICAgICAgIGVsaWYgc2VsZi5maWxlc3lzdGVtLmlzZGlyKHByb2plY3Rf
ZmlsZV9wYXRoKToKKyAgICAgICAgICAgICMgR2l2ZW4gcGF0aCBpcyBqdXN0IGEgZGlyZWN0b3J5
OiBhcHBlbmQgb3JpZ2luYWwgZmlsZSBuYW1lLgorICAgICAgICAgICAgcHJvamVjdF9maWxlX3Bh
dGggPSBzZWxmLmZpbGVzeXN0ZW0uam9pbihzZWxmLmZpbGVzeXN0ZW0uYWJzcGF0aChwcm9qZWN0
X2ZpbGVfcGF0aCksIHNlbGYucHJvamVjdC5maWxlLm5hbWUpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBwcm9qZWN0X2ZpbGVfcGF0aCA9IHNlbGYuY29tbW9uLmZpbGVzeXN0ZW0uYWJzcGF0
aChzZWxmLmNvbW1vbi5maWxlc3lzdGVtLmV4cGFuZHVzZXIocHJvamVjdF9maWxlX3BhdGgpKQor
ICAgICAgICBzZWxmLndyaXRlX3Byb2plY3RfZmlsZShwcm9qZWN0X2ZpbGVfcGF0aCkKKworCitj
bGFzcyBQcm9qZWN0KG9iamVjdCk6CisgICAgIiIiCisgICAgQmFzZSBjbGFzcyBmb3IgcHJvamVj
dCBjbGFzc2VzLgorICAgIEFzIGJhc2UgZnVuY3Rpb25hbGl0eSBpdCBzdG9yZXMgcmVmZXJlbmNl
cyB0byBhbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRoYXQgYXJlIGxpc3RlZCBpbiB0aGUgcHJv
amVjdCBmaWxlCisgICAgKGRpcmVjdGx5LCBub3QgYXMgUHJvamVjdEZpbGVSZWZlcmVuY2UvUHJv
amVjdERpcmVjdG9yeVJlZmVyZW5jZSkuCisgICAgIiIiCisgICAgSURfQ09VTlRFUiA9IDAKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21tb24sIGZpbGUsIHNwZWNpYWxfZGlyZWN0b3JpZXM9
Tm9uZSwgcHJvamVjdF9uYW1lPU5vbmUpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb21t
b24sIENvbW1vbkluZm8pCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGZpbGUsIENvbW1vbkZp
bGUpCisgICAgICAgIHNlbGYuY29tbW9uID0gY29tbW9uCisgICAgICAgIHNlbGYuZmlsZSA9IGZp
bGUKKyAgICAgICAgc2VsZi52YXJpYWJsZV90b19kaXJlY3RvcnkgPSBzcGVjaWFsX2RpcmVjdG9y
aWVzIG9yIHt9CisgICAgICAgIHNlbGYuZGlyZWN0b3J5X3RvX3ZhcmlhYmxlID0gZGljdChtYXAo
bGFtYmRhIChrLCB2KTogKHYsIGspLCBzZWxmLnZhcmlhYmxlX3RvX2RpcmVjdG9yeS5pdGVtcygp
KSkKKyAgICAgICAgc2VsZi5uYW1lID0gcHJvamVjdF9uYW1lIG9yIGNvbW1vbi5wcm9qZWN0X25h
bWUKKyAgICAgICAgUHJvamVjdC5JRF9DT1VOVEVSICs9IDEKKyAgICAgICAgc2VsZi5faWQgPSBQ
cm9qZWN0LklEX0NPVU5URVIKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0
dXJuIGhhc2goc2VsZi5faWQpCisKKyAgICBkZWYgZGVidWcoc2VsZiwgbXNnKToKKyAgICAgICAg
IyBUT0RPOiBhZGQgSUQgb2YgcHJvamVjdCB0byBzaG93IHdoaWNoIHByb2plY3QgdGhlIG1lc3Nh
Z2UgaXMgZm9yCisgICAgICAgIHNlbGYuY29tbW9uLmRlYnVnKG1zZykKKworICAgIGRlZiBpbmZv
KHNlbGYsIG1zZyk6CisgICAgICAgICMgVE9ETzogYWRkIElEIG9mIHByb2plY3QgdG8gc2hvdyB3
aGljaCBwcm9qZWN0IHRoZSBtZXNzYWdlIGlzIGZvcgorICAgICAgICBzZWxmLmNvbW1vbi5pbmZv
KG1zZykKKworICAgIGRlZiB3YXJuaW5nKHNlbGYsIG1zZyk6CisgICAgICAgICMgVE9ETzogYWRk
IElEIG9mIHByb2plY3QgdG8gc2hvdyB3aGljaCBwcm9qZWN0IHRoZSBtZXNzYWdlIGlzIGZvcgor
ICAgICAgICBzZWxmLmNvbW1vbi53YXJuaW5nKG1zZykKKworICAgIGRlZiBlcnJvcihzZWxmLCBt
c2cpOgorICAgICAgICAjIFRPRE86IGFkZCBJRCBvZiBwcm9qZWN0IHRvIHNob3cgd2hpY2ggcHJv
amVjdCB0aGUgbWVzc2FnZSBpcyBmb3IKKyAgICAgICAgc2VsZi5jb21tb24uZXJyb3IobXNnKQor
CisgICAgZGVmIHZlcmlmeShzZWxmLCBleHByLCBtc2cpOgorICAgICAgICAjIFRPRE86IGFkZCBJ
RCBvZiBwcm9qZWN0IHRvIHNob3cgd2hpY2ggcHJvamVjdCB0aGUgbWVzc2FnZSBpcyBmb3IKKyAg
ICAgICAgc2VsZi5jb21tb24udmVyaWZ5KGV4cHIsIG1zZykKKworICAgICMgLS0tIHByb2plY3Qg
bWFuaXB1bGF0aW9uIC0tLQorCisgICAgZGVmIGFkZF9maWxlKHNlbGYsIGZpbGUsIG9wdGlvbnMp
OgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzdWJjbGFzc2VzIG11c3QgaW1w
bGVtZW50IikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3Byb2pl
Y3QvcHJvamVjdF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3By
b2plY3QvcHJvamVjdF91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTZiNDEzODBlZWY0YmFiODNm
NGZkN2NjMTEzMjQ3OTViYWFkYzJjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vcHJvamVjdC9wcm9qZWN0X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsODIg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVz
dAorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5wcm9qZWN0LmNvbW1vbiBpbXBvcnQgKgorZnJvbSB3
ZWJraXRweS5jb21tb24ucHJvamVjdC5wcm9qZWN0IGltcG9ydCAqCisKKworY2xhc3MgUHJvamVj
dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg
c2VsZi5jb21tb24gPSBDb21tb25JbmZvKCJXZWJDb3JlIikKKworICAgIGRlZiB0ZXN0X2ZpbGVf
cmVmZXJlbmNlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ3Rlc3QuY3BwJworICAgICAgICBmaWxl
ID0gc2VsZi5jb21tb24uY3JlYXRlX2ZpbGUoc2VsZi5jb21tb24uc2NtX2RpcmVjdG9yeSwgbmFt
ZSkKKyAgICAgICAgZmlsZV9yZWZlcmVuY2UgPSBQcm9qZWN0RmlsZVJlZmVyZW5jZShmaWxlKQor
ICAgICAgICBmaWxlX3JlZmVyZW5jZV9jb250YWluZXIgPSBQcm9qZWN0RmlsZVJlZmVyZW5jZUNv
bnRhaW5lcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9yZWZlcmVuY2VfY29udGFp
bmVyLmZpbGVfcmVmZXJlbmNlc19jb3VudCgpLCAwKQorICAgICAgICBmaWxlX3JlZmVyZW5jZV9j
b250YWluZXIuX2FkZF9maWxlX3JlZmVyZW5jZShmaWxlX3JlZmVyZW5jZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChmaWxlX3JlZmVyZW5jZV9jb250YWluZXIuZmlsZV9yZWZlcmVuY2VzX2Nv
dW50KCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlX3JlZmVyZW5jZV9jb250YWlu
ZXIuY29udGFpbnNfcmVmZXJlbmNlX3RvX2ZpbGUoZmlsZSkpCisgICAgICAgIGZpbGVfcmVmZXJl
bmNlX2NvbnRhaW5lci5fcmVtb3ZlX2ZpbGVfcmVmZXJlbmNlKGZpbGVfcmVmZXJlbmNlKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfcmVmZXJlbmNlX2NvbnRhaW5lci5maWxlX3JlZmVy
ZW5jZXNfY291bnQoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaWxlX3JlZmVyZW5j
ZV9jb250YWluZXIuY29udGFpbnNfcmVmZXJlbmNlX3RvX2ZpbGUoZmlsZSkpCisKKyAgICBkZWYg
dGVzdF9kaXJlY3RvcnlfcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ3Rlc3QnCisg
ICAgICAgIGRpcmVjdG9yeSA9IHNlbGYuY29tbW9uLmNyZWF0ZV9zdWJkaXJlY3Rvcnkoc2VsZi5j
b21tb24uc2NtX2RpcmVjdG9yeSwgbmFtZSkKKyAgICAgICAgZGlyZWN0b3J5X3JlZmVyZW5jZSA9
IFByb2plY3REaXJlY3RvcnlSZWZlcmVuY2UoZGlyZWN0b3J5KQorICAgICAgICBkaXJlY3Rvcnlf
cmVmZXJlbmNlX2NvbnRhaW5lciA9IFByb2plY3REaXJlY3RvcnlSZWZlcmVuY2VDb250YWluZXIo
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcmVjdG9yeV9yZWZlcmVuY2VfY29udGFpbmVy
LmRpcmVjdG9yeV9yZWZlcmVuY2VzX2NvdW50KCksIDApCisgICAgICAgIGRpcmVjdG9yeV9yZWZl
cmVuY2VfY29udGFpbmVyLl9hZGRfZGlyZWN0b3J5X3JlZmVyZW5jZShkaXJlY3RvcnlfcmVmZXJl
bmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcmVjdG9yeV9yZWZlcmVuY2VfY29udGFp
bmVyLmRpcmVjdG9yeV9yZWZlcmVuY2VzX2NvdW50KCksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShkaXJlY3RvcnlfcmVmZXJlbmNlX2NvbnRhaW5lci5jb250YWluc19yZWZlcmVuY2VfdG9f
ZGlyZWN0b3J5KGRpcmVjdG9yeSkpCisgICAgICAgIGRpcmVjdG9yeV9yZWZlcmVuY2VfY29udGFp
bmVyLl9yZW1vdmVfZGlyZWN0b3J5X3JlZmVyZW5jZShkaXJlY3RvcnlfcmVmZXJlbmNlKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcmVjdG9yeV9yZWZlcmVuY2VfY29udGFpbmVyLmRpcmVj
dG9yeV9yZWZlcmVuY2VzX2NvdW50KCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGly
ZWN0b3J5X3JlZmVyZW5jZV9jb250YWluZXIuY29udGFpbnNfcmVmZXJlbmNlX3RvX2RpcmVjdG9y
eShkaXJlY3RvcnkpKQorCisgICAgZGVmIHRlc3RfUHJvamVjdChzZWxmKToKKyAgICAgICAgcHJv
amVjdF9uYW1lID0gJ1BST0pFQ1QnCisgICAgICAgIHByb2plY3RfZmlsZV9uYW1lID0gJ3Byb2pl
Y3QucHJvaicKKyAgICAgICAgdmFyaWFibGVfdG9fZGlyZWN0b3J5ID0geyckWCc6IHNlbGYuY29t
bW9uLnNjbV9kaXJlY3Rvcnl9CisgICAgICAgIHByb2plY3RfZmlsZSA9IHNlbGYuY29tbW9uLmNy
ZWF0ZV9maWxlKHNlbGYuY29tbW9uLnNjbV9kaXJlY3RvcnksIHByb2plY3RfZmlsZV9uYW1lKQor
ICAgICAgICBwcm9qZWN0ID0gUHJvamVjdChzZWxmLmNvbW1vbiwgcHJvamVjdF9maWxlLCB2YXJp
YWJsZV90b19kaXJlY3RvcnksIHByb2plY3RfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwcm9qZWN0Lm5hbWUsIHByb2plY3RfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBy
b2plY3QuZmlsZSBpcyBwcm9qZWN0X2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9q
ZWN0LmZpbGUuZGlyZWN0b3J5IGlzIHNlbGYuY29tbW9uLnNjbV9kaXJlY3RvcnkpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSgnJFgnIGluIHByb2plY3QudmFyaWFibGVfdG9fZGlyZWN0b3J5KQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5jb21tb24uc2NtX2RpcmVjdG9yeSBpbiBwcm9q
ZWN0LmRpcmVjdG9yeV90b192YXJpYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
LmNvbW1vbi5kaXJlY3RvcnlfYWJzcGF0aChwcm9qZWN0LmZpbGUuZGlyZWN0b3J5LCAnLycsIHBy
b2plY3QuZGlyZWN0b3J5X3RvX3ZhcmlhYmxlKSwgJyRYJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzZWxmLmNvbW1vbi5maWxlX2Fic3BhdGgocHJvamVjdF9maWxlLCAnLycsIHByb2plY3Qu
ZGlyZWN0b3J5X3RvX3ZhcmlhYmxlKSwgJyRYLycgKyBwcm9qZWN0X2ZpbGVfbmFtZSkKKworCitp
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>
<flag name="review"
          id="138835"
          type_id="1"
          status="-"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>