<?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>20815</bug_id>
          
          <creation_ts>2008-09-12 16:42:36 -0700</creation_ts>
          <short_desc>&apos;arguments&apos; object creation is non-optimal</short_desc>
          <delta_ts>2008-09-21 18:53:26 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>20813</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90988</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-12 16:42:36 -0700</bug_when>
    <thetext>The V8 Raytrace benchmark depends quite a bit on the creation of the arguments object. The V8 implementors deliberately deviated from the language spec on this issue, so that writing to the arguments object does not affect the actual function arguments, only other uses of the arguments object. This would allow us to avoid creating an activation for every function that uses the arguments object, so we should consider going with them on this spec deviation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91025</commentid>
    <comment_count>1</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-12 22:22:00 -0700</bug_when>
    <thetext>I&apos;m assigning this to myself. I&apos;ll probably just replace the arguments object with a plain array and see what kind of speedup we can get, and then worry about the semantics. I will hold off on eliminating the activation for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91472</commentid>
    <comment_count>2</comment_count>
      <attachid>23497</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-17 00:31:28 -0700</bug_when>
    <thetext>Created attachment 23497
Patch in progress

Here is a patch in progress. It passes all tests and works fine, except when run on the V8 tests it crashes in the register array marking portion of JSVariableObject. This seems to suggest that I copied too many registers. When I comment out that code, I get about a 25% speedup on Raytrace. Another 25% or so is available by making it a JSArray (which is unsound, of course) due to the fast path for array access in numerous places.

I&apos;ll try to fix this so it can land soon, but it may not be tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91478</commentid>
    <comment_count>3</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-17 03:26:34 -0700</bug_when>
    <thetext>So, it turns out that I misunderstood the calling convention in the case of extra arguments. I was copying the original arguments vector, the call frame, and the locals. The call frame was probably causing problems in the garbage collector.

Since the arguments aren&apos;t necessarily stored contiguously when there are extra arguments, it is impossible to use array storage naively in the arguments object. It is probably possible to do something involving a separate array for the extra arguments. I will try that tomorrow.

I apologize for my misunderstanding, although our calling convention is a bit weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91974</commentid>
    <comment_count>4</comment_count>
      <attachid>23621</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-21 01:10:25 -0700</bug_when>
    <thetext>Created attachment 23621
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91975</commentid>
    <comment_count>5</comment_count>
      <attachid>23621</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-09-21 01:23:30 -0700</bug_when>
    <thetext>Comment on attachment 23621
Proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91986</commentid>
    <comment_count>6</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-21 05:47:44 -0700</bug_when>
    <thetext>Landed in r36735, with a followup in r36736 to correct the fact that the extraArguments data is never freed.

I&apos;ll close this bug, since the initial problem of fixing our braindead approach to the &apos;arguments&apos; object was fixed, and open new bugs for individual issues that now show up on Shark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91990</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-21 08:39:20 -0700</bug_when>
    <thetext>IndexToNameMap is not a good data structure -- we end up doing an additional malloc/free even though it&apos;s just a short vector. And its interface is in terms of identifiers for no good reason -- there&apos;s no reason to convert indices to identifiers all the time! I think I can speed things up further by resolving those things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92055</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-09-21 18:53:26 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; IndexToNameMap is not a good data structure -- we end up doing an additional
&gt; malloc/free even though it&apos;s just a short vector. And its interface is in terms
&gt; of identifiers for no good reason -- there&apos;s no reason to convert indices to
&gt; identifiers all the time! I think I can speed things up further by resolving 
&gt; those things.

Sounds like Bug 3965.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23497</attachid>
            <date>2008-09-17 00:31:28 -0700</date>
            <delta_ts>2008-09-21 01:10:25 -0700</delta_ts>
            <desc>Patch in progress</desc>
            <filename>arguments.diff</filename>
            <type>text/plain</type>
            <size>8596</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IGtqcy9Bcmd1bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9Bcmd1bWVudHMuY3Bw
CShyZXZpc2lvbiAzNjUyMSkKKysrIGtqcy9Bcmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNywyMiArMzcsMTQgQEAgQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChBcmd1bWVudHMpOwog
Y29uc3QgQ2xhc3NJbmZvIEFyZ3VtZW50czo6aW5mbyA9IHsgIkFyZ3VtZW50cyIsIDAsIDAsIDAg
fTsKIAogLy8gRUNNQSAxMC4xLjgKLUFyZ3VtZW50czo6QXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhl
YywgSlNGdW5jdGlvbiogZnVuY3Rpb24sIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTQWN0aXZhdGlv
biogYWN0aXZhdGlvbikKK0FyZ3VtZW50czo6QXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNG
dW5jdGlvbiogZnVuY3Rpb24sIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIEpTQWN0aXZhdGlvbiogYWN0
aXZhdGlvbiwgaW50IGZpcnN0QXJndW1lbnRJbmRleCkKICAgICA6IEpTT2JqZWN0KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCkpCi0gICAgLCBkKG5ldyBBcmd1
bWVudHNEYXRhKGFjdGl2YXRpb24sIGZ1bmN0aW9uLCBhcmdzKSkKKyAgICAsIGQobmV3IEFyZ3Vt
ZW50c0RhdGEoYWN0aXZhdGlvbiwgZnVuY3Rpb24sIGFyZ3MsIGZpcnN0QXJndW1lbnRJbmRleCkp
CiB7CiAgICAgQVNTRVJUKGFjdGl2YXRpb24pOwogCiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5jYWxsZWUsIGZ1bmN0aW9uLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIGFyZ3Muc2l6ZSgpKSwg
RG9udEVudW0pOwotICAKLSAgICBpbnQgaSA9IDA7Ci0gICAgQXJnTGlzdDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gYXJncy5lbmQoKTsKLSAgICBmb3IgKEFyZ0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gYXJncy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQsICsraSkgewotICAgICAgICBJZGVudGlm
aWVyIG5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpOwotICAgICAgICBpZiAoIWQtPmlu
ZGV4VG9OYW1lTWFwLmlzTWFwcGVkKG5hbWUpKQotICAgICAgICAgICAgcHV0RGlyZWN0KG5hbWUs
ICgqaXQpLmpzVmFsdWUoZXhlYyksIERvbnRFbnVtKTsKLSAgICB9CiB9CiAKIHZvaWQgQXJndW1l
bnRzOjptYXJrKCkgCkBAIC03MCw2ICs2MiwxMyBAQCBKU1ZhbHVlKiBBcmd1bWVudHM6Om1hcHBl
ZEluZGV4R2V0dGVyKEV4CiAKIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKIHsKKyAgICBib29sIGlzQXJyYXlJbmRleDsKKyAgICB1bnNpZ25lZCBpID0gcHJv
cGVydHlOYW1lLnRvQXJyYXlJbmRleCgmaXNBcnJheUluZGV4KTsKKyAgICBpZiAoaXNBcnJheUlu
ZGV4ICYmICFkLT5oYWREZWxldGVzICYmIGkgPCBkLT5pbmRleFRvTmFtZU1hcC5zaXplKCkpIHsK
KyAgICAgICAgZC0+YWN0aXZhdGlvbi0+dW5jaGVja2VkU3ltYm9sVGFibGVHZXQoZC0+Zmlyc3RB
cmd1bWVudEluZGV4ICsgaSwgc2xvdCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwog
ICAgIGlmIChkLT5pbmRleFRvTmFtZU1hcC5pc01hcHBlZChwcm9wZXJ0eU5hbWUpKSB7CiAgICAg
ICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIG1hcHBlZEluZGV4R2V0dGVyKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC04MCw2ICs3OSwxMyBAQCBib29sIEFyZ3VtZW50czo6Z2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTCiAKIHZvaWQgQXJndW1lbnRzOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlLCBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CisgICAgYm9vbCBpc0FycmF5SW5kZXg7CisgICAgdW5zaWduZWQgaSA9IHBy
b3BlcnR5TmFtZS50b0FycmF5SW5kZXgoJmlzQXJyYXlJbmRleCk7CisgICAgaWYgKGlzQXJyYXlJ
bmRleCAmJiAhZC0+aGFkRGVsZXRlcyAmJiBpIDwgZC0+aW5kZXhUb05hbWVNYXAuc2l6ZSgpKSB7
CisgICAgICAgIGQtPmFjdGl2YXRpb24tPnVuY2hlY2tlZFN5bWJvbFRhYmxlUHV0KGQtPmZpcnN0
QXJndW1lbnRJbmRleCArIGksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IGlmIChkLT5pbmRleFRvTmFtZU1hcC5pc01hcHBlZChwcm9wZXJ0eU5hbWUpKQogICAgICAgICBk
LT5hY3RpdmF0aW9uLT5wdXQoZXhlYywgZC0+aW5kZXhUb05hbWVNYXBbcHJvcGVydHlOYW1lXSwg
dmFsdWUsIHNsb3QpOwogICAgIGVsc2UKQEAgLTg4LDYgKzk0LDE1IEBAIHZvaWQgQXJndW1lbnRz
OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb24KIAogYm9vbCBBcmd1bWVudHM6OmRlbGV0ZVByb3Bl
cnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSAKIHsK
KyAgICBpZiAoIWQtPmhhZERlbGV0ZXMpIHsKKyAgICAgICAgZC0+aGFkRGVsZXRlcyA9IHRydWU7
CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGQtPm51bUFyZ3VtZW50czsgKytpKSB7Cisg
ICAgICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpOwor
ICAgICAgICAgICAgaWYgKCFkLT5pbmRleFRvTmFtZU1hcC5pc01hcHBlZChuYW1lKSkKKyAgICAg
ICAgICAgICAgICBwdXREaXJlY3QobmFtZSwgZC0+YWN0aXZhdGlvbi0+dW5jaGVja2VkU3ltYm9s
VGFibGVHZXRWYWx1ZShkLT5maXJzdEFyZ3VtZW50SW5kZXggKyBpKSwgRG9udEVudW0pOworICAg
ICAgICB9CisgICAgfQorCiAgICAgaWYgKGQtPmluZGV4VG9OYW1lTWFwLmlzTWFwcGVkKHByb3Bl
cnR5TmFtZSkpIHsKICAgICAgICAgZC0+aW5kZXhUb05hbWVNYXAudW5NYXAoZXhlYywgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBranMvQXJndW1lbnRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2pzL0FyZ3VtZW50cy5oCShyZXZpc2lvbiAzNjUyMSkKKysrIGtqcy9Bcmd1
bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEFyZ3VtZW50cyA6IHB1YmxpYyBKU09iamVjdCB7CiAgICAgcHVibGljOgot
ICAgICAgICBBcmd1bWVudHMoRXhlY1N0YXRlKiwgSlNGdW5jdGlvbiosIGNvbnN0IEFyZ0xpc3Qm
LCBKU0FjdGl2YXRpb24qKTsKKyAgICAgICAgQXJndW1lbnRzKEV4ZWNTdGF0ZSosIEpTRnVuY3Rp
b24qLCBjb25zdCBBcmdMaXN0JiwgSlNBY3RpdmF0aW9uKiwgaW50IGZpcnN0QXJndW1lbnRJbmRl
eCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKIApAQCAtNDQsMTggKzQ0LDI3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNz
SW5mbyBpbmZvOwogCisgICAgICAgIGludCBmaXJzdEFyZ3VtZW50SW5kZXgoKSBjb25zdCB7IHJl
dHVybiBkLT5maXJzdEFyZ3VtZW50SW5kZXg7IH0KKyAgICAgICAgaW50IG51bUFyZ3VtZW50cygp
IGNvbnN0IHsgcmV0dXJuIGQtPm51bUFyZ3VtZW50czsgfQorCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgc3RhdGljIEpTVmFsdWUqIG1hcHBlZEluZGV4R2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpOwogCiAgICAgICAgIHN0cnVjdCBB
cmd1bWVudHNEYXRhIHsKLSAgICAgICAgICAgIEFyZ3VtZW50c0RhdGEoSlNBY3RpdmF0aW9uKiBh
Y3RpdmF0aW9uXywgSlNGdW5jdGlvbiogZnVuY3Rpb25fLCBjb25zdCBBcmdMaXN0JiBhcmdzXykK
KyAgICAgICAgICAgIEFyZ3VtZW50c0RhdGEoSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uXywgSlNG
dW5jdGlvbiogZnVuY3Rpb25fLCBjb25zdCBBcmdMaXN0JiBhcmdzXywgaW50IGZpcnN0QXJndW1l
bnRJbmRleF8pCiAgICAgICAgICAgICAgICAgOiBhY3RpdmF0aW9uKGFjdGl2YXRpb25fKQogICAg
ICAgICAgICAgICAgICwgaW5kZXhUb05hbWVNYXAoZnVuY3Rpb25fLCBhcmdzXykKKyAgICAgICAg
ICAgICAgICAsIGZpcnN0QXJndW1lbnRJbmRleChmaXJzdEFyZ3VtZW50SW5kZXhfKQorICAgICAg
ICAgICAgICAgICwgbnVtQXJndW1lbnRzKGFyZ3NfLnNpemUoKSkKKyAgICAgICAgICAgICAgICAs
IGhhZERlbGV0ZXMoZmFsc2UpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbjsKICAgICAgICAgICAgIG11dGFibGUgSW5k
ZXhUb05hbWVNYXAgaW5kZXhUb05hbWVNYXA7CisgICAgICAgICAgICBpbnQgZmlyc3RBcmd1bWVu
dEluZGV4OworICAgICAgICAgICAgaW50IG51bUFyZ3VtZW50czsKKyAgICAgICAgICAgIGJvb2wg
aGFkRGVsZXRlczsKICAgICAgICAgfTsKICAgICAgICAgCiAgICAgICAgIE93blB0cjxBcmd1bWVu
dHNEYXRhPiBkOwpJbmRleDoga2pzL0luZGV4VG9OYW1lTWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pz
L0luZGV4VG9OYW1lTWFwLmgJKHJldmlzaW9uIDM2NTIxKQorKysga2pzL0luZGV4VG9OYW1lTWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgaXNNYXBwZWQoY29uc3QgSWRlbnRpZmllciYgaW5kZXgpIGNvbnN0OwogICAgICAg
ICB2b2lkIHVuTWFwKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaW5kZXgpOwog
CisgICAgICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKwogICAg
IHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKICAgICAgICAgSWRlbnRpZmllciog
bV9tYXA7IC8vIEZJTVhFOiB0aGlzIHNob3VsZCBiZSBhbiBPd25BcnJheVB0cgpJbmRleDoga2pz
L0pTQWN0aXZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2pzL0pTQWN0aXZhdGlvbi5jcHAJKHJl
dmlzaW9uIDM2NTIxKQorKysga2pzL0pTQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDExICs1MywxMyBAQCBKU0FjdGl2YXRpb246On5KU0FjdGl2YXRpb24oKQogCiB2b2lkIEpT
QWN0aXZhdGlvbjo6Y29weVJlZ2lzdGVycygpCiB7Ci0gICAgaW50IG51bUxvY2FscyA9IGQoKS0+
ZnVuY3Rpb25Cb2R5LT5nZW5lcmF0ZWRCeXRlQ29kZSgpLm51bUxvY2FsczsKLSAgICBpZiAoIW51
bUxvY2FscykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29weVJlZ2lzdGVyQXJyYXkoZCgpLT5y
ZWdpc3RlcnMgLSBudW1Mb2NhbHMsIG51bUxvY2Fscyk7CisgICAgaWYgKGQoKS0+YXJndW1lbnRz
T2JqZWN0KSB7CisgICAgICAgIGludCBmaXJzdEFyZ3VtZW50SW5kZXggPSBkKCktPmFyZ3VtZW50
c09iamVjdC0+Zmlyc3RBcmd1bWVudEluZGV4KCk7CisgICAgICAgIGNvcHlSZWdpc3RlckFycmF5
KGQoKS0+cmVnaXN0ZXJzICsgZmlyc3RBcmd1bWVudEluZGV4LCAtZmlyc3RBcmd1bWVudEluZGV4
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgbnVtTG9jYWxzID0gZCgpLT5mdW5jdGlvbkJv
ZHktPmdlbmVyYXRlZEJ5dGVDb2RlKCkubnVtTG9jYWxzOworICAgICAgICBjb3B5UmVnaXN0ZXJB
cnJheShkKCktPnJlZ2lzdGVycyAtIG51bUxvY2FscywgbnVtTG9jYWxzKTsKKyAgICB9CiB9CiAK
IGJvb2wgSlNBY3RpdmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTE2
MSw3ICsxNjMsNyBAQCBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBKU0FjdGl2YXRpb246CiAg
ICAgcmV0dXJuIGFyZ3VtZW50c0dldHRlcjsKIH0KIAotSlNPYmplY3QqIEpTQWN0aXZhdGlvbjo6
Y3JlYXRlQXJndW1lbnRzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK0FyZ3VtZW50cyogSlNBY3Rp
dmF0aW9uOjpjcmVhdGVBcmd1bWVudHNPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFJl
Z2lzdGVyKiBjYWxsRnJhbWUgPSBkKCktPnJlZ2lzdGVycyAtIGQoKS0+ZnVuY3Rpb25Cb2R5LT5n
ZW5lcmF0ZWRCeXRlQ29kZSgpLm51bUxvY2FscyAtIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZTsKIApAQCAtMTcxLDcgKzE3Myw3IEBAIEpTT2JqZWN0KiBKU0FjdGl2YXRpb246OmNy
ZWF0ZUFyZ3VtZW50c08KICAgICBleGVjLT5tYWNoaW5lKCktPmdldEFyZ3VtZW50c0RhdGEoY2Fs
bEZyYW1lLCBmdW5jdGlvbiwgYXJndiwgYXJnYyk7CiAKICAgICBBcmdMaXN0IGFyZ3MoYXJndiwg
YXJnYyk7Ci0gICAgcmV0dXJuIG5ldyAoZXhlYykgQXJndW1lbnRzKGV4ZWMsIGZ1bmN0aW9uLCBh
cmdzLCB0aGlzKTsKKyAgICByZXR1cm4gbmV3IChleGVjKSBBcmd1bWVudHMoZXhlYywgZnVuY3Rp
b24sIGFyZ3MsIHRoaXMsIGFyZ3YgLSBkKCktPnJlZ2lzdGVycyk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDoga2pzL0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtqcy9KU0Fj
dGl2YXRpb24uaAkocmV2aXNpb24gMzY1MjEpCisrKyBranMvSlNBY3RpdmF0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFz
cyBBcmd1bWVudHM7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgCiAgICAgY2xhc3MgSlNBY3Rp
dmF0aW9uIDogcHVibGljIEpTVmFyaWFibGVPYmplY3QgewpAQCAtNDgsNyArNDksMjMgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAKKyAgICAgICAg
aW5saW5lIHZvaWQgdW5jaGVja2VkU3ltYm9sVGFibGVHZXQoaW50IGluZGV4LCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNsb3Quc2V0UmVnaXN0ZXJTbG90KCZy
ZWdpc3RlckF0KGluZGV4KSk7CisgICAgICAgIH0KKworICAgICAgICBpbmxpbmUgSlNWYWx1ZSog
dW5jaGVja2VkU3ltYm9sVGFibGVHZXRWYWx1ZShpbnQgaW5kZXgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiByZWdpc3RlckF0KGluZGV4KS5nZXRKU1ZhbHVlKCk7CisgICAgICAgIH0K
KwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBKU1ZhbHVlKiwgUHV0UHJvcGVydHlTbG90Jik7CisKKyAgICAgICAgaW5saW5lIHZvaWQgdW5j
aGVja2VkU3ltYm9sVGFibGVQdXQoaW50IGluZGV4LCBKU1ZhbHVlKiB2YWx1ZSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmVnaXN0ZXJBdChpbmRleCkgPSB2YWx1ZTsKKyAgICAgICAgfQorCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgSlNWYWx1ZSosIHVuc2lnbmVkIGF0dHJpYnV0ZXMpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKIApAQCAtNzEsMTIgKzg4LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gZnVuY3Rpb25C
b2R5OyAvLyBPd25zIHRoZSBzeW1ib2wgdGFibGUgYW5kIGNvZGUgYmxvY2sKLSAgICAgICAgICAg
IEpTT2JqZWN0KiBhcmd1bWVudHNPYmplY3Q7CisgICAgICAgICAgICBBcmd1bWVudHMqIGFyZ3Vt
ZW50c09iamVjdDsKICAgICAgICAgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVl
KiBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFBy
b3BlcnR5U2xvdCYpOwogICAgICAgICBORVZFUl9JTkxJTkUgUHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmMgZ2V0QXJndW1lbnRzR2V0dGVyKCk7Ci0gICAgICAgIE5FVkVSX0lOTElORSBKU09iamVj
dCogY3JlYXRlQXJndW1lbnRzT2JqZWN0KEV4ZWNTdGF0ZSopOworICAgICAgICBORVZFUl9JTkxJ
TkUgQXJndW1lbnRzKiBjcmVhdGVBcmd1bWVudHNPYmplY3QoRXhlY1N0YXRlKik7CiAKICAgICAg
ICAgSlNBY3RpdmF0aW9uRGF0YSogZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTQWN0
aXZhdGlvbkRhdGEqPihKU1ZhcmlhYmxlT2JqZWN0OjpkKTsgfQogICAgIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23621</attachid>
            <date>2008-09-21 01:10:25 -0700</date>
            <delta_ts>2008-09-21 01:23:30 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>arguments.diff</filename>
            <type>text/plain</type>
            <size>30947</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2NzI2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMDgtMDktMjAgIENhbWVyb24g
WndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDIwODE1OiAnYXJndW1lbnRzJyBvYmplY3Qg
Y3JlYXRpb24gaXMgbm9uLW9wdGltYWwKKyAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDgxNT4KKworICAgICAgICBGaXggb3VyIGluZWZmaWNpZW50IHdh
eSBvZiBjcmVhdGluZyB0aGUgYXJndW1lbnRzIG9iamVjdCBieSBvbmx5CisgICAgICAgIGNyZWF0
aW5nIG5hbWVkIHByb3BlcnRpZXMgZm9yIGVhY2ggb2YgdGhlIGFyZ3VtZW50cyBhZnRlciBhIHVz
ZSBvZiB0aGUKKyAgICAgICAgJ2RlbGV0ZScgc3RhdGVtZW50LiBUaGlzIHBhdGNoIGFsc28gc3Bl
ZWRzIHVwIGFjY2VzcyB0byB0aGUgJ2FyZ3VtZW50cycKKyAgICAgICAgb2JqZWN0IHNsaWdodGx5
LCBidXQgaXQgc3RpbGwgZG9lcyBub3QgdXNlIHRoZSBhcnJheSBmYXN0IHBhdGggZm9yCisgICAg
ICAgIGluZGV4ZWQgYWNjZXNzIHRoYXQgZXhpc3RzIGZvciBtYW55IG9wY29kZXMuCisKKyAgICAg
ICAgVGhpcyBpcyBhYm91dCBhIDIwJSBpbXByb3ZlbWVudCBvbiB0aGUgVjggUmF5dHJhY2UgYmVu
Y2htYXJrLCBhbmQgYSAxLjUlCisgICAgICAgIGltcHJvdmVtZW50IG9uIHRoZSBFYXJsZXktQm95
ZXIgYmVuY2htYXJrLCB3aGljaCBnaXZlcyBhIDQlIGltcHJvdmVtZW50CisgICAgICAgIG92ZXJh
bGwuCisKKyAgICAgICAgKiBranMvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1l
bnRzOjpBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6Om1hcmspOgorICAgICAg
ICAoSlNDOjpBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChKU0M6OkFy
Z3VtZW50czo6cHV0KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpkZWxldGVQcm9wZXJ0eSk6
CisgICAgICAgICoga2pzL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OkFy
Z3VtZW50c0RhdGE6OkFyZ3VtZW50c0RhdGEpOgorICAgICAgICAqIGtqcy9JbmRleFRvTmFtZU1h
cC5oOgorICAgICAgICAoSlNDOjpJbmRleFRvTmFtZU1hcDo6c2l6ZSk6CisgICAgICAgICoga2pz
L0pTQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6Y3JlYXRlQXJn
dW1lbnRzT2JqZWN0KToKKyAgICAgICAgKiBranMvSlNBY3RpdmF0aW9uLmg6CisgICAgICAgIChK
U0M6OkpTQWN0aXZhdGlvbjo6dW5jaGVja2VkU3ltYm9sVGFibGVHZXQpOgorICAgICAgICAoSlND
OjpKU0FjdGl2YXRpb246OnVuY2hlY2tlZFN5bWJvbFRhYmxlR2V0VmFsdWUpOgorICAgICAgICAo
SlNDOjpKU0FjdGl2YXRpb246OnVuY2hlY2tlZFN5bWJvbFRhYmxlUHV0KToKKyAgICAgICAgKiBr
anMvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpudW1QYXJhbWV0ZXJz
KToKKwogMjAwOC0wOS0yMCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQXJndW1l
bnRzLmNwcAkocmV2aXNpb24gMzY3MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQXJndW1lbnRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjcgKzM3LDMyIEBAIEFTU0VSVF9DTEFTU19GSVRT
X0lOX0NFTEwoQXJndW1lbnRzKTsKIGNvbnN0IENsYXNzSW5mbyBBcmd1bWVudHM6OmluZm8gPSB7
ICJBcmd1bWVudHMiLCAwLCAwLCAwIH07CiAKIC8vIEVDTUEgMTAuMS44Ci1Bcmd1bWVudHM6OkFy
Z3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBjb25zdCBBcmdM
aXN0JiBhcmdzLCBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24pCitBcmd1bWVudHM6OkFyZ3VtZW50
cyhFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBjb25zdCBBcmdMaXN0JiBh
cmdzLCBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24sIGludCBmaXJzdEFyZ3VtZW50SW5kZXgsIFJl
Z2lzdGVyKiBhcmd2KQogICAgIDogSlNPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5vYmplY3RQcm90b3R5cGUoKSkKLSAgICAsIGQobmV3IEFyZ3VtZW50c0RhdGEoYWN0aXZhdGlv
biwgZnVuY3Rpb24sIGFyZ3MpKQorICAgICwgZChuZXcgQXJndW1lbnRzRGF0YShhY3RpdmF0aW9u
LCBmdW5jdGlvbiwgYXJncywgZmlyc3RBcmd1bWVudEluZGV4KSkKIHsKICAgICBBU1NFUlQoYWN0
aXZhdGlvbik7CiAKICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSwg
ZnVuY3Rpb24sIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoZXhlYywgYXJncy5zaXplKCkpLCBEb250RW51bSk7CiAgIAotICAg
IGludCBpID0gMDsKLSAgICBBcmdMaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBhcmdzLmVuZCgp
OwotICAgIGZvciAoQXJnTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhcmdzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCwgKytpKSB7Ci0gICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElkZW50aWZp
ZXI6OmZyb20oZXhlYywgaSk7Ci0gICAgICAgIGlmICghZC0+aW5kZXhUb05hbWVNYXAuaXNNYXBw
ZWQobmFtZSkpCi0gICAgICAgICAgICBwdXREaXJlY3QobmFtZSwgKCppdCkuanNWYWx1ZShleGVj
KSwgRG9udEVudW0pOworICAgIGlmIChkLT5udW1FeHRyYUFyZ3VtZW50cyA+IDApIHsKKyAgICAg
ICAgZC0+ZXh0cmFBcmd1bWVudHMgPSBzdGF0aWNfY2FzdDxKU1ZhbHVlKio+KGZhc3RNYWxsb2Mo
c2l6ZW9mKEpTVmFsdWUqKSAqIGQtPm51bUV4dHJhQXJndW1lbnRzKSk7CisgICAgICAgIGludCBm
aXJzdEV4dHJhQXJndW1lbnRJbmRleCA9IGFyZ3Muc2l6ZSgpIC0gZC0+bnVtRXh0cmFBcmd1bWVu
dHM7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkLT5udW1FeHRyYUFyZ3VtZW50
czsgKytpKQorICAgICAgICAgICAgZC0+ZXh0cmFBcmd1bWVudHNbaV0gPSBhcmd2W2ZpcnN0RXh0
cmFBcmd1bWVudEluZGV4ICsgaV0uZ2V0SlNWYWx1ZSgpOwogICAgIH0KIH0KIAogdm9pZCBBcmd1
bWVudHM6Om1hcmsoKSAKIHsKICAgICBKU09iamVjdDo6bWFyaygpOworCisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGQtPm51bUV4dHJhQXJndW1lbnRzOyArK2kpIHsKKyAgICAgICAgaWYg
KCFkLT5leHRyYUFyZ3VtZW50c1tpXS0+bWFya2VkKCkpCisgICAgICAgICAgICBkLT5leHRyYUFy
Z3VtZW50c1tpXS0+bWFyaygpOworICAgIH0KKwogICAgIGlmICghZC0+YWN0aXZhdGlvbi0+bWFy
a2VkKCkpCiAgICAgICAgIGQtPmFjdGl2YXRpb24tPm1hcmsoKTsKIH0KQEAgLTcwLDYgKzc1LDE2
IEBAIEpTVmFsdWUqIEFyZ3VtZW50czo6bWFwcGVkSW5kZXhHZXR0ZXIoRXgKIAogYm9vbCBBcmd1
bWVudHM6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogeworICAgIGJvb2wgaXNBcnJh
eUluZGV4OworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJheUluZGV4KCZpc0Fy
cmF5SW5kZXgpOworICAgIGlmIChpc0FycmF5SW5kZXggJiYgIWQtPmhhZERlbGV0ZXMgJiYgaSA8
IGQtPmluZGV4VG9OYW1lTWFwLnNpemUoKSkgeworICAgICAgICBpZiAoaSA8IGQtPmluZGV4VG9O
YW1lTWFwLnNpemUoKSAtIGQtPm51bUV4dHJhQXJndW1lbnRzKQorICAgICAgICAgICAgZC0+YWN0
aXZhdGlvbi0+dW5jaGVja2VkU3ltYm9sVGFibGVHZXQoZC0+Zmlyc3RBcmd1bWVudEluZGV4ICsg
aSwgc2xvdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KCZk
LT5leHRyYUFyZ3VtZW50c1tpIC0gKGQtPmluZGV4VG9OYW1lTWFwLnNpemUoKSAtIGQtPm51bUV4
dHJhQXJndW1lbnRzKV0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAo
ZC0+aW5kZXhUb05hbWVNYXAuaXNNYXBwZWQocHJvcGVydHlOYW1lKSkgewogICAgICAgICBzbG90
LnNldEN1c3RvbSh0aGlzLCBtYXBwZWRJbmRleEdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtODAsNiArOTUsMTYgQEAgYm9vbCBBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChF
eGVjUwogCiB2b2lkIEFyZ3VtZW50czo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKiB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90
KQogeworICAgIGJvb2wgaXNBcnJheUluZGV4OworICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5h
bWUudG9BcnJheUluZGV4KCZpc0FycmF5SW5kZXgpOworICAgIGlmIChpc0FycmF5SW5kZXggJiYg
IWQtPmhhZERlbGV0ZXMgJiYgaSA8IGQtPmluZGV4VG9OYW1lTWFwLnNpemUoKSkgeworICAgICAg
ICBpZiAoaSA8IGQtPmluZGV4VG9OYW1lTWFwLnNpemUoKSAtIGQtPm51bUV4dHJhQXJndW1lbnRz
KQorICAgICAgICAgICAgZC0+YWN0aXZhdGlvbi0+dW5jaGVja2VkU3ltYm9sVGFibGVQdXQoZC0+
Zmlyc3RBcmd1bWVudEluZGV4ICsgaSwgdmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBkLT5leHRyYUFyZ3VtZW50c1tpIC0gKGQtPmluZGV4VG9OYW1lTWFwLnNpemUoKSAtIGQtPm51
bUV4dHJhQXJndW1lbnRzKV0gPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IGlmIChkLT5pbmRleFRvTmFtZU1hcC5pc01hcHBlZChwcm9wZXJ0eU5hbWUpKQogICAgICAgICBk
LT5hY3RpdmF0aW9uLT5wdXQoZXhlYywgZC0+aW5kZXhUb05hbWVNYXBbcHJvcGVydHlOYW1lXSwg
dmFsdWUsIHNsb3QpOwogICAgIGVsc2UKQEAgLTg4LDYgKzExMywyMyBAQCB2b2lkIEFyZ3VtZW50
czo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uCiAKIGJvb2wgQXJndW1lbnRzOjpkZWxldGVQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgCiB7
CisgICAgaWYgKCFkLT5oYWREZWxldGVzKSB7CisgICAgICAgIGQtPmhhZERlbGV0ZXMgPSB0cnVl
OworCisgICAgICAgIGludCBudW1FeHBlY3RlZEFyZ3VtZW50cyA9IGQtPmluZGV4VG9OYW1lTWFw
LnNpemUoKSAtIGQtPm51bUV4dHJhQXJndW1lbnRzOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUV4cGVjdGVkQXJndW1lbnRzOyArK2kpIHsKKyAgICAgICAgICAgIElkZW50aWZpZXIg
bmFtZSA9IElkZW50aWZpZXI6OmZyb20oZXhlYywgaSk7CisgICAgICAgICAgICBpZiAoIWQtPmlu
ZGV4VG9OYW1lTWFwLmlzTWFwcGVkKG5hbWUpKQorICAgICAgICAgICAgICAgIHB1dERpcmVjdChu
YW1lLCBkLT5hY3RpdmF0aW9uLT51bmNoZWNrZWRTeW1ib2xUYWJsZUdldFZhbHVlKGQtPmZpcnN0
QXJndW1lbnRJbmRleCArIGkpLCBEb250RW51bSk7CisgICAgICAgIH0KKworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZC0+bnVtRXh0cmFBcmd1bWVudHM7ICsraSkgeworICAgICAg
ICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbShleGVjLCBudW1FeHBlY3Rl
ZEFyZ3VtZW50cyArIGkpOworICAgICAgICAgICAgaWYgKCFkLT5pbmRleFRvTmFtZU1hcC5pc01h
cHBlZChuYW1lKSkKKyAgICAgICAgICAgICAgICBwdXREaXJlY3QobmFtZSwgZC0+ZXh0cmFBcmd1
bWVudHNbaV0sIERvbnRFbnVtKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChkLT5pbmRl
eFRvTmFtZU1hcC5pc01hcHBlZChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGQtPmluZGV4VG9O
YW1lTWFwLnVuTWFwKGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL0FyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9Bcmd1bWVudHMuaAkocmV2aXNpb24gMzY3MDUpCisrKyBKYXZhU2NyaXB0
Q29yZS9ranMvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE1ICsyNSwxNyBAQAog
I2RlZmluZSBBcmd1bWVudHNfaAogCiAjaW5jbHVkZSAiSW5kZXhUb05hbWVNYXAuaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CisgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAg
ICBjbGFzcyBBcmd1bWVudHMgOiBwdWJsaWMgSlNPYmplY3QgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQXJndW1lbnRzKEV4ZWNTdGF0ZSosIEpTRnVuY3Rpb24qLCBjb25zdCBBcmdMaXN0JiwgSlNB
Y3RpdmF0aW9uKik7CisgICAgICAgIEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBKU0Z1bmN0aW9uKiwg
Y29uc3QgQXJnTGlzdCYsIEpTQWN0aXZhdGlvbiosIGludCBmaXJzdEFyZ3VtZW50SW5kZXgsIFJl
Z2lzdGVyKiBhcmd2KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFyaygpOwogCkBAIC00OCwx
NCArNTAsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBtYXBw
ZWRJbmRleEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90KTsKIAogICAgICAgICBzdHJ1Y3QgQXJndW1lbnRzRGF0YSB7Ci0gICAgICAg
ICAgICBBcmd1bWVudHNEYXRhKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbl8sIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uXywgY29uc3QgQXJnTGlzdCYgYXJnc18pCisgICAgICAgICAgICBBcmd1bWVudHNE
YXRhKEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbl8sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uXywgY29u
c3QgQXJnTGlzdCYgYXJnc18sIGludCBmaXJzdEFyZ3VtZW50SW5kZXhfKQogICAgICAgICAgICAg
ICAgIDogYWN0aXZhdGlvbihhY3RpdmF0aW9uXykKICAgICAgICAgICAgICAgICAsIGluZGV4VG9O
YW1lTWFwKGZ1bmN0aW9uXywgYXJnc18pCisgICAgICAgICAgICAgICAgLCBmaXJzdEFyZ3VtZW50
SW5kZXgoZmlyc3RBcmd1bWVudEluZGV4XykKKyAgICAgICAgICAgICAgICAsIGhhZERlbGV0ZXMo
ZmFsc2UpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtQXJndW1l
bnRzID0gYXJnc18uc2l6ZSgpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIG51bVBhcmFtZXRl
cnMgPSBmdW5jdGlvbl8tPm51bVBhcmFtZXRlcnMoKTsKKyAgICAgICAgICAgICAgICBpZiAobnVt
QXJndW1lbnRzIDw9IG51bVBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgICAgIG51bUV4dHJh
QXJndW1lbnRzID0gMDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IG51bUV4dHJhQXJndW1lbnRzID0gbnVtQXJndW1lbnRzIC0gbnVtUGFyYW1ldGVyczsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uOwogICAgICAg
ICAgICAgbXV0YWJsZSBJbmRleFRvTmFtZU1hcCBpbmRleFRvTmFtZU1hcDsKKyAgICAgICAgICAg
IGludCBmaXJzdEFyZ3VtZW50SW5kZXg7CisgICAgICAgICAgICBKU1ZhbHVlKiogZXh0cmFBcmd1
bWVudHM7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1FeHRyYUFyZ3VtZW50czsKKyAgICAgICAg
ICAgIGJvb2wgaGFkRGVsZXRlczsKICAgICAgICAgfTsKICAgICAgICAgCiAgICAgICAgIE93blB0
cjxBcmd1bWVudHNEYXRhPiBkOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0luZGV4VG9OYW1l
TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0luZGV4VG9OYW1lTWFwLmgJ
KHJldmlzaW9uIDM2NzA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0luZGV4VG9OYW1lTWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGJvb2wgaXNNYXBwZWQoY29uc3QgSWRlbnRpZmllciYgaW5kZXgpIGNvbnN0OwogICAgICAgICB2
b2lkIHVuTWFwKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaW5kZXgpOwogCisg
ICAgICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKICAgICAgICAgSWRlbnRpZmllciogbV9t
YXA7IC8vIEZJTVhFOiB0aGlzIHNob3VsZCBiZSBhbiBPd25BcnJheVB0cgpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL0pTQWN0aXZhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL0pTQWN0aXZhdGlvbi5jcHAJKHJldmlzaW9uIDM2NzA1KQorKysgSmF2YVNjcmlwdENv
cmUva2pzL0pTQWN0aXZhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBA
QCBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBKU0FjdGl2YXRpb246CiAgICAgcmV0dXJuIGFy
Z3VtZW50c0dldHRlcjsKIH0KIAotSlNPYmplY3QqIEpTQWN0aXZhdGlvbjo6Y3JlYXRlQXJndW1l
bnRzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKK0FyZ3VtZW50cyogSlNBY3RpdmF0aW9uOjpjcmVh
dGVBcmd1bWVudHNPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFJlZ2lzdGVyKiBjYWxs
RnJhbWUgPSBkKCktPnJlZ2lzdGVycyAtIGQoKS0+ZnVuY3Rpb25Cb2R5LT5nZW5lcmF0ZWRCeXRl
Q29kZSgpLm51bUxvY2FscyAtIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKIApA
QCAtMTcxLDcgKzE3MSw4IEBAIEpTT2JqZWN0KiBKU0FjdGl2YXRpb246OmNyZWF0ZUFyZ3VtZW50
c08KICAgICBleGVjLT5tYWNoaW5lKCktPmdldEFyZ3VtZW50c0RhdGEoY2FsbEZyYW1lLCBmdW5j
dGlvbiwgYXJndiwgYXJnYyk7CiAKICAgICBBcmdMaXN0IGFyZ3MoYXJndiwgYXJnYyk7Ci0gICAg
cmV0dXJuIG5ldyAoZXhlYykgQXJndW1lbnRzKGV4ZWMsIGZ1bmN0aW9uLCBhcmdzLCB0aGlzKTsK
KyAgICBpbnQgZmlyc3RBcmd1bWVudEluZGV4ID0gLWQoKS0+ZnVuY3Rpb25Cb2R5LT5nZW5lcmF0
ZWRCeXRlQ29kZSgpLm51bUxvY2FscyArIDE7CisgICAgcmV0dXJuIG5ldyAoZXhlYykgQXJndW1l
bnRzKGV4ZWMsIGZ1bmN0aW9uLCBhcmdzLCB0aGlzLCBmaXJzdEFyZ3VtZW50SW5kZXgsIGFyZ3Yp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9KU0Fj
dGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNBY3RpdmF0aW9u
LmgJKHJldmlzaW9uIDM2NzA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTQWN0aXZhdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisg
ICAgY2xhc3MgQXJndW1lbnRzOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIAogICAgIGNsYXNz
IEpTQWN0aXZhdGlvbiA6IHB1YmxpYyBKU1ZhcmlhYmxlT2JqZWN0IHsKQEAgLTQ4LDcgKzQ5LDIz
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogCisg
ICAgICAgIGlubGluZSB2b2lkIHVuY2hlY2tlZFN5bWJvbFRhYmxlR2V0KGludCBpbmRleCwgUHJv
cGVydHlTbG90JiBzbG90KQorICAgICAgICB7CisgICAgICAgICAgICBzbG90LnNldFJlZ2lzdGVy
U2xvdCgmcmVnaXN0ZXJBdChpbmRleCkpOworICAgICAgICB9CisKKyAgICAgICAgaW5saW5lIEpT
VmFsdWUqIHVuY2hlY2tlZFN5bWJvbFRhYmxlR2V0VmFsdWUoaW50IGluZGV4KQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gcmVnaXN0ZXJBdChpbmRleCkuZ2V0SlNWYWx1ZSgpOworICAg
ICAgICB9CisKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgSlNWYWx1ZSosIFB1dFByb3BlcnR5U2xvdCYpOworCisgICAgICAgIGlubGluZSB2
b2lkIHVuY2hlY2tlZFN5bWJvbFRhYmxlUHV0KGludCBpbmRleCwgSlNWYWx1ZSogdmFsdWUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJlZ2lzdGVyQXQoaW5kZXgpID0gdmFsdWU7CisgICAgICAg
IH0KKwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUqLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKTsKICAgICAg
ICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSk7CiAKQEAgLTcxLDEyICs4OCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGZ1
bmN0aW9uQm9keTsgLy8gT3ducyB0aGUgc3ltYm9sIHRhYmxlIGFuZCBjb2RlIGJsb2NrCi0gICAg
ICAgICAgICBKU09iamVjdCogYXJndW1lbnRzT2JqZWN0OworICAgICAgICAgICAgQXJndW1lbnRz
KiBhcmd1bWVudHNPYmplY3Q7CiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBzdGF0aWMg
SlNWYWx1ZSogYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgTkVWRVJfSU5MSU5FIFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jIGdldEFyZ3VtZW50c0dldHRlcigpOwotICAgICAgICBORVZFUl9JTkxJTkUg
SlNPYmplY3QqIGNyZWF0ZUFyZ3VtZW50c09iamVjdChFeGVjU3RhdGUqKTsKKyAgICAgICAgTkVW
RVJfSU5MSU5FIEFyZ3VtZW50cyogY3JlYXRlQXJndW1lbnRzT2JqZWN0KEV4ZWNTdGF0ZSopOwog
CiAgICAgICAgIEpTQWN0aXZhdGlvbkRhdGEqIGQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxKU0FjdGl2YXRpb25EYXRhKj4oSlNWYXJpYWJsZU9iamVjdDo6ZCk7IH0KICAgICB9OwpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAzNjcwNSkKKysrIEphdmFTY3JpcHRD
b3JlL2tqcy9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAvLyBkdWUgdG8gYSBsYXRlciBwYXJhbWV0ZXIgd2l0aCB0
aGUgc2FtZSBuYW1lLgogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBnZXRQYXJhbWV0ZXJOYW1l
KGludCBpbmRleCk7CiAKKyAgICAgICAgdW5zaWduZWQgbnVtUGFyYW1ldGVycygpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2JvZHktPnBhcmFtZXRlcnMoKS5zaXplKCk7
CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHNldFNjb3BlKGNvbnN0IFNjb3BlQ2hhaW4mIHNj
b3BlQ2hhaW4pIHsgbV9zY29wZUNoYWluID0gc2NvcGVDaGFpbjsgfQogICAgICAgICBTY29wZUNo
YWluJiBzY29wZSgpIHsgcmV0dXJuIG1fc2NvcGVDaGFpbjsgfQogCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAzNjcyNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDA4LTA5LTIwICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVy
bG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzIGZvciB0aGUgJ2FyZ3VtZW50cycgb2JqZWN0LgorCisgICAgICAgICogZmFzdC9qcy9h
cmd1bWVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2FyZ3VtZW50
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9hcmd1bWVudHMuanM6
IEFkZGVkLgorCiAyMDA4LTA5LTE5ICBTdGVwaGFuaWUgTGV3aXMgIDxzbGV3aXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9hcmd1bWVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMvYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvYXJndW1lbnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMzAgQEAKK1RoaXMgdGVzdCB0aG9yb3VnaGx5IGNoZWNrcyB0aGUgYmVoYXZpb3VyIG9mIHRo
ZSAnYXJndW1lbnRzJyBvYmplY3QuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGFjY2Vzc18xKDEsIDIsIDMpIGlzIDEKK1BBU1MgYWNjZXNzXzIoMSwgMiwgMykgaXMgMgor
UEFTUyBhY2Nlc3NfMygxLCAyLCAzKSBpcyAzCitQQVNTIGFjY2Vzc180KDEsIDIsIDMpIGlzIHVu
ZGVmaW5lZAorUEFTUyBhY2Nlc3NfNSgxLCAyLCAzKSBpcyB1bmRlZmluZWQKK1BBU1MgYWNjZXNz
XzEoMSkgaXMgMQorUEFTUyBhY2Nlc3NfMigxKSBpcyB1bmRlZmluZWQKK1BBU1MgYWNjZXNzXzMo
MSkgaXMgdW5kZWZpbmVkCitQQVNTIGFjY2Vzc180KDEpIGlzIHVuZGVmaW5lZAorUEFTUyBhY2Nl
c3NfNSgxKSBpcyB1bmRlZmluZWQKK1BBU1MgYWNjZXNzXzEoMSwgMiwgMywgNCwgNSkgaXMgMQor
UEFTUyBhY2Nlc3NfMigxLCAyLCAzLCA0LCA1KSBpcyAyCitQQVNTIGFjY2Vzc18zKDEsIDIsIDMs
IDQsIDUpIGlzIDMKK1BBU1MgYWNjZXNzXzQoMSwgMiwgMywgNCwgNSkgaXMgNAorUEFTUyBhY2Nl
c3NfNSgxLCAyLCAzLCA0LCA1KSBpcyA1CitQQVNTIHRlYXJfb2ZmX2VxdWFsX2FjY2Vzc18xKDEs
IDIsIDMpIGlzIDEKK1BBU1MgdGVhcl9vZmZfZXF1YWxfYWNjZXNzXzIoMSwgMiwgMykgaXMgMgor
UEFTUyB0ZWFyX29mZl9lcXVhbF9hY2Nlc3NfMygxLCAyLCAzKSBpcyAzCitQQVNTIHRlYXJfb2Zm
X2VxdWFsX2FjY2Vzc180KDEsIDIsIDMpIGlzIHVuZGVmaW5lZAorUEFTUyB0ZWFyX29mZl9lcXVh
bF9hY2Nlc3NfNSgxLCAyLCAzKSBpcyB1bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfdG9vX2Zld19h
Y2Nlc3NfMSgxKSBpcyAxCitQQVNTIHRlYXJfb2ZmX3Rvb19mZXdfYWNjZXNzXzIoMSkgaXMgdW5k
ZWZpbmVkCitQQVNTIHRlYXJfb2ZmX3Rvb19mZXdfYWNjZXNzXzMoMSkgaXMgdW5kZWZpbmVkCitQ
QVNTIHRlYXJfb2ZmX3Rvb19mZXdfYWNjZXNzXzQoMSkgaXMgdW5kZWZpbmVkCitQQVNTIHRlYXJf
b2ZmX3Rvb19mZXdfYWNjZXNzXzUoMSkgaXMgdW5kZWZpbmVkCitQQVNTIHRlYXJfb2ZmX3Rvb19t
YW55X2FjY2Vzc18xKDEsIDIsIDMsIDQsIDUpIGlzIDEKK1BBU1MgdGVhcl9vZmZfdG9vX21hbnlf
YWNjZXNzXzIoMSwgMiwgMywgNCwgNSkgaXMgMgorUEFTUyB0ZWFyX29mZl90b29fbWFueV9hY2Nl
c3NfMygxLCAyLCAzLCA0LCA1KSBpcyAzCitQQVNTIHRlYXJfb2ZmX3Rvb19tYW55X2FjY2Vzc180
KDEsIDIsIDMsIDQsIDUpIGlzIDQKK1BBU1MgdGVhcl9vZmZfdG9vX21hbnlfYWNjZXNzXzUoMSwg
MiwgMywgNCwgNSkgaXMgNQorUEFTUyBsaXZlXzEoMCwgMiwgMykgaXMgMQorUEFTUyBsaXZlXzIo
MSwgMCwgMykgaXMgMgorUEFTUyBsaXZlXzMoMSwgMiwgMCkgaXMgMworUEFTUyBsaXZlXzEoMCkg
aXMgMQorUEFTUyBsaXZlXzIoMSkgaXMgdW5kZWZpbmVkCitQQVNTIGxpdmVfMygxKSBpcyB1bmRl
ZmluZWQKK1BBU1MgbGl2ZV8xKDAsIDIsIDMsIDQsIDUpIGlzIDEKK1BBU1MgbGl2ZV8yKDEsIDAs
IDMsIDQsIDUpIGlzIDIKK1BBU1MgbGl2ZV8zKDEsIDIsIDAsIDQsIDUpIGlzIDMKK1BBU1MgZXh0
cmFfYXJnc19tb2RpZnlfNCgxLCAyLCAzLCAwLCA1KSBpcyA0CitQQVNTIGV4dHJhX2FyZ3NfbW9k
aWZ5XzUoMSwgMiwgMywgNCwgMCkgaXMgNQorUEFTUyB0ZWFyX29mZl9saXZlXzEoMCwgMiwgMyko
KSBpcyAxCitQQVNTIHRlYXJfb2ZmX2xpdmVfMigxLCAwLCAzKSgpIGlzIDIKK1BBU1MgdGVhcl9v
ZmZfbGl2ZV8zKDEsIDIsIDApKCkgaXMgMworUEFTUyB0ZWFyX29mZl9saXZlXzEoMCkoKSBpcyAx
CitQQVNTIHRlYXJfb2ZmX2xpdmVfMigxKSgpIGlzIHVuZGVmaW5lZAorUEFTUyB0ZWFyX29mZl9s
aXZlXzMoMSkoKSBpcyB1bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfbGl2ZV8xKDAsIDIsIDMsIDQs
IDUpKCkgaXMgMQorUEFTUyB0ZWFyX29mZl9saXZlXzIoMSwgMCwgMywgNCwgNSkoKSBpcyAyCitQ
QVNTIHRlYXJfb2ZmX2xpdmVfMygxLCAyLCAwLCA0LCA1KSgpIGlzIDMKK1BBU1MgdGVhcl9vZmZf
ZXh0cmFfYXJnc19tb2RpZnlfNCgxLCAyLCAzLCAwLCA1KSgpIGlzIDQKK1BBU1MgdGVhcl9vZmZf
ZXh0cmFfYXJnc19tb2RpZnlfNSgxLCAyLCAzLCA0LCAwKSgpIGlzIDUKK1BBU1MgZGVsZXRlXzEo
MSwgMiwgMykgaXMgdW5kZWZpbmVkCitQQVNTIGRlbGV0ZV8yKDEsIDIsIDMpIGlzIHVuZGVmaW5l
ZAorUEFTUyBkZWxldGVfMygxLCAyLCAzKSBpcyB1bmRlZmluZWQKK1BBU1MgZGVsZXRlXzQoMSwg
MiwgMykgaXMgdW5kZWZpbmVkCitQQVNTIGRlbGV0ZV81KDEsIDIsIDMpIGlzIHVuZGVmaW5lZAor
UEFTUyBkZWxldGVfMSgxKSBpcyB1bmRlZmluZWQKK1BBU1MgZGVsZXRlXzIoMSkgaXMgdW5kZWZp
bmVkCitQQVNTIGRlbGV0ZV8zKDEpIGlzIHVuZGVmaW5lZAorUEFTUyBkZWxldGVfNCgxKSBpcyB1
bmRlZmluZWQKK1BBU1MgZGVsZXRlXzUoMSkgaXMgdW5kZWZpbmVkCitQQVNTIGRlbGV0ZV8xKDEs
IDIsIDMsIDQsIDUpIGlzIHVuZGVmaW5lZAorUEFTUyBkZWxldGVfMigxLCAyLCAzLCA0LCA1KSBp
cyB1bmRlZmluZWQKK1BBU1MgZGVsZXRlXzMoMSwgMiwgMywgNCwgNSkgaXMgdW5kZWZpbmVkCitQ
QVNTIGRlbGV0ZV80KDEsIDIsIDMsIDQsIDUpIGlzIHVuZGVmaW5lZAorUEFTUyBkZWxldGVfNSgx
LCAyLCAzLCA0LCA1KSBpcyB1bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVsZXRlXzEoMSwgMiwg
MykoKSBpcyB1bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVsZXRlXzIoMSwgMiwgMykoKSBpcyB1
bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVsZXRlXzMoMSwgMiwgMykoKSBpcyB1bmRlZmluZWQK
K1BBU1MgdGVhcl9vZmZfZGVsZXRlXzQoMSwgMiwgMykoKSBpcyB1bmRlZmluZWQKK1BBU1MgdGVh
cl9vZmZfZGVsZXRlXzUoMSwgMiwgMykoKSBpcyB1bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVs
ZXRlXzEoMSkoKSBpcyB1bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVsZXRlXzIoMSkoKSBpcyB1
bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVsZXRlXzMoMSkoKSBpcyB1bmRlZmluZWQKK1BBU1Mg
dGVhcl9vZmZfZGVsZXRlXzQoMSkoKSBpcyB1bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVsZXRl
XzUoMSkoKSBpcyB1bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVsZXRlXzEoMSwgMiwgMywgNCwg
NSkoKSBpcyB1bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVsZXRlXzIoMSwgMiwgMywgNCwgNSko
KSBpcyB1bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVsZXRlXzMoMSwgMiwgMywgNCwgNSkoKSBp
cyB1bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVsZXRlXzQoMSwgMiwgMywgNCwgNSkoKSBpcyB1
bmRlZmluZWQKK1BBU1MgdGVhcl9vZmZfZGVsZXRlXzUoMSwgMiwgMywgNCwgNSkoKSBpcyB1bmRl
ZmluZWQKK1BBU1MgZGVsZXRlX25vdF9saXZlXzEoMSwgMiwgMykgaXMgMQorUEFTUyBkZWxldGVf
bm90X2xpdmVfMigxLCAyLCAzKSBpcyAyCitQQVNTIGRlbGV0ZV9ub3RfbGl2ZV8zKDEsIDIsIDMp
IGlzIDMKK1BBU1MgZGVsZXRlX25vdF9saXZlXzEoMSkgaXMgMQorUEFTUyBkZWxldGVfbm90X2xp
dmVfMigxKSBpcyB1bmRlZmluZWQKK1BBU1MgZGVsZXRlX25vdF9saXZlXzMoMSkgaXMgdW5kZWZp
bmVkCitQQVNTIGRlbGV0ZV9ub3RfbGl2ZV8xKDEsIDIsIDMsIDQsIDUpIGlzIDEKK1BBU1MgZGVs
ZXRlX25vdF9saXZlXzIoMSwgMiwgMywgNCwgNSkgaXMgMgorUEFTUyBkZWxldGVfbm90X2xpdmVf
MygxLCAyLCAzLCA0LCA1KSBpcyAzCitQQVNTIHRlYXJfb2ZmX2RlbGV0ZV9ub3RfbGl2ZV8xKDEs
IDIsIDMpKCkgaXMgMQorUEFTUyB0ZWFyX29mZl9kZWxldGVfbm90X2xpdmVfMigxLCAyLCAzKSgp
IGlzIDIKK1BBU1MgdGVhcl9vZmZfZGVsZXRlX25vdF9saXZlXzMoMSwgMiwgMykoKSBpcyAzCitQ
QVNTIHRlYXJfb2ZmX2RlbGV0ZV9ub3RfbGl2ZV8xKDEpKCkgaXMgMQorUEFTUyB0ZWFyX29mZl9k
ZWxldGVfbm90X2xpdmVfMigxKSgpIGlzIHVuZGVmaW5lZAorUEFTUyB0ZWFyX29mZl9kZWxldGVf
bm90X2xpdmVfMygxKSgpIGlzIHVuZGVmaW5lZAorUEFTUyB0ZWFyX29mZl9kZWxldGVfbm90X2xp
dmVfMSgxLCAyLCAzLCA0LCA1KSgpIGlzIDEKK1BBU1MgdGVhcl9vZmZfZGVsZXRlX25vdF9saXZl
XzIoMSwgMiwgMywgNCwgNSkoKSBpcyAyCitQQVNTIHRlYXJfb2ZmX2RlbGV0ZV9ub3RfbGl2ZV8z
KDEsIDIsIDMsIDQsIDUpKCkgaXMgMworUEFTUyBhY2Nlc3NfYWZ0ZXJfZGVsZXRlX25hbWVkXzIo
MSwgMiwgMykgaXMgMgorUEFTUyBhY2Nlc3NfYWZ0ZXJfZGVsZXRlX25hbWVkXzMoMSwgMiwgMykg
aXMgMworUEFTUyBhY2Nlc3NfYWZ0ZXJfZGVsZXRlX25hbWVkXzQoMSwgMiwgMykgaXMgdW5kZWZp
bmVkCitQQVNTIGFjY2Vzc19hZnRlcl9kZWxldGVfbmFtZWRfMigxKSBpcyB1bmRlZmluZWQKK1BB
U1MgYWNjZXNzX2FmdGVyX2RlbGV0ZV9uYW1lZF8zKDEpIGlzIHVuZGVmaW5lZAorUEFTUyBhY2Nl
c3NfYWZ0ZXJfZGVsZXRlX25hbWVkXzQoMSkgaXMgdW5kZWZpbmVkCitQQVNTIGFjY2Vzc19hZnRl
cl9kZWxldGVfbmFtZWRfMigxLCAyLCAzLCA0KSBpcyAyCitQQVNTIGFjY2Vzc19hZnRlcl9kZWxl
dGVfbmFtZWRfMygxLCAyLCAzLCA0KSBpcyAzCitQQVNTIGFjY2Vzc19hZnRlcl9kZWxldGVfbmFt
ZWRfNCgxLCAyLCAzLCA0KSBpcyA0CitQQVNTIGFjY2Vzc19hZnRlcl9kZWxldGVfZXh0cmFfMSgx
LCAyLCAzKSBpcyAxCitQQVNTIGFjY2Vzc19hZnRlcl9kZWxldGVfZXh0cmFfMigxLCAyLCAzKSBp
cyAyCitQQVNTIGFjY2Vzc19hZnRlcl9kZWxldGVfZXh0cmFfMygxLCAyLCAzKSBpcyAzCitQQVNT
IGFjY2Vzc19hZnRlcl9kZWxldGVfZXh0cmFfNSgxLCAyLCAzKSBpcyB1bmRlZmluZWQKK1BBU1Mg
YWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV8xKDEpIGlzIDEKK1BBU1MgYWNjZXNzX2FmdGVyX2Rl
bGV0ZV9leHRyYV8yKDEpIGlzIHVuZGVmaW5lZAorUEFTUyBhY2Nlc3NfYWZ0ZXJfZGVsZXRlX2V4
dHJhXzMoMSkgaXMgdW5kZWZpbmVkCitQQVNTIGFjY2Vzc19hZnRlcl9kZWxldGVfZXh0cmFfNSgx
KSBpcyB1bmRlZmluZWQKK1BBU1MgYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV8xKDEsIDIsIDMs
IDQsIDUpIGlzIDEKK1BBU1MgYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV8yKDEsIDIsIDMsIDQs
IDUpIGlzIDIKK1BBU1MgYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV8zKDEsIDIsIDMsIDQsIDUp
IGlzIDMKK1BBU1MgYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV81KDEsIDIsIDMsIDQsIDUpIGlz
IDUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2FyZ3VtZW50cy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvYXJndW1lbnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL2FyZ3VtZW50cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FyZ3VtZW50cy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9h
cmd1bWVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMv
YXJndW1lbnRzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJj
ZXMvYXJndW1lbnRzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUwNSBAQAorZGVzY3JpcHRp
b24oCisiVGhpcyB0ZXN0IHRob3JvdWdobHkgY2hlY2tzIHRoZSBiZWhhdmlvdXIgb2YgdGhlICdh
cmd1bWVudHMnIG9iamVjdC4iCispOworCitmdW5jdGlvbiBhY2Nlc3NfMShhLCBiLCBjKQorewor
ICAgIHJldHVybiBhcmd1bWVudHNbMF07Cit9CisKK2Z1bmN0aW9uIGFjY2Vzc18yKGEsIGIsIGMp
Cit7CisgICAgcmV0dXJuIGFyZ3VtZW50c1sxXTsKK30KKworZnVuY3Rpb24gYWNjZXNzXzMoYSwg
YiwgYykKK3sKKyAgICByZXR1cm4gYXJndW1lbnRzWzJdOworfQorCitmdW5jdGlvbiBhY2Nlc3Nf
NChhLCBiLCBjKQoreworICAgIHJldHVybiBhcmd1bWVudHNbM107Cit9CisKK2Z1bmN0aW9uIGFj
Y2Vzc181KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGFyZ3VtZW50c1s0XTsKK30KKworc2hvdWxk
QmUoImFjY2Vzc18xKDEsIDIsIDMpIiwgIjEiKTsKK3Nob3VsZEJlKCJhY2Nlc3NfMigxLCAyLCAz
KSIsICIyIik7CitzaG91bGRCZSgiYWNjZXNzXzMoMSwgMiwgMykiLCAiMyIpOworc2hvdWxkQmUo
ImFjY2Vzc180KDEsIDIsIDMpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImFjY2Vzc181KDEs
IDIsIDMpIiwgInVuZGVmaW5lZCIpOworCitzaG91bGRCZSgiYWNjZXNzXzEoMSkiLCAiMSIpOwor
c2hvdWxkQmUoImFjY2Vzc18yKDEpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImFjY2Vzc18z
KDEpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImFjY2Vzc180KDEpIiwgInVuZGVmaW5lZCIp
Oworc2hvdWxkQmUoImFjY2Vzc181KDEpIiwgInVuZGVmaW5lZCIpOworCitzaG91bGRCZSgiYWNj
ZXNzXzEoMSwgMiwgMywgNCwgNSkiLCAiMSIpOworc2hvdWxkQmUoImFjY2Vzc18yKDEsIDIsIDMs
IDQsIDUpIiwgIjIiKTsKK3Nob3VsZEJlKCJhY2Nlc3NfMygxLCAyLCAzLCA0LCA1KSIsICIzIik7
CitzaG91bGRCZSgiYWNjZXNzXzQoMSwgMiwgMywgNCwgNSkiLCAiNCIpOworc2hvdWxkQmUoImFj
Y2Vzc181KDEsIDIsIDMsIDQsIDUpIiwgIjUiKTsKKworZnVuY3Rpb24gZihhLCBiLCBjKQorewor
ICAgIHJldHVybiBhcmd1bWVudHM7Cit9CisKK2Z1bmN0aW9uIHRlYXJfb2ZmX2VxdWFsX2FjY2Vz
c18xKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGYoYSwgYiwgYylbMF07Cit9CisKK2Z1bmN0aW9u
IHRlYXJfb2ZmX2VxdWFsX2FjY2Vzc18yKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGYoYSwgYiwg
YylbMV07Cit9CisKK2Z1bmN0aW9uIHRlYXJfb2ZmX2VxdWFsX2FjY2Vzc18zKGEsIGIsIGMpCit7
CisgICAgcmV0dXJuIGYoYSwgYiwgYylbMl07Cit9CisKK2Z1bmN0aW9uIHRlYXJfb2ZmX2VxdWFs
X2FjY2Vzc180KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGYoYSwgYiwgYylbM107Cit9CisKK2Z1
bmN0aW9uIHRlYXJfb2ZmX2VxdWFsX2FjY2Vzc181KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGYo
YSwgYiwgYylbNF07Cit9CisKK3Nob3VsZEJlKCJ0ZWFyX29mZl9lcXVhbF9hY2Nlc3NfMSgxLCAy
LCAzKSIsICIxIik7CitzaG91bGRCZSgidGVhcl9vZmZfZXF1YWxfYWNjZXNzXzIoMSwgMiwgMyki
LCAiMiIpOworc2hvdWxkQmUoInRlYXJfb2ZmX2VxdWFsX2FjY2Vzc18zKDEsIDIsIDMpIiwgIjMi
KTsKK3Nob3VsZEJlKCJ0ZWFyX29mZl9lcXVhbF9hY2Nlc3NfNCgxLCAyLCAzKSIsICJ1bmRlZmlu
ZWQiKTsKK3Nob3VsZEJlKCJ0ZWFyX29mZl9lcXVhbF9hY2Nlc3NfNSgxLCAyLCAzKSIsICJ1bmRl
ZmluZWQiKTsKKworZnVuY3Rpb24gdGVhcl9vZmZfdG9vX2Zld19hY2Nlc3NfMShhKQoreworICAg
IHJldHVybiBmKGEpWzBdOworfQorCitmdW5jdGlvbiB0ZWFyX29mZl90b29fZmV3X2FjY2Vzc18y
KGEpCit7CisgICAgcmV0dXJuIGYoYSlbMV07Cit9CisKK2Z1bmN0aW9uIHRlYXJfb2ZmX3Rvb19m
ZXdfYWNjZXNzXzMoYSkKK3sKKyAgICByZXR1cm4gZihhKVsyXTsKK30KKworZnVuY3Rpb24gdGVh
cl9vZmZfdG9vX2Zld19hY2Nlc3NfNChhKQoreworICAgIHJldHVybiBmKGEpWzNdOworfQorCitm
dW5jdGlvbiB0ZWFyX29mZl90b29fZmV3X2FjY2Vzc181KGEpCit7CisgICAgcmV0dXJuIGYoYSlb
NF07Cit9CisKK3Nob3VsZEJlKCJ0ZWFyX29mZl90b29fZmV3X2FjY2Vzc18xKDEpIiwgIjEiKTsK
K3Nob3VsZEJlKCJ0ZWFyX29mZl90b29fZmV3X2FjY2Vzc18yKDEpIiwgInVuZGVmaW5lZCIpOwor
c2hvdWxkQmUoInRlYXJfb2ZmX3Rvb19mZXdfYWNjZXNzXzMoMSkiLCAidW5kZWZpbmVkIik7Citz
aG91bGRCZSgidGVhcl9vZmZfdG9vX2Zld19hY2Nlc3NfNCgxKSIsICJ1bmRlZmluZWQiKTsKK3No
b3VsZEJlKCJ0ZWFyX29mZl90b29fZmV3X2FjY2Vzc181KDEpIiwgInVuZGVmaW5lZCIpOworCitm
dW5jdGlvbiB0ZWFyX29mZl90b29fbWFueV9hY2Nlc3NfMShhLCBiLCBjLCBkLCBlKQoreworICAg
IHJldHVybiBmKGEsIGIsIGMsIGQsIGUpWzBdOworfQorCitmdW5jdGlvbiB0ZWFyX29mZl90b29f
bWFueV9hY2Nlc3NfMihhLCBiLCBjLCBkLCBlKQoreworICAgIHJldHVybiBmKGEsIGIsIGMsIGQs
IGUpWzFdOworfQorCitmdW5jdGlvbiB0ZWFyX29mZl90b29fbWFueV9hY2Nlc3NfMyhhLCBiLCBj
LCBkLCBlKQoreworICAgIHJldHVybiBmKGEsIGIsIGMsIGQsIGUpWzJdOworfQorCitmdW5jdGlv
biB0ZWFyX29mZl90b29fbWFueV9hY2Nlc3NfNChhLCBiLCBjLCBkLCBlKQoreworICAgIHJldHVy
biBmKGEsIGIsIGMsIGQsIGUpWzNdOworfQorCitmdW5jdGlvbiB0ZWFyX29mZl90b29fbWFueV9h
Y2Nlc3NfNShhLCBiLCBjLCBkLCBlKQoreworICAgIHJldHVybiBmKGEsIGIsIGMsIGQsIGUpWzRd
OworfQorCitzaG91bGRCZSgidGVhcl9vZmZfdG9vX21hbnlfYWNjZXNzXzEoMSwgMiwgMywgNCwg
NSkiLCAiMSIpOworc2hvdWxkQmUoInRlYXJfb2ZmX3Rvb19tYW55X2FjY2Vzc18yKDEsIDIsIDMs
IDQsIDUpIiwgIjIiKTsKK3Nob3VsZEJlKCJ0ZWFyX29mZl90b29fbWFueV9hY2Nlc3NfMygxLCAy
LCAzLCA0LCA1KSIsICIzIik7CitzaG91bGRCZSgidGVhcl9vZmZfdG9vX21hbnlfYWNjZXNzXzQo
MSwgMiwgMywgNCwgNSkiLCAiNCIpOworc2hvdWxkQmUoInRlYXJfb2ZmX3Rvb19tYW55X2FjY2Vz
c181KDEsIDIsIDMsIDQsIDUpIiwgIjUiKTsKKworZnVuY3Rpb24gbGl2ZV8xKGEsIGIsIGMpCit7
CisgICAgYXJndW1lbnRzWzBdID0gMTsKKyAgICByZXR1cm4gYTsKK30KKworZnVuY3Rpb24gbGl2
ZV8yKGEsIGIsIGMpCit7CisgICAgYXJndW1lbnRzWzFdID0gMjsKKyAgICByZXR1cm4gYjsKK30K
KworZnVuY3Rpb24gbGl2ZV8zKGEsIGIsIGMpCit7CisgICAgYXJndW1lbnRzWzJdID0gMzsKKyAg
ICByZXR1cm4gYzsKK30KKworc2hvdWxkQmUoImxpdmVfMSgwLCAyLCAzKSIsICIxIik7CitzaG91
bGRCZSgibGl2ZV8yKDEsIDAsIDMpIiwgIjIiKTsKK3Nob3VsZEJlKCJsaXZlXzMoMSwgMiwgMCki
LCAiMyIpOworCisvLyBBcmd1bWVudHMgdGhhdCB3ZXJlIG5vdCBwcm92aWRlZCBhcmUgbm90IGxp
dmUKK3Nob3VsZEJlKCJsaXZlXzEoMCkiLCAiMSIpOworc2hvdWxkQmUoImxpdmVfMigxKSIsICJ1
bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJsaXZlXzMoMSkiLCAidW5kZWZpbmVkIik7CisKK3Nob3Vs
ZEJlKCJsaXZlXzEoMCwgMiwgMywgNCwgNSkiLCAiMSIpOworc2hvdWxkQmUoImxpdmVfMigxLCAw
LCAzLCA0LCA1KSIsICIyIik7CitzaG91bGRCZSgibGl2ZV8zKDEsIDIsIDAsIDQsIDUpIiwgIjMi
KTsKKworZnVuY3Rpb24gZXh0cmFfYXJnc19tb2RpZnlfNChhLCBiLCBjKQoreworICAgIGFyZ3Vt
ZW50c1szXSA9IDQ7CisgICAgcmV0dXJuIGFyZ3VtZW50c1szXTsKK30KKworZnVuY3Rpb24gZXh0
cmFfYXJnc19tb2RpZnlfNShhLCBiLCBjKQoreworICAgIGFyZ3VtZW50c1s0XSA9IDU7CisgICAg
cmV0dXJuIGFyZ3VtZW50c1s0XTsKK30KKworc2hvdWxkQmUoImV4dHJhX2FyZ3NfbW9kaWZ5XzQo
MSwgMiwgMywgMCwgNSkiLCAiNCIpOworc2hvdWxkQmUoImV4dHJhX2FyZ3NfbW9kaWZ5XzUoMSwg
MiwgMywgNCwgMCkiLCAiNSIpOworCitmdW5jdGlvbiB0ZWFyX29mZl9saXZlXzEoYSwgYiwgYykK
K3sKKyAgICB2YXIgYXJncyA9IGFyZ3VtZW50czsKKyAgICByZXR1cm4gZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgYXJnc1swXSA9IDE7CisgICAgICAgIHJldHVybiBhOworICAgIH07Cit9CisK
K2Z1bmN0aW9uIHRlYXJfb2ZmX2xpdmVfMihhLCBiLCBjKQoreworICAgIHZhciBhcmdzID0gYXJn
dW1lbnRzOworICAgIHJldHVybiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBhcmdzWzFdID0g
MjsKKyAgICAgICAgcmV0dXJuIGI7CisgICAgfTsKK30KKworZnVuY3Rpb24gdGVhcl9vZmZfbGl2
ZV8zKGEsIGIsIGMpCit7CisgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7CisgICAgcmV0dXJuIGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGFyZ3NbMl0gPSAzOworICAgICAgICByZXR1cm4gYzsK
KyAgICB9OworfQorCitzaG91bGRCZSgidGVhcl9vZmZfbGl2ZV8xKDAsIDIsIDMpKCkiLCAiMSIp
Oworc2hvdWxkQmUoInRlYXJfb2ZmX2xpdmVfMigxLCAwLCAzKSgpIiwgIjIiKTsKK3Nob3VsZEJl
KCJ0ZWFyX29mZl9saXZlXzMoMSwgMiwgMCkoKSIsICIzIik7CisKKy8vIEFyZ3VtZW50cyB0aGF0
IHdlcmUgbm90IHByb3ZpZGVkIGFyZSBub3QgbGl2ZQorc2hvdWxkQmUoInRlYXJfb2ZmX2xpdmVf
MSgwKSgpIiwgIjEiKTsKK3Nob3VsZEJlKCJ0ZWFyX29mZl9saXZlXzIoMSkoKSIsICJ1bmRlZmlu
ZWQiKTsKK3Nob3VsZEJlKCJ0ZWFyX29mZl9saXZlXzMoMSkoKSIsICJ1bmRlZmluZWQiKTsKKwor
c2hvdWxkQmUoInRlYXJfb2ZmX2xpdmVfMSgwLCAyLCAzLCA0LCA1KSgpIiwgIjEiKTsKK3Nob3Vs
ZEJlKCJ0ZWFyX29mZl9saXZlXzIoMSwgMCwgMywgNCwgNSkoKSIsICIyIik7CitzaG91bGRCZSgi
dGVhcl9vZmZfbGl2ZV8zKDEsIDIsIDAsIDQsIDUpKCkiLCAiMyIpOworCitmdW5jdGlvbiB0ZWFy
X29mZl9leHRyYV9hcmdzX21vZGlmeV80KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIGFyZ3VtZW50c1szXSA9IDQ7CisgICAgICAgIHJldHVybiBhcmd1
bWVudHNbM107CisgICAgfQorfQorCitmdW5jdGlvbiB0ZWFyX29mZl9leHRyYV9hcmdzX21vZGlm
eV81KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGFy
Z3VtZW50c1s0XSA9IDU7CisgICAgICAgIHJldHVybiBhcmd1bWVudHNbNF07CisgICAgfQorfQor
CitzaG91bGRCZSgidGVhcl9vZmZfZXh0cmFfYXJnc19tb2RpZnlfNCgxLCAyLCAzLCAwLCA1KSgp
IiwgIjQiKTsKK3Nob3VsZEJlKCJ0ZWFyX29mZl9leHRyYV9hcmdzX21vZGlmeV81KDEsIDIsIDMs
IDQsIDApKCkiLCAiNSIpOworCitmdW5jdGlvbiBkZWxldGVfMShhLCBiLCBjKQoreworICAgIGRl
bGV0ZSBhcmd1bWVudHNbMF07CisgICAgcmV0dXJuIGFyZ3VtZW50c1swXTsKK30KKworZnVuY3Rp
b24gZGVsZXRlXzIoYSwgYiwgYykKK3sKKyAgICBkZWxldGUgYXJndW1lbnRzWzFdOworICAgIHJl
dHVybiBhcmd1bWVudHNbMV07Cit9CisKK2Z1bmN0aW9uIGRlbGV0ZV8zKGEsIGIsIGMpCit7Cisg
ICAgZGVsZXRlIGFyZ3VtZW50c1syXTsKKyAgICByZXR1cm4gYXJndW1lbnRzWzJdOworfQorCitm
dW5jdGlvbiBkZWxldGVfNChhLCBiLCBjKQoreworICAgIGRlbGV0ZSBhcmd1bWVudHNbM107Cisg
ICAgcmV0dXJuIGFyZ3VtZW50c1szXTsKK30KKworZnVuY3Rpb24gZGVsZXRlXzUoYSwgYiwgYykK
K3sKKyAgICBkZWxldGUgYXJndW1lbnRzWzRdOworICAgIHJldHVybiBhcmd1bWVudHNbNF07Cit9
CisKK3Nob3VsZEJlKCJkZWxldGVfMSgxLCAyLCAzKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJl
KCJkZWxldGVfMigxLCAyLCAzKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJkZWxldGVfMygx
LCAyLCAzKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJkZWxldGVfNCgxLCAyLCAzKSIsICJ1
bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJkZWxldGVfNSgxLCAyLCAzKSIsICJ1bmRlZmluZWQiKTsK
Kworc2hvdWxkQmUoImRlbGV0ZV8xKDEpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImRlbGV0
ZV8yKDEpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImRlbGV0ZV8zKDEpIiwgInVuZGVmaW5l
ZCIpOworc2hvdWxkQmUoImRlbGV0ZV80KDEpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImRl
bGV0ZV81KDEpIiwgInVuZGVmaW5lZCIpOworCitzaG91bGRCZSgiZGVsZXRlXzEoMSwgMiwgMywg
NCwgNSkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiZGVsZXRlXzIoMSwgMiwgMywgNCwgNSki
LCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgiZGVsZXRlXzMoMSwgMiwgMywgNCwgNSkiLCAidW5k
ZWZpbmVkIik7CitzaG91bGRCZSgiZGVsZXRlXzQoMSwgMiwgMywgNCwgNSkiLCAidW5kZWZpbmVk
Iik7CitzaG91bGRCZSgiZGVsZXRlXzUoMSwgMiwgMywgNCwgNSkiLCAidW5kZWZpbmVkIik7CisK
K2Z1bmN0aW9uIHRlYXJfb2ZmX2RlbGV0ZV8xKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBhcmd1bWVudHNbMF07CisgICAgICAgIHJldHVy
biBhcmd1bWVudHNbMF07CisgICAgfTsKK30KKworZnVuY3Rpb24gdGVhcl9vZmZfZGVsZXRlXzIo
YSwgYiwgYykKK3sKKyAgICByZXR1cm4gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVsZXRl
IGFyZ3VtZW50c1sxXTsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1sxXTsKKyAgICB9OworfQor
CitmdW5jdGlvbiB0ZWFyX29mZl9kZWxldGVfMyhhLCBiLCBjKQoreworICAgIHJldHVybiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBkZWxldGUgYXJndW1lbnRzWzJdOworICAgICAgICByZXR1
cm4gYXJndW1lbnRzWzJdOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRlYXJfb2ZmX2RlbGV0ZV80
KGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlbGV0
ZSBhcmd1bWVudHNbM107CisgICAgICAgIHJldHVybiBhcmd1bWVudHNbM107CisgICAgfTsKK30K
KworZnVuY3Rpb24gdGVhcl9vZmZfZGVsZXRlXzUoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgZGVsZXRlIGFyZ3VtZW50c1s0XTsKKyAgICAgICAgcmV0
dXJuIGFyZ3VtZW50c1s0XTsKKyAgICB9OworfQorCitzaG91bGRCZSgidGVhcl9vZmZfZGVsZXRl
XzEoMSwgMiwgMykoKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJ0ZWFyX29mZl9kZWxldGVf
MigxLCAyLCAzKSgpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoInRlYXJfb2ZmX2RlbGV0ZV8z
KDEsIDIsIDMpKCkiLCAidW5kZWZpbmVkIik7CitzaG91bGRCZSgidGVhcl9vZmZfZGVsZXRlXzQo
MSwgMiwgMykoKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJ0ZWFyX29mZl9kZWxldGVfNSgx
LCAyLCAzKSgpIiwgInVuZGVmaW5lZCIpOworCitzaG91bGRCZSgidGVhcl9vZmZfZGVsZXRlXzEo
MSkoKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJ0ZWFyX29mZl9kZWxldGVfMigxKSgpIiwg
InVuZGVmaW5lZCIpOworc2hvdWxkQmUoInRlYXJfb2ZmX2RlbGV0ZV8zKDEpKCkiLCAidW5kZWZp
bmVkIik7CitzaG91bGRCZSgidGVhcl9vZmZfZGVsZXRlXzQoMSkoKSIsICJ1bmRlZmluZWQiKTsK
K3Nob3VsZEJlKCJ0ZWFyX29mZl9kZWxldGVfNSgxKSgpIiwgInVuZGVmaW5lZCIpOworCitzaG91
bGRCZSgidGVhcl9vZmZfZGVsZXRlXzEoMSwgMiwgMywgNCwgNSkoKSIsICJ1bmRlZmluZWQiKTsK
K3Nob3VsZEJlKCJ0ZWFyX29mZl9kZWxldGVfMigxLCAyLCAzLCA0LCA1KSgpIiwgInVuZGVmaW5l
ZCIpOworc2hvdWxkQmUoInRlYXJfb2ZmX2RlbGV0ZV8zKDEsIDIsIDMsIDQsIDUpKCkiLCAidW5k
ZWZpbmVkIik7CitzaG91bGRCZSgidGVhcl9vZmZfZGVsZXRlXzQoMSwgMiwgMywgNCwgNSkoKSIs
ICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJ0ZWFyX29mZl9kZWxldGVfNSgxLCAyLCAzLCA0LCA1
KSgpIiwgInVuZGVmaW5lZCIpOworCitmdW5jdGlvbiBkZWxldGVfbm90X2xpdmVfMShhLCBiLCBj
KQoreworICAgIGRlbGV0ZSBhcmd1bWVudHNbMF07CisgICAgcmV0dXJuIGE7Cit9CisKK2Z1bmN0
aW9uIGRlbGV0ZV9ub3RfbGl2ZV8yKGEsIGIsIGMpCit7CisgICAgZGVsZXRlIGFyZ3VtZW50c1sx
XTsKKyAgICByZXR1cm4gYjsKK30KKworZnVuY3Rpb24gZGVsZXRlX25vdF9saXZlXzMoYSwgYiwg
YykKK3sKKyAgICBkZWxldGUgYXJndW1lbnRzWzJdOworICAgIHJldHVybiBjOworfQorCitzaG91
bGRCZSgiZGVsZXRlX25vdF9saXZlXzEoMSwgMiwgMykiLCAiMSIpOworc2hvdWxkQmUoImRlbGV0
ZV9ub3RfbGl2ZV8yKDEsIDIsIDMpIiwgIjIiKTsKK3Nob3VsZEJlKCJkZWxldGVfbm90X2xpdmVf
MygxLCAyLCAzKSIsICIzIik7CisKK3Nob3VsZEJlKCJkZWxldGVfbm90X2xpdmVfMSgxKSIsICIx
Iik7CitzaG91bGRCZSgiZGVsZXRlX25vdF9saXZlXzIoMSkiLCAidW5kZWZpbmVkIik7CitzaG91
bGRCZSgiZGVsZXRlX25vdF9saXZlXzMoMSkiLCAidW5kZWZpbmVkIik7CisKK3Nob3VsZEJlKCJk
ZWxldGVfbm90X2xpdmVfMSgxLCAyLCAzLCA0LCA1KSIsICIxIik7CitzaG91bGRCZSgiZGVsZXRl
X25vdF9saXZlXzIoMSwgMiwgMywgNCwgNSkiLCAiMiIpOworc2hvdWxkQmUoImRlbGV0ZV9ub3Rf
bGl2ZV8zKDEsIDIsIDMsIDQsIDUpIiwgIjMiKTsKKworZnVuY3Rpb24gdGVhcl9vZmZfZGVsZXRl
X25vdF9saXZlXzEoYSwgYiwgYykKK3sKKyAgICByZXR1cm4gZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgZGVsZXRlIGFyZ3VtZW50c1swXTsKKyAgICAgICAgcmV0dXJuIGE7CisgICAgfTsKK30K
KworZnVuY3Rpb24gdGVhcl9vZmZfZGVsZXRlX25vdF9saXZlXzIoYSwgYiwgYykKK3sKKyAgICBy
ZXR1cm4gZnVuY3Rpb24gKCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBhcmd1bWVudHNbMV07Cisg
ICAgICAgIHJldHVybiBiOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRlYXJfb2ZmX2RlbGV0ZV9u
b3RfbGl2ZV8zKGEsIGIsIGMpCit7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGRlbGV0ZSBhcmd1bWVudHNbMl07CisgICAgICAgIHJldHVybiBjOworICAgIH07Cit9CisK
K3Nob3VsZEJlKCJ0ZWFyX29mZl9kZWxldGVfbm90X2xpdmVfMSgxLCAyLCAzKSgpIiwgIjEiKTsK
K3Nob3VsZEJlKCJ0ZWFyX29mZl9kZWxldGVfbm90X2xpdmVfMigxLCAyLCAzKSgpIiwgIjIiKTsK
K3Nob3VsZEJlKCJ0ZWFyX29mZl9kZWxldGVfbm90X2xpdmVfMygxLCAyLCAzKSgpIiwgIjMiKTsK
Kworc2hvdWxkQmUoInRlYXJfb2ZmX2RlbGV0ZV9ub3RfbGl2ZV8xKDEpKCkiLCAiMSIpOworc2hv
dWxkQmUoInRlYXJfb2ZmX2RlbGV0ZV9ub3RfbGl2ZV8yKDEpKCkiLCAidW5kZWZpbmVkIik7Citz
aG91bGRCZSgidGVhcl9vZmZfZGVsZXRlX25vdF9saXZlXzMoMSkoKSIsICJ1bmRlZmluZWQiKTsK
Kworc2hvdWxkQmUoInRlYXJfb2ZmX2RlbGV0ZV9ub3RfbGl2ZV8xKDEsIDIsIDMsIDQsIDUpKCki
LCAiMSIpOworc2hvdWxkQmUoInRlYXJfb2ZmX2RlbGV0ZV9ub3RfbGl2ZV8yKDEsIDIsIDMsIDQs
IDUpKCkiLCAiMiIpOworc2hvdWxkQmUoInRlYXJfb2ZmX2RlbGV0ZV9ub3RfbGl2ZV8zKDEsIDIs
IDMsIDQsIDUpKCkiLCAiMyIpOworCitmdW5jdGlvbiBhY2Nlc3NfYWZ0ZXJfZGVsZXRlX25hbWVk
XzIoYSwgYiwgYykKK3sKKyAgICBkZWxldGUgYXJndW1lbnRzWzBdOworICAgIHJldHVybiBiOwor
fQorCitmdW5jdGlvbiBhY2Nlc3NfYWZ0ZXJfZGVsZXRlX25hbWVkXzMoYSwgYiwgYykKK3sKKyAg
ICBkZWxldGUgYXJndW1lbnRzWzBdOworICAgIHJldHVybiBjOworfQorCitmdW5jdGlvbiBhY2Nl
c3NfYWZ0ZXJfZGVsZXRlX25hbWVkXzQoYSwgYiwgYykKK3sKKyAgICBkZWxldGUgYXJndW1lbnRz
WzBdOworICAgIHJldHVybiBhcmd1bWVudHNbM107Cit9CisKK3Nob3VsZEJlKCJhY2Nlc3NfYWZ0
ZXJfZGVsZXRlX25hbWVkXzIoMSwgMiwgMykiLCAiMiIpOworc2hvdWxkQmUoImFjY2Vzc19hZnRl
cl9kZWxldGVfbmFtZWRfMygxLCAyLCAzKSIsICIzIik7CitzaG91bGRCZSgiYWNjZXNzX2FmdGVy
X2RlbGV0ZV9uYW1lZF80KDEsIDIsIDMpIiwgInVuZGVmaW5lZCIpOworCitzaG91bGRCZSgiYWNj
ZXNzX2FmdGVyX2RlbGV0ZV9uYW1lZF8yKDEpIiwgInVuZGVmaW5lZCIpOworc2hvdWxkQmUoImFj
Y2Vzc19hZnRlcl9kZWxldGVfbmFtZWRfMygxKSIsICJ1bmRlZmluZWQiKTsKK3Nob3VsZEJlKCJh
Y2Nlc3NfYWZ0ZXJfZGVsZXRlX25hbWVkXzQoMSkiLCAidW5kZWZpbmVkIik7CisKK3Nob3VsZEJl
KCJhY2Nlc3NfYWZ0ZXJfZGVsZXRlX25hbWVkXzIoMSwgMiwgMywgNCkiLCAiMiIpOworc2hvdWxk
QmUoImFjY2Vzc19hZnRlcl9kZWxldGVfbmFtZWRfMygxLCAyLCAzLCA0KSIsICIzIik7CitzaG91
bGRCZSgiYWNjZXNzX2FmdGVyX2RlbGV0ZV9uYW1lZF80KDEsIDIsIDMsIDQpIiwgIjQiKTsKKwor
ZnVuY3Rpb24gYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV8xKGEsIGIsIGMpCit7CisgICAgZGVs
ZXRlIGFyZ3VtZW50c1szXTsKKyAgICByZXR1cm4gYTsKK30KKworZnVuY3Rpb24gYWNjZXNzX2Fm
dGVyX2RlbGV0ZV9leHRyYV8yKGEsIGIsIGMpCit7CisgICAgZGVsZXRlIGFyZ3VtZW50c1szXTsK
KyAgICByZXR1cm4gYjsKK30KKworZnVuY3Rpb24gYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV8z
KGEsIGIsIGMpCit7CisgICAgZGVsZXRlIGFyZ3VtZW50c1szXTsKKyAgICByZXR1cm4gYzsKK30K
KworZnVuY3Rpb24gYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV81KGEsIGIsIGMpCit7CisgICAg
ZGVsZXRlIGFyZ3VtZW50c1szXTsKKyAgICByZXR1cm4gYXJndW1lbnRzWzRdOworfQorCitzaG91
bGRCZSgiYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV8xKDEsIDIsIDMpIiwgIjEiKTsKK3Nob3Vs
ZEJlKCJhY2Nlc3NfYWZ0ZXJfZGVsZXRlX2V4dHJhXzIoMSwgMiwgMykiLCAiMiIpOworc2hvdWxk
QmUoImFjY2Vzc19hZnRlcl9kZWxldGVfZXh0cmFfMygxLCAyLCAzKSIsICIzIik7CitzaG91bGRC
ZSgiYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV81KDEsIDIsIDMpIiwgInVuZGVmaW5lZCIpOwor
CitzaG91bGRCZSgiYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV8xKDEpIiwgIjEiKTsKK3Nob3Vs
ZEJlKCJhY2Nlc3NfYWZ0ZXJfZGVsZXRlX2V4dHJhXzIoMSkiLCAidW5kZWZpbmVkIik7CitzaG91
bGRCZSgiYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV8zKDEpIiwgInVuZGVmaW5lZCIpOworc2hv
dWxkQmUoImFjY2Vzc19hZnRlcl9kZWxldGVfZXh0cmFfNSgxKSIsICJ1bmRlZmluZWQiKTsKKwor
c2hvdWxkQmUoImFjY2Vzc19hZnRlcl9kZWxldGVfZXh0cmFfMSgxLCAyLCAzLCA0LCA1KSIsICIx
Iik7CitzaG91bGRCZSgiYWNjZXNzX2FmdGVyX2RlbGV0ZV9leHRyYV8yKDEsIDIsIDMsIDQsIDUp
IiwgIjIiKTsKK3Nob3VsZEJlKCJhY2Nlc3NfYWZ0ZXJfZGVsZXRlX2V4dHJhXzMoMSwgMiwgMywg
NCwgNSkiLCAiMyIpOworc2hvdWxkQmUoImFjY2Vzc19hZnRlcl9kZWxldGVfZXh0cmFfNSgxLCAy
LCAzLCA0LCA1KSIsICI1Iik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="10585"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>