Hello community, here is the log from the commit of package mksusecd for openSUSE:Factory checked in at 2015-07-23 15:23:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mksusecd (Old) and /work/SRC/openSUSE:Factory/.mksusecd.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "mksusecd" Changes: -------- --- /work/SRC/openSUSE:Factory/mksusecd/mksusecd.changes 2015-07-14 17:46:20.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.mksusecd.new/mksusecd.changes 2015-07-23 15:23:10.000000000 +0200 @@ -1,0 +2,6 @@ +Wed Jul 22 17:16:19 CEST 2015 - snwint@suse.com + +- added isozipl to make an iso zipl bootable +- 1.29 + +------------------------------------------------------------------- Old: ---- mksusecd-1.28.tar.xz New: ---- mksusecd-1.29.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mksusecd.spec ++++++ --- /var/tmp/diff_new_pack.Avp9nS/_old 2015-07-23 15:23:11.000000000 +0200 +++ /var/tmp/diff_new_pack.Avp9nS/_new 2015-07-23 15:23:11.000000000 +0200 @@ -18,7 +18,7 @@ Name: mksusecd -Version: 1.28 +Version: 1.29 Release: 0 Summary: Create SUSE Linux installation ISOs License: GPL-3.0+ ++++++ mksusecd-1.28.tar.xz -> mksusecd-1.29.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.28/COPYING_zipl new/mksusecd-1.29/COPYING_zipl --- old/mksusecd-1.28/COPYING_zipl 1970-01-01 01:00:00.000000000 +0100 +++ new/mksusecd-1.29/COPYING_zipl 2015-07-22 17:14:04.000000000 +0200 @@ -0,0 +1,364 @@ +GNU GENERAL PUBLIC LICENSE + +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. + +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + +Everyone is permitted to copy and distribute verbatim copies + +of this license document, but changing it is not allowed. + +Preamble + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to + +guarantee your freedom to share and change free software--to make sure the +software is free for all its users. This General Public License applies to most of +the Free + +Software Foundation's software and to any other program whose authors +commit to using it. (Some other Free Software Foundation software is covered +by the + +GNU Library General Public License instead.) You can apply it to your programs, +too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom +to + +distribute copies of free software (and charge for this service if you wish), that +you receive source code or can get it if you want it, that you can change the +software + +or use pieces of it in new free programs; and that you know you can do these +things. + +To protect your rights, we need to make restrictions that forbid anyone to deny +you these rights or to ask you to surrender the rights. These restrictions translate +to + +certain responsibilities for you if you distribute copies of the software, or if you +modify it. + +For example, if you distribute copies of such a program, whether gratis or for a +fee, you must give the recipients all the rights that you have. You must make sure +that + +they, too, receive or can get the source code. And you must show them these +terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) offer +you this license which gives you legal permission to copy, distribute and/or modify + +the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If the +software is + +modified by someone else and passed on, we want its recipients to know that +what they have is not the original, so that any problems introduced by others will +not + +reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We wish +to avoid the danger that redistributors of a free program will individually obtain + +patent licenses, in effect making the program proprietary. To prevent this, we +have made it clear that any patent must be licensed for everyone's free use or +not + +licensed at all. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND +MODIFICATION + +0. This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the terms of this + +General Public License. The "Program", below, refers to any such program or +work, and a "work based on the Program" means either the Program or any +derivative + +work under copyright law: that is to say, a work containing the Program or a +portion of it, either verbatim or with modifications and/or translated into another + +language. (Hereinafter, translation is included without limitation in the term +"modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered by this +License; they are outside its scope. The act of running the Program is not + +restricted, and the output from the Program is covered only if its contents +constitute a work based on the Program (independent of having been made by +running the + +Program). Whether that is true depends on what the Program does. + +1. You may copy and distribute verbatim copies of the Program's source code as +you receive it, in any medium, provided that you conspicuously and appropriately + +publish on each copy an appropriate copyright notice and disclaimer of warranty; +keep intact all the notices that refer to this License and to the absence of any + +warranty; and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may at +your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Program or any portion of it, thus +forming a work based on the Program, and copy and distribute such +modifications + +or work under the terms of Section 1 above, provided that you also meet all of +these conditions: + +a) You must cause the modified files to carry prominent notices stating that you +changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole or in part +contains or is derived from the Program or any part thereof, to be licensed + +as a whole at no charge to all third parties under the terms of this License. + +c) If the modified program normally reads commands interactively when run, you +must cause it, when started running for such interactive use in the most + +ordinary way, to print or display an announcement including an appropriate +copyright notice and a notice that there is no warranty (or else, saying that you + +provide a warranty) and that users may redistribute the program under these +conditions, and telling the user how to view a copy of this License. (Exception: if + +the Program itself is interactive but does not normally print such an +announcement, your work based on the Program is not required to print an + +announcement.) + +These requirements apply to the modified work as a whole. If identifiable sections +of that work are not derived from the Program, and can be reasonably +considered + +independent and separate works in themselves, then this License, and its terms, +do not apply to those sections when you distribute them as separate works. But + +when you distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of this +License, + +whose permissions for other licensees extend to the entire whole, and thus to +each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to +work written entirely by you; rather, the intent is to exercise the right to control the + +distribution of derivative or collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program with the +Program (or with a work based on the Program) on a volume of a storage or + +distribution medium does not bring the other work under the scope of this +License. + +3. You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 and 2 +above + +provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source +code, which must be distributed under the terms of Sections 1 and 2 above on a + +medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to give any third +party, for a charge no more than your cost of physically performing source + +distribution, a complete machine-readable copy of the corresponding source +code, to be distributed under the terms of Sections 1 and 2 above on a medium + +customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to distribute +corresponding source code. (This alternative is allowed only for noncommercial + +distribution and only if you received the program in object code or executable +form with such an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all the + +source code for all modules it contains, plus any associated interface definition +files, plus the scripts used to control compilation and installation of the +executable. + +However, as a special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary form) with the +major + +components (compiler, kernel, and so on) of the operating system on which the +executable runs, unless that component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the source +code from + +the same place counts as distribution of the source code, even though third +parties are not compelled to copy the source along with the object code. + +4. You may not copy, modify, sublicense, or distribute the Program except as +expressly provided under this License. Any attempt otherwise to copy, modify, + +sublicense or distribute the Program is void, and will automatically terminate your +rights under this License. However, parties who have received copies, or rights, + +from you under this License will not have their licenses terminated so long as +such parties remain in full compliance. + +5. You are not required to accept this License, since you have not signed it. +However, nothing else grants you permission to modify or distribute the Program +or its + +derivative works. These actions are prohibited by law if you do not accept this +License. Therefore, by modifying or distributing the Program (or any work based +on + +the Program), you indicate your acceptance of this License to do so, and all its +terms and conditions for copying, distributing or modifying the Program or works + +based on it. + +6. Each time you redistribute the Program (or any work based on the Program), +the recipient automatically receives a license from the original licensor to copy, + +distribute or modify the Program subject to these terms and conditions. You may +not impose any further restrictions on the recipients' exercise of the rights +granted + +herein. You are not responsible for enforcing compliance by third parties to this +License. + +7. If, as a consequence of a court judgment or allegation of patent infringement +or for any other reason (not limited to patent issues), conditions are imposed on +you + +(whether by court order, agreement or otherwise) that contradict the conditions +of this License, they do not excuse you from the conditions of this License. If you + +cannot distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may not +distribute + +the Program at all. For example, if a patent license would not permit royalty-free +redistribution of the Program by all those who receive copies directly or indirectly + +through you, then the only way you could satisfy both it and this License would be +to refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any particular +circumstance, the balance of the section is intended to apply and the section as +a + +whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or other +property right claims or to contest validity of any such claims; this section has the + +sole purpose of protecting the integrity of the free software distribution system, +which is implemented by public license practices. Many people have made +generous + +contributions to the wide range of software distributed through that system in +reliance on consistent application of that system; it is up to the author/donor to +decide if + +he or she is willing to distribute software through any other system and a licensee +cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +8. If the distribution and/or use of the Program is restricted in certain countries +either by patents or by copyrighted interfaces, the original copyright holder who + +places the Program under this License may add an explicit geographical +distribution limitation excluding those countries, so that distribution is permitted +only in or + +among countries not thus excluded. In such case, this License incorporates the +limitation as if written in the body of this License. + +9. The Free Software Foundation may publish revised and/or new versions of the +General Public License from time to time. Such new versions will be similar in +spirit + +to the present version, but may differ in detail to address new problems or +concerns. + +Each version is given a distinguishing version number. If the Program specifies a +version number of this License which applies to it and "any later version", you +have + +the option of following the terms and conditions either of that version or of any +later version published by the Free Software Foundation. If the Program does +not + +specify a version number of this License, you may choose any version ever +published by the Free Software Foundation. + +10. If you wish to incorporate parts of the Program into other free programs +whose distribution conditions are different, write to the author to ask for +permission. For + +software which is copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our decision will + +be guided by the two goals of preserving the free status of all derivatives of our +free software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS +NO WARRANTY FOR THE PROGRAM, TO THE EXTENT + +PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED +IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER + +PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT + +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO + +THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. +SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE + +COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED +TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY + +OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE +PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, + +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL +DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE + +THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR +DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED + +BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO +OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR + +OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +END OF TERMS AND CONDITIONS \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.28/Makefile new/mksusecd-1.29/Makefile --- old/mksusecd-1.28/Makefile 2015-07-13 15:01:09.000000000 +0200 +++ new/mksusecd-1.29/Makefile 2015-07-22 17:14:04.000000000 +0200 @@ -35,9 +35,12 @@ @cp mksusecd mksusecd.tmp @perl -pi -e 's/0\.0/$(VERSION)/ if /VERSION = /' mksusecd.tmp @perl -pi -e 's#"(.*)"#"$(LIBDIR)"# if /LIBEXECDIR = /' mksusecd.tmp + @cp isozipl isozipl.tmp + @perl -pi -e 's/0\.0/$(VERSION)/ if /VERSION = /' isozipl.tmp install -m 755 -D mksusecd.tmp $(DESTDIR)$(BINDIR)/mksusecd + install -m 755 -D isozipl.tmp $(DESTDIR)$(LIBDIR)/mksusecd/isozipl install -m 755 -D isohybrid $(DESTDIR)$(LIBDIR)/mksusecd/isohybrid - @rm -f mksusecd.tmp + @rm -f mksusecd.tmp isozipl.tmp clean: @rm -f *.o isohybrid diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.28/README.isozipl new/mksusecd-1.29/README.isozipl --- old/mksusecd-1.28/README.isozipl 1970-01-01 01:00:00.000000000 +0100 +++ new/mksusecd-1.29/README.isozipl 2015-07-22 17:14:04.000000000 +0200 @@ -0,0 +1,11 @@ +isozipl is a script that makes an iso image zIPL bootable. + +The script uses a pre-compiled binary blob (stage3 of the scsi loader) from +the zipl command from the s390-tools-1.24.1 package, compiled on s390x. + +See COPYING_zipl for license details. + +You can get the sources here: + +http://www.ibm.com/developerworks/linux/linux390/s390-tools.html + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.28/VERSION new/mksusecd-1.29/VERSION --- old/mksusecd-1.28/VERSION 2015-07-13 15:01:09.000000000 +0200 +++ new/mksusecd-1.29/VERSION 2015-07-22 17:14:04.000000000 +0200 @@ -1 +1 @@ -1.28 +1.29 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.28/changelog new/mksusecd-1.29/changelog --- old/mksusecd-1.28/changelog 2015-07-13 15:01:09.000000000 +0200 +++ new/mksusecd-1.29/changelog 2015-07-22 17:14:04.000000000 +0200 @@ -1,3 +1,6 @@ +2015-07-22: 1.29 + - added isozipl to make an iso zipl bootable + 2015-07-13: 1.28 - fix cpio archive unpacking diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.28/isozipl new/mksusecd-1.29/isozipl --- old/mksusecd-1.28/isozipl 1970-01-01 01:00:00.000000000 +0100 +++ new/mksusecd-1.29/isozipl 2015-07-22 17:14:04.000000000 +0200 @@ -0,0 +1,958 @@ +#! /usr/bin/perl + +use strict; + +use Getopt::Long; + +use Data::Dumper; +$Data::Dumper::Sortkeys = 1; +$Data::Dumper::Terse = 1; +$Data::Dumper::Indent = 1; + +our $VERSION = "0.0"; + +sub usage; +sub isols; +sub find_file; +sub pad; +sub align_to_blocksize; +sub write_iso; +sub read_iso; +sub write_map; +sub write_blockmap; +sub prepare_mapfile; +sub link_to_mapfile; +sub install_zipl; + +my $opt_mapfile = "/boot/s390x/zipl.map"; +my $opt_kernel = "/boot/s390x/linux"; +my $opt_initrd = "/boot/s390x/initrd"; +my $opt_parm = "/boot/s390x/parmfile"; +my $opt_options; +my $opt_verbose = 0; + +my $zipl_psw_load = 0x0008000080000000; +my $block_size = 0x200; + +my $files; +my $map; +my $kernel; +my $initrd; +my $parm; +my $zipl_data; +my $iso; + +GetOptions( + 'map=s' => \$opt_mapfile, + 'kernel=s' => \$opt_kernel, + 'initrd=s' => \$opt_initrd, + 'parm=s' => \$opt_parm, + 'options=s' => \$opt_options, + 'verbose|v' => sub { $opt_verbose++ }, + 'version' => sub { print "$VERSION\n"; exit 0 }, + 'help' => sub { usage 0 }, +) || usage 1; + +$iso = shift; + +usage 1 if ! -f $iso; + +# adjust leading slash, if necessary +$opt_mapfile =~ s#^/*#/# if $opt_mapfile; +$opt_kernel =~ s#^/*#/#; +$opt_initrd =~ s#^/*#/#; +$opt_parm =~ s#^/*#/#; + +install_zipl; + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# usage($exit_code) +# +# Print help text and exit. +# +sub usage +{ + print <<"= = = = = = = ="; +Usage: isozipl [OPTIONS] ISOIMAGE +Modify iso9660 image to make it zipl bootable. + +Options: + + --map MAPFILE Specify mapping file (default: /boot/s390x/zipl.map) + If MAPFILE cannot be found or is the empty string ("") + the boot map will be embedded before the iso volume descriptor. + --kernel KERNEL Specify kernel (default: /boot/s390x/linux) + --initrd INITRD Specify initrd (default: /boot/s390x/initrd) + --parm PARMFILE Specify parm file (default: /boot/s390x/parmfile) + --options OPTS Use boot options OPTS instead of reading them from a parm file. + -v, --verbose Show more messages. Can be repeated to log even more. + --version Show isozipl version. + --help Write this help text. + +Example: + + isozipl foo.iso + += = = = = = = = + + exit shift; +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# ISO file list sorted by start address. +# +# Return ref to array with files. +# +sub isols +{ + open my $fd, "isoinfo -R -l -i $iso 2>/dev/null |"; + + my $dir = "/"; + + while(<$fd>) { + if(/^Directory listing of\s*(\/.*\/)/) { + $dir = $1; + next; + } + + if(/^(.)(.*)\s\[\s*(\d+)(\s+\d+)?\]\s+(.*?)\s*$/) { + my $type = $1; + my @x = split ' ', $2; + $type = ' ' if $type eq '-'; + if($5 ne '.' && $5 ne '..') { + push @$files, { name => "$dir$5", type => $type, start => $3 + 0, size => $x[4] }; + } + } + } + + close $fd; + + $files = [ sort { $a->{start} <=> $b->{start} } @$files ] if $files; + + # printf "%6d\t%s %8d %s\n", $_->{start}, $_->{type}, $_->{size}, $_->{name} for @$files; +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +sub find_file +{ + isols if !$files; + + for (@$files) { + return $_ if $_->{name} eq $_[0]; + } + + return undef; +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +sub pad +{ + my $size = $_[0]; + my $blk_size = $_[1] || $block_size; + + my $pad = $size & ($blk_size - 1); + $pad = $blk_size - $pad if $pad; + + return $pad; +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +sub align_to_blocksize +{ + my $buf_ref = $_[0]; + + # adjust to full block size + $$buf_ref .= "\x00" x pad(length($$buf_ref), $_[1]); +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +sub write_iso +{ + my $ofs = $_[0]; + my $buf = $_[1]; + + die "$iso: open $!\n" unless open my $f, "+<", $iso; + die "$iso: seek $!\n" unless sysseek $f, $ofs, 0; + die "$iso: write $!\n" if syswrite($f, $buf) != length($buf); + + close $f; +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +sub read_iso +{ + my $ofs = $_[0]; + my $size = $_[1]; + my $buf; + + die "$iso: open $!\n" unless open my $f, $iso; + die "$iso: seek $!\n" unless sysseek $f, $ofs, 0; + die "$iso: read $!\n" if sysread($f, $buf, $size) != $size; + + close $f; + + return $buf; +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +sub write_map +{ + my ($idx, $ofs, $buf) = @_; + + substr($map->{image}, $idx * $block_size + $ofs, length($buf), $buf); +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +sub write_blockmap +{ + my ($idx, $start, $size) = @_; + my $max_single = 0x10000; + my $max_entries = $block_size / 0x10 - 1; + my $ent = 0; + + while($size >= $max_single) { + write_map $idx, $ent * 0x10, pack("Q>S>S>", $start, $block_size, $max_single - 1); + $size -= $max_single; + $start += $max_single; + $ent++; + die "$opt_initrd: initrd is too big\n" if $ent >= $max_entries; + } + + if($size) { + write_map $idx, $ent * 0x10, pack("Q>S>S>", $start, $block_size, $size - 1); + } +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +sub prepare_mapfile +{ + $map->{image} = pack "a512", "zSeries bootmap file\ncreated by isozipl\n"; + $map->{idx} = 1; + + $map->{program_table_idx} = $map->{idx}; + $map->{image} .= pack "a512", "zIPL"; + $map->{idx}++; + + $map->{components_idx} = $map->{idx}; + $map->{image} .= pack "a512", "zIPL"; + $map->{idx}++; + + align_to_blocksize \$zipl_data; + $map->{zipl_idx} = $map->{idx}; + $map->{image} .= $zipl_data; + $map->{zipl_len} = length($zipl_data) / $block_size; + $map->{idx} += $map->{zipl_len}; + + my $parm_data = $opt_options ? $opt_options : read_iso $parm->{start} * $block_size, $parm->{size}; + align_to_blocksize \$parm_data; + $map->{parm_idx} = $map->{idx}; + $map->{image} .= $parm_data; + $map->{parm_len} = length($parm_data) / $block_size; + $map->{idx} += $map->{parm_len}; + + # link component table to program table + write_map $map->{program_table_idx}, 0x10, + pack("Q>S>a6", $map->{start} + $map->{components_idx}, $block_size); + + # create zipl stage 3 component + my $idx = $map->{idx}; + $map->{image} .= pack "a512"; + $map->{idx}++; + + write_map $idx, 0, + pack("Q>S>S>", $map->{start} + $map->{zipl_idx}, $block_size, $map->{zipl_len} - 1); + + write_map $map->{components_idx}, 0x20 * 1, + pack("Q>S>a6a7CQ>", $map->{start} + $idx, $block_size, "", "", 2, 0xa000); + + # create kernel component + my $idx = $map->{idx}; + $map->{image} .= pack "a512"; + $map->{idx}++; + + my $s = ($kernel->{size} - 0x10000 + pad($kernel->{size})) / $block_size; + write_blockmap $idx, $kernel->{start} + 0x10000 / $block_size, $s; + + write_map $map->{components_idx}, 0x20 * 2, + pack("Q>S>a6a7CQ>", $map->{start} + $idx, $block_size, "", "", 2, 0x10000); + + # create parm component + my $idx = $map->{idx}; + $map->{image} .= pack "a512"; + $map->{idx}++; + + write_blockmap $idx, $map->{start} + $map->{parm_idx}, $map->{parm_len}; + + write_map $map->{components_idx}, 0x20 * 3, + pack("Q>S>a6a7CQ>", $map->{start} + $idx, $block_size, "", "", 2, $parm->{load}); + + # create initrd component + my $idx = $map->{idx}; + $map->{image} .= pack "a512"; + $map->{idx}++; + + my $s = ($initrd->{size} + pad($initrd->{size})) / $block_size; + write_blockmap $idx, $initrd->{start}, $s; + + write_map $map->{components_idx}, 0x20 * 4, + pack("Q>S>a6a7CQ>", $map->{start} + $idx, $block_size, "", "", 2, $initrd->{load}); + + # create 'exec' component + write_map $map->{components_idx}, 0x20 * 5, + pack("a23CQ>", "", 1, 0xa050 | $zipl_psw_load); + + # patch zipl stage 3 header + + write_map $map->{zipl_idx}, 0, + pack("Q>Q>Q>Q>Q>S>a6", $parm->{load}, $initrd->{load}, $initrd->{size}, 0x10000 | $zipl_psw_load, 0, 1); + + printf "$opt_mapfile: $map->{idx} of ${\($map->{size}/$block_size)} blocks used\n" if $opt_verbose; +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +sub link_to_mapfile +{ + my $head; + + die "$iso: mapping file too small: need $map->{idx} blocks\n" if $map->{size} < $map->{idx} * 0x200; + + write_iso $map->{start} << 9, $map->{image}; + + $head = pack "a4L>Q>Q>S>a6", "zIPL", 1, 0, $map->{start} + $map->{program_table_idx}, 0x200; + + write_iso 0, $head; +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +sub install_zipl +{ + my $f; + + if($opt_mapfile) { + $f = find_file $opt_mapfile; + print "warning: mapping file $opt_mapfile not found on iso\n" if !$f; + } + + if($f) { + $map->{start} = $f->{start} << 2; + $map->{size} = $f->{size}; + } + else { + print "placing map before iso9660 volume descriptor\n" if $opt_verbose; + undef $opt_mapfile; + $map->{start} = 34; + $map->{size} = 30 * 0x200; + } + + my $f = find_file $opt_kernel; + die "kernel $opt_kernel not found on iso\n" if !$f; + + $kernel->{start} = $f->{start} << 2; + $kernel->{size} = $f->{size}; + $kernel->{load} = 0x10000; + die "kernel too small?\n" if $kernel->{size} <= $kernel->{load}; + + if(!$opt_options) { + my $f = find_file $opt_parm; + die "mapping file $opt_parm not found on iso\n" if !$f; + + $parm->{start} = $f->{start} << 2; + $parm->{size} = $f->{size}; + } + # align to 4k + $parm->{load} = $kernel->{size} + pad($kernel->{size}, 0x1000); + + my $f = find_file $opt_initrd; + die "initrd $opt_initrd not found on iso\n" if !$f; + + $initrd->{start} = $f->{start} << 2; + $initrd->{size} = $f->{size}; + # reserve at least 4k + $initrd->{load} = $parm->{load} + 0x1000; + # align to 64k + $initrd->{load} += pad($initrd->{load}, 0x10000); + + # print Dumper($map, $kernel, $initrd, $parm); + + prepare_mapfile; + + link_to_mapfile; +} + + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +# zipl binary blob taken from s390-tools +# +BEGIN { + $zipl_data = + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x07\xfe\x07\x07\x07\x07\x07\x07\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x0d\xd0\x41\x70\x00\x02\x41\x60\x00\x00\xae\x76\x00\x12\x47\x80" . + "\xd0\x18\x41\x70\x00\x01\xae\x76\x00\x12\x01\x0e\x0d\xd0\xe3\xf0" . + "\xd0\x0c\x00\x16\xc0\xe5\x00\x00\x03\x6a\x00\x00\xff\x60\x00\x00" . + "\xeb\xbf\xf0\x78\x00\x24\xc0\xd0\x00\x00\x0f\xc1\xa7\xf1\x1f\x80" . + "\xe3\xf0\xff\xd0\xff\x71\xa7\x84\x00\x01\xe3\x10\x00\xb8\x00\x95" . + "\x50\x10\x0c\x6c\xe3\x10\x04\x04\x10\x50\xc4\x18\xff\xff\xff\xab" . + "\xa7\x1f\xff\xff\xa7\x84\x00\x0f\xc0\x21\x00\x01\x04\x80\xb9\x04" . + "\x00\x31\xa7\x49\x03\x80\xc0\xe5\x00\x00\x02\x31\xeb\x00\x07\xff" . + "\x10\x52\xc4\x58\xff\xff\xff\xa7\xb9\x02\x00\x55\xa7\x74\x00\x08" . + "\xa7\x19\x00\x00\xa7\x29\x03\x81\xa7\xf4\x00\x25\xeb\x00\x0c\x00" . + "\x09\x55\xa7\x84\xff\xf7\xb2\x02\xf0\xa0\xc0\x10\x00\x00\x0f\xe3" . + "\xc0\x30\x00\x00\x10\x60\x95\xff\xf0\xa0\xa7\x29\x03\x80\xb9\xe2" . + "\x70\x31\xa5\x1f\x9c\x00\xe3\x40\x10\x00\x00\x90\xa7\x1b\x00\x01" . + "\x43\x44\x30\x00\xe3\x40\x1f\xff\xff\x72\xa7\x27\xff\xf6\xa7\xf4" . + "\xff\xd9\xeb\x20\x1c\x00\x09\x55\x18\x31\xa7\x74\x00\x08\xa7\x1b" . + "\x00\x01\xa7\x27\xff\xf8\xa7\x38\x03\x81\xa7\x19\x00\x00\xa7\x29" . + "\x03\x81\xeb\x00\x1c\x00\x09\x55\x18\xc1\xa7\x84\x00\x08\xa7\x1b" . + "\x00\x01\xa7\x27\xff\xf8\xa7\xc8\x03\x81\xa7\x18\x00\x00\xb9\x16" . + "\x00\x21\xc0\x41\x00\x01\x04\x80\xeb\x00\x24\x80\x10\x55\x41\x42" . + "\x40\x00\xa7\x84\x00\x06\xa7\x1a\x00\x01\xa7\xf4\xff\xf2\xb9\x16" . + "\x00\x23\xa5\x3f\x9c\x00\xeb\x3d\x2c\x00\x09\x55\x41\x32\x30\x00" . + "\xa7\x74\x00\x0c\xb9\x16\x00\x4c\xc0\x21\x00\x01\x04\x80\xc0\xe5" . + "\x00\x00\x01\xbd\xa7\xf4\x00\x23\xec\x2c\x00\x01\x00\xd8\xa7\x58" . + "\x03\x80\x1a\x21\xec\x25\x00\x06\xc0\x77\xa7\xc8\x03\x7f\x1b\xc1" . + "\x92\x20\x40\x00\xec\xb1\x00\x01\x00\xd8\xb9\x16\x00\x1b\xb9\x16" . + "\x00\x4c\x1a\xcb\xe3\x20\x14\x80\x10\x71\xb9\x16\x00\xcc\xc0\xe5" . + "\x00\x00\x01\x9d\xeb\x00\xc4\x80\x10\x52\xc4\x18\xff\xff\xff\x07" . + "\xe3\x10\x04\x08\x10\x24\xc4\x58\xff\xff\xff\x05\xe3\x50\x04\x10" . + "\x10\x24\xc4\x18\xff\xff\xff\x03\xe3\x10\x00\x00\x00\x24\xc0\xe5" . + "\x00\x00\x00\x59\xe3\x50\xd0\x00\x00\x04\xa7\x19\x00\x01\xe3\x50" . + "\x01\xd0\x00\x24\xa7\x29\x01\xd0\xc0\x30\x00\x00\x00\x08\xe3\x30" . + "\x20\x08\x00\x24\x83\x11\x03\x08\x01\x0d\x1b\x11\x1b\x22\xae\x12" . + "\x00\x12\x82\x00\x00\x00\xe3\x40\xf0\xc0\x00\x04\xeb\xbf\xf0\xa8" . + "\x00\x04\x07\xf4\x07\x07\x07\x07\x07\xfe\x07\x07\x07\x07\x07\x07" . + "\xeb\xef\xf0\x90\x00\x24\xa7\xf1\x1f\x80\xa7\x84\x00\x01\xec\x14" . + "\x0f\xff\x00\xd8\x12\x44\xeb\x33\x00\x0c\x00\x0c\xb9\xf2\x40\x41" . + "\xe3\xf0\xff\xf0\xff\x71\x41\x30\x30\x02\x8a\x40\x00\x0c\xb9\x14" . + "\x00\x44\xc0\xe5\x00\x00\x07\xcf\xec\x28\x00\x0e\x00\x7e\xc0\xe5" . + "\x00\x00\x09\x09\xa7\x29\x45\x24\xeb\xef\xf0\xa0\x00\x04\xc0\xf4" . + "\x00\x00\x09\x1d\xeb\xef\xf0\xa0\x00\x04\x07\xfe\x07\x07\x07\x07" . + "\xeb\xaf\xf0\x70\x00\x24\xa7\xf1\x1f\x80\xa7\x84\x00\x01\xc4\x18" . + "\xff\xff\xfe\xa5\xa7\x12\x00\x02\xe3\xf0\xff\xc8\xff\x71\xa7\x84" . + "\x00\x9e\xa7\x12\x00\x01\xa7\x74\x00\x0d\xe3\x10\x0e\x18\x00\x04" . + "\xe3\xc0\x10\x10\x00\x04\xe3\xd0\x10\x18\x00\x04\xa7\xf4\x00\x89" . + "\xc0\xe5\x00\x00\x03\x84\xb9\x04\x00\xd2\xc0\xe5\x00\x00\x08\x63" . + "\x41\x20\xf0\xa0\xc0\xe5\x00\x00\x07\xe6\xec\x28\x00\x0b\x00\x7e" . + "\xc0\xe5\x00\x00\x08\xc8\xa7\x29\x45\x24\xc0\xe5\x00\x00\x08\xdf" . + "\xb9\x04\x00\x2d\xa7\x39\x00\x00\xa7\x49\x10\x00\xc0\xe5\xff\xff" . + "\xff\x92\xd5\x07\xde\x18\xf0\xa0\xa7\xa4\x00\x10\xb9\x04\x00\x2d" . + "\xe3\x30\xde\x18\x00\x04\xa7\x49\x10\x00\xb9\x04\x00\xbd\xc0\xe5" . + "\xff\xff\xff\x81\xa7\xf4\x00\x05\xe3\xb0\xde\x18\x00\x04\xb9\x04" . + "\x00\x2b\xc0\xe5\x00\x00\x08\xd7\xe3\xd0\xb0\x18\x00\x04\xe3\xc0" . + "\xb0\x10\x00\x04\xe3\x40\xf0\xa0\x00\x04\xb9\xe8\xc0\xad\xb9\x04" . + "\x00\x2c\xe3\xd0\xf0\xa0\x00\x21\xa7\x39\x00\x00\xb9\xe2\x50\x4d" . + "\xb9\x14\x00\x44\xc0\xe5\xff\xff\xff\x5e\xe3\x40\xf0\xa0\x00\x04" . + "\xec\xd4\x00\x0e\xc0\x65\x41\x24\xc0\x00\xb9\x04\x00\x34\xb9\xe9" . + "\x40\x4d\xc0\xe5\x00\x00\x00\xab\xa7\xf4\x00\x10\xb9\x21\x00\x4c" . + "\xb9\x04\x00\x2d\xb9\xe2\x30\x4c\xb9\x04\x00\x3d\x1b\x4d\xb9\x14" . + "\x00\x44\xc0\xe5\xff\xff\xff\x3f\xe3\x40\xf0\xa0\x00\x04\xec\xa4" . + "\x00\x0d\xa0\x65\x1b\x4a\xb9\x04\x00\x2a\xb9\x04\x00\x3a\xb9\x14" . + "\x00\x44\xc0\xe5\xff\xff\xff\x2f\xc0\xe5\x00\x00\x08\x54\xe3\xc0" . + "\x04\x18\x10\x24\xe3\xd0\x04\x20\x10\x24\xe3\x40\xf0\xc8\x00\x04" . + "\xeb\xaf\xf0\xa8\x00\x04\x07\xf4\xeb\x6d\xf0\x60\x00\x24\xa7\xc9" . + "\x00\x00\xb9\x04\x00\xb4\xb9\x04\x00\x1b\xa7\x09\x00\x00\xa7\xcb" . + "\x00\x01\xb9\x87\x00\x03\xb9\x04\x00\xb1\xec\x16\xff\xf6\x00\x7c" . + "\xb9\x21\x00\xc6\xb9\x04\x00\xa2\xb9\xe2\xa0\x6c\xa7\xb9\x00\x00" . + "\xa7\x19\x00\x01\xc0\x90\x00\x00\x0d\xf2\xec\x06\xff\xff\x00\xd8" . + "\xec\xc6\x00\x01\x00\xd8\xb9\x18\x00\xa0\xa7\x0e\xff\xff\xa7\x08" . + "\x00\x01\xb9\xf2\x50\xc0\xa7\xc6\x00\x0c\xa7\x18\x00\x00\x42\x16" . + "\x20\x00\xb9\x14\x00\x26\xeb\x6d\xf0\x60\x00\x04\x07\xfe\xec\x18" . + "\x00\x1e\x00\x7c\xb9\x04\x00\x14\xa7\x09\x00\x00\xb9\x87\x00\x03" . + "\xb9\x04\x00\x10\x43\x01\x90\x00\xb9\x04\x00\x14\x42\x0a\xb0\x00" . + "\xa7\x09\x00\x00\xb9\x87\x00\x03\xb9\x04\x00\x41\xb9\x01\x00\x11" . + "\xeb\x11\x00\x3f\x00\x0c\xa7\xf4\x00\x0d\xec\x58\x00\x07\x00\x7c" . + "\xa7\x08\x00\xf0\xa7\xf4\x00\x04\xa7\x08\x00\x40\x42\x0a\xb0\x00" . + "\xa7\xbb\xff\xff\xa7\xf4\xff\xc9\xa7\x19\x00\x00\xa7\x4b\x00\x01" . + "\xa7\x47\x00\x03\x07\xfe\x42\x31\x20\x00\xa7\x1b\x00\x01\xa7\xf4" . + "\xff\xf9\x07\x07\x07\x07\x07\x07\xa7\x19\x00\x00\xa7\x4b\x00\x01" . + "\xa7\x47\x00\x03\x07\xfe\x43\x51\x30\x00\x42\x51\x20\x00\xa7\x1b" . + "\x00\x01\xa7\xf4\xff\xf7\x07\x07\xb9\x04\x00\x12\xe3\x40\x30\x00" . + "\x00\x90\xec\x48\x00\x0c\x00\x7c\x41\x10\x10\x01\x41\x30\x30\x01" . + "\xe3\x40\x1f\xff\xff\x72\xa7\xf4\xff\xf3\x92\x00\x10\x00\x07\xfe" . + "\xa7\x19\x00\x00\x18\x31\xa7\x1b\x00\x01\xe3\x41\x2f\xff\xff\x73" . + "\xa7\x41\x00\xff\xa7\x74\xff\xf8\xb9\x14\x00\x23\x07\xfe\x07\x07" . + "\xeb\xcf\xf0\x80\x00\x24\xa7\xf1\x1f\x80\xe3\xf0\xff\xe0\xff\x71" . + "\xb9\x04\x00\xd2\xb9\x04\x00\xc3\xa7\x84\x00\x01\xc0\xe5\xff\xff" . + "\xff\xe2\x41\x22\xd0\x00\xb9\x04\x00\x3c\xc0\xe5\xff\xff\xff\xc7" . + "\xe3\x40\xf0\xb0\x00\x04\xb9\x04\x00\x2d\xeb\xcf\xf0\xa0\x00\x04" . + "\x07\xf4\x07\x07\x07\x07\x07\x07\xa7\x19\x00\x00\xa7\x4b\x00\x01" . + "\xa7\x47\x00\x06\xa7\x28\x00\x00\xa7\xf4\x00\x11\xe3\x01\x20\x00" . + "\x00\x90\xa7\x1b\x00\x01\xb9\x94\x00\x00\xe3\x51\x3f\xff\xff\x94" . + "\xec\x05\xff\xf0\x80\x76\xb9\xf9\x50\x20\xb9\x14\x00\x22\x07\xfe" . + "\xa7\x19\x00\x00\xe3\x50\x20\x00\x00\x94\xec\x05\xff\x10\x00\xd8" . + "\xec\x02\x00\x10\x09\x7f\xec\x18\x00\x05\x00\x7c\xb9\x0c\x00\x14" . + "\xa7\x5a\xff\x10\x41\x20\x20\x01\xb9\x18\x00\x15\xa7\xf4\xff\xec" . + "\xec\x38\x00\x06\x00\x7c\xe3\x20\x30\x00\x00\x24\xb9\x04\x00\x21" . + "\x07\xfe\x07\x07\x07\x07\x07\x07\xe3\xd0\xf0\x98\x00\x24\xc0\xd0" . + "\x00\x00\x0c\xd9\xa7\x19\x00\x00\xe3\x50\x20\x00\x00\x90\xec\x05" . + "\x00\x10\x00\xd8\xbd\x01\xd0\x00\xa7\x24\x00\x0f\xec\x18\x00\x05" . + "\x00\x7c\xb9\x0c\x00\x14\xa7\x5a\xff\x10\x41\x20\x20\x01\xb9\x18" . + "\x00\x15\xa7\xf4\xff\xeb\xec\x38\x00\x06\x00\x7c\xe3\x20\x30\x00" . + "\x00\x24\xb9\x04\x00\x21\xe3\xd0\xf0\x98\x00\x04\x07\xfe\x07\x07" . + "\xc0\x50\x00\x00\x0c\xb4\xe3\x20\x50\x00\x00\x09\xeb\x22\x00\x0c" . + "\x00\x0c\xc0\x10\x00\x00\x0c\x9f\xa7\x38\x00\x00\x42\x32\x10\x00" . + "\x07\xfe\x07\x07\x07\x07\x07\x07\xeb\xdf\xf0\x88\x00\x24\xc0\xd0" . + "\x00\x00\x0c\xa1\xa7\xf1\x1f\x80\xe3\xf0\xff\xd8\xff\x71\xa7\x84" . + "\x00\x01\xe3\x40\xd0\x00\x00\x04\xe3\x20\xf0\xa0\x00\x24\xe5\x48" . + "\xf0\xa8\x00\x00\xe3\x20\x30\x00\x00\x04\xe3\x10\x30\x08\x00\x04" . + "\xe3\x40\x30\x00\x00\x24\x41\x40\xf0\xa0\xc0\x50\x00\x00\x00\x0b" . + "\xe3\x50\x40\x08\x00\x24\xe3\x50\x30\x08\x00\x24\xb2\xb2\xf0\xa0" . + "\xe3\x20\x30\x00\x00\x24\xe3\x10\x30\x08\x00\x24\xeb\xdf\xf0\xb0" . + "\x00\x04\x07\xfe\x07\x07\x07\x07\xeb\xdf\xf0\x88\x00\x24\xc0\xd0" . + "\x00\x00\x0c\x6d\xa7\xf1\x1f\x80\xc0\x40\x00\x00\x0c\x56\xa7\x84" . + "\x00\x01\xe3\x10\xd0\x08\x00\x04\xe3\x10\x01\xd0\x00\x24\xc0\x10" . + "\x00\x00\x07\x35\xe3\x10\x01\xd8\x00\x24\xe3\xf0\xff\xe8\xff\x71" . + "\xe3\x40\xd0\x00\x00\x09\xc0\x20\x00\x00\x0c\x3d\xa7\x39\x00\x00" . + "\xc0\xe5\xff\xff\xfe\xbc\xeb\xdf\xf0\xa0\x00\x04\xc0\xf4\xff\xff" . + "\xfc\x72\x07\x07\x07\x07\x07\x07\xe3\xf0\xf0\x98\x00\x24\xc0\x50" . + "\x00\x00\x0c\x45\xa7\xf1\x1f\x80\xe3\xf0\xff\xd8\xff\x71\xa7\x84" . + "\x00\x01\xe3\x10\x50\x00\x00\x04\xe3\x10\xf0\xa0\x00\x24\xe3\x20" . + "\xf0\xa8\x00\x24\xb2\xb2\xf0\xa0\xa7\xf4\x00\x00\x07\x07\x07\x07" . + "\xeb\x6f\xf0\x50\x00\x24\xc0\xd0\x00\x00\x0c\x2d\xa7\xf1\x1f\x80" . + "\xb9\x04\x00\x72\xa7\x84\x00\x01\xe3\xf0\xff\xa8\xff\x71\xb9\x04" . + "\x00\xc4\xa7\xa8\x00\x00\xe3\x10\x30\x00\x00\x90\xec\x16\x00\xa1" . + "\x6c\x7c\x95\xf0\x30\x01\xa7\x84\x00\x08\x41\x20\x30\x01\xa7\x99" . + "\x00\x00\xa7\xf4\x00\x06\x41\x20\x30\x02\xa7\x99\x00\x01\x41\x30" . + "\xf0\xa0\xa7\x49\x00\x0a\xc0\xe5\xff\xff\xfe\xed\xe3\xb0\xf0\xa0" . + "\x00\x04\xe3\x10\xb0\x00\x00\x94\xe3\x30\xc0\x00\x00\x04\xc0\x17" . + "\x00\x00\x00\x93\xb9\xfb\x10\x1a\xe3\xb0\xd0\x00\x00\x88\xec\x32" . + "\x00\x0d\x04\x7c\xeb\x13\x00\x03\x00\x0d\xa7\x1b\x00\x10\xe3\x10" . + "\xc0\x18\x00\x08\xa7\xf4\x00\x0a\xe3\x10\xc0\x10\x00\x04\x41\x40" . + "\x10\x08\xe3\x40\xc0\x10\x00\x24\xa7\x3b\x00\x01\xb9\x14\x00\x62" . + "\xe3\x30\xc0\x00\x00\x24\xa7\x28\x00\xa4\xe3\x30\xb0\x00\x00\x94" . + "\xec\x32\x00\x3e\x80\x76\xa7\x48\x00\xa7\xec\x34\x00\x2e\x80\x76" . + "\xa7\x28\x00\xa2\xec\x32\x00\x42\x60\x76\xe3\x80\x10\x00\x00\x04" . + "\xb9\x04\x00\x28\xc0\xe5\xff\xff\xfe\x56\xb9\x04\x00\x92\xec\x62" . + "\x00\x0e\x40\x65\xb9\x04\x00\x27\xa7\x39\x00\x40\xb9\xe9\x90\x46" . + "\xc0\xe5\xff\xff\xfe\x14\xa7\xf4\x00\x04\xb9\x04\x00\x62\xb9\xe9" . + "\x90\x26\xb9\x04\x00\x38\x41\x22\x70\x00\xc0\xe5\xff\xff\xfe\x27" . + "\x18\x26\xa7\xf4\x00\x20\xb9\x04\x00\x27\xa7\x39\x00\x10\xe3\x40" . + "\x10\x00\x00\x04\xb9\x14\x00\x59\xa7\xf4\x00\x0b\xb9\x04\x00\x27" . + "\xa7\x39\x00\x0a\xe3\x40\x10\x00\x00\x04\xb9\x04\x00\x59\xc0\xe5" . + "\xff\xff\xfd\x85\xa7\xf4\x00\x07\xa7\x29\x45\x11\xc0\xe5\xff\xff" . + "\xff\x36\xb9\x18\x00\x72\x41\x30\xb0\x01\xa7\xf4\x00\x08\x42\x10" . + "\x70\x00\x41\x30\x30\x01\x41\x70\x70\x01\x95\x00\x30\x00\xa7\x74" . + "\xff\x54\xe3\x40\xf0\xe8\x00\x04\x92\x00\x70\x00\xeb\x6f\xf0\xa8" . + "\x00\x04\x07\xf4\x07\x07\x07\x07\xeb\x4f\xf0\x40\x00\x24\xa7\xf1" . + "\x1f\x80\xe3\xf0\xff\x80\xff\x71\xa7\x84\x00\x01\x41\x10\xf1\x20" . + "\xe5\x48\xf0\xa0\x00\x02\xe3\x10\xf0\xb0\x00\x24\x41\x10\xf0\xa0" . + "\xe3\x10\xf0\xb8\x00\x24\xb9\x04\x00\x41\xe5\x48\xf0\xa8\x00\x00" . + "\xc0\xe5\xff\xff\xff\x18\xeb\xef\xf1\x10\x00\x04\x07\xfe\x07\x07" . + "\xeb\x3f\xf0\x38\x00\x24\xa7\xf1\x1f\x80\xe3\xf0\xff\x20\xff\x71" . + "\xa7\x84\x00\x01\x41\x10\xf1\x80\xb9\x04\x00\x32\xe3\x10\xf0\xb0" . + "\x00\x24\x41\x20\xf0\xc7\x41\x10\xf1\x00\x41\x40\xf0\xa0\xe3\x10" . + "\xf0\xb8\x00\x24\xe5\x48\xf0\xa0\x00\x01\xe5\x48\xf0\xa8\x00\x00" . + "\xc0\xe5\xff\xff\xfe\xf0\x41\x20\xf0\xc7\xc0\xe5\x00\x00\x01\x9f" . + "\xeb\xef\xf1\x70\x00\x04\x07\xfe\xeb\xbf\xf0\x78\x00\x24\xc0\xd0" . + "\x00\x00\x0b\x15\xa7\xf1\x1f\x80\xa7\x19\x00\x00\xa7\x84\x00\x01" . + "\xe3\xf0\xff\xd8\xff\x71\xc0\x30\x00\x00\x0a\xe5\xa7\x29\x00\x04" . + "\x43\x41\x30\x00\x18\xc1\xa7\x41\x00\xff\xa7\x84\x00\x0b\xa7\x1b" . + "\x00\x01\xa7\x27\xff\xf7\xa7\x29\x45\x11\xc0\xe5\xff\xff\xfe\xa7" . + "\xeb\xb1\x00\x0c\x00\xdf\xa7\x49\x10\x00\xb9\x14\x00\xbb\xa7\x39" . + "\x00\x00\xe3\xb0\xd0\x00\x00\x08\xb9\x14\x00\xcc\xb9\x04\x00\x2b" . + "\xc0\xe5\xff\xff\xfd\x44\xa7\x28\x00\x01\xc0\x10\x00\x00\x0a\xbb" . + "\x42\x2c\x10\x00\xb9\x04\x00\x2b\xe3\x40\xf0\xb8\x00\x04\xeb\xbf" . + "\xf0\xa0\x00\x04\x07\xf4\x07\x07\xeb\xdf\xf0\x88\x00\x24\xc0\xd0" . + "\x00\x00\x0a\xd1\xc0\x10\x00\x00\x05\xa4\xa7\xf1\x1f\x80\xa7\x84" . + "\x00\x01\xe3\x10\xd0\x00\x00\x09\xeb\x21\x00\x03\x00\x0c\xe3\xf0" . + "\xff\xe8\xff\x71\xec\x12\x00\x01\x00\xd8\xc0\x30\x00\x00\x05\x8d" . + "\x12\x22\xa7\x28\x00\x01\xb9\xf2\x50\x12\xa7\x16\x00\x08\xe3\x20" . + "\x01\x58\x00\x04\xc0\xe5\xff\xff\xfe\x5a\xb9\x04\x00\x23\xa7\x3b" . + "\x00\x08\xb9\x04\x00\x42\xe3\x40\x20\x00\x00\x18\xe3\x40\x01\x58" . + "\x00\x20\xa7\x74\xff\xec\xe3\x10\x20\x04\x00\x14\xeb\xdf\xf0\xa0" . + "\x00\x04\x41\x11\x20\x00\xe3\x10\x01\x58\x00\x24\x07\xfe\x07\x07" . + "\xeb\xdf\xf0\x88\x00\x24\xc0\xd0\x00\x00\x0a\x99\xa7\xf1\x1f\x80" . + "\xe3\xf0\xff\xd0\xff\x71\xa7\x84\x00\x01\xec\x28\x00\x12\x00\x7c" . + "\xeb\x22\x00\x20\x00\x0d\xb2\x05\xf0\xb0\xe3\x10\xf0\xb0\x00\x04" . + "\xb9\x08\x00\x12\xe3\x10\xf0\xb0\x00\x24\xb2\x06\xf0\xb0\xeb\x00" . + "\xf0\xa0\x00\x25\xe3\x10\xf0\xa0\x00\x04\xec\x28\x00\x07\x00\x7c" . + "\xa5\x1b\x0a\x00\xa7\xf4\x00\x06\xa5\x17\xf7\xff\xa5\x1b\x02\x00" . + "\xe3\x10\xf0\xa8\x00\x24\xeb\x00\xf0\xa8\x00\x2f\x41\x10\xd0\x00" . + "\xa7\x39\x01\xb0\xe3\x20\x10\x00\x00\x04\xc0\xe5\xff\xff\xfd\x97" . + "\xa7\x28\x10\x04\xe3\x10\x00\x86\x00\x95\xec\x12\x00\x0c\x80\x76" . + "\xa7\x28\x24\x01\xec\x12\xff\xec\x60\x76\xa7\x28\x00\x00\xa7\xf4" . + "\x00\x04\xa7\x28\x00\x02\xeb\x00\xf0\xa0\x00\x2f\xb9\x14\x00\x22" . + "\xeb\xdf\xf0\xb8\x00\x04\x07\xfe\xeb\xcf\xf0\x80\x00\x24\xa7\xf1" . + "\x1f\x80\xa7\x84\x00\x01\xe3\xf0\xff\xe0\xff\x71\xb9\x04\x00\xd2" . + "\xb9\x04\x00\xc3\xb2\x20\x00\xdc\xb2\x22\x00\x10\x88\x10\x00\x1c" . + "\xec\x18\x00\x0d\x03\x7e\xec\x16\x00\x15\x02\x7e\xa7\x29\x00\x00" . + "\xc0\xe5\xff\xff\xff\x88\xa7\xf4\xff\xef\xa7\x28\x00\x01\xe3\x40" . + "\xf0\xb0\x00\x04\xb9\x14\x00\x22\xeb\xcf\xf0\xa0\x00\x04\x07\xf4" . + "\xa7\x29\x00\x00\xc0\xe5\xff\xff\xff\x76\xa7\x28\x00\x00\xa7\xf4" . + "\xff\xf0\x07\x07\x07\x07\x07\x07\xeb\xcf\xf0\x80\x00\x24\xa7\xf1" . + "\x1f\x80\xe3\xf0\xff\xe0\xff\x71\xb9\x04\x00\xc2\xa7\x84\x00\x01" . + "\xc0\xe5\xff\xff\xfe\xd4\xe5\x44\x20\x00\x00\x1c\xe5\x44\x20\x0a" . + "\x00\x04\xb9\x04\x00\xd2\x18\x2c\xec\xc2\x00\x2a\x03\x7f\xc0\x10" . + "\x00\x00\x09\xf1\xec\x22\x1d\xbc\x03\x55\xe3\x12\x10\x00\x00\x04" . + "\x07\xf1\xa5\x1e\x80\x00\x50\x10\xd0\x0c\xa5\x1e\x40\x00\xa7\xf4" . + "\x00\x15\xe5\x4c\xd0\x0c\x00\x00\xe5\x4c\xd0\x10\x00\x00\xa7\xf4" . + "\x00\x0f\xe5\x4c\xd0\x0c\x00\x00\xa7\xf4\x00\x05\xe5\x4c\xd0\x0c" . + "\x00\x10\xc0\x19\x40\x00\x00\x10\x50\x10\xd0\x10\xc0\x21\x00\x78" . + "\x00\x05\xb9\x04\x00\x3d\xc0\xe5\xff\xff\xff\x81\xec\x26\x00\x1b" . + "\x00\x7e\xe5\x54\xd0\x06\x00\x20\xa7\x74\x00\x15\x58\x10\xd0\x10" . + "\x54\x10\xd0\x14\x59\x10\xd0\x10\xa7\x74\x00\x0d\x58\x10\xd0\x0c" . + "\x58\xc0\xd0\x18\x14\xc1\x17\xc1\x11\xcc\x88\xc0\x00\x1f\xa7\xf4" . + "\x00\x04\xa7\xc8\x00\x01\xb9\x04\x00\x2d\xc0\xe5\xff\xff\xfc\xc3" . + "\xe3\x40\xf0\xb0\x00\x04\xb9\x14\x00\x2c\xeb\xcf\xf0\xa0\x00\x04" . + "\x07\xf4\x07\x07\x07\x07\x07\x07\xeb\x6f\xf0\x50\x00\x24\xa7\xf1" . + "\x1f\x80\xe3\xf0\xff\xa8\xff\x71\xa7\x84\x00\x01\xe3\x20\xf0\xa0" . + "\x00\x24\xa7\xa8\x00\x00\xc0\xe5\xff\xff\xfe\x59\xc0\x19\xd4\xc4" . + "\xc2\x40\x92\x02\x20\x0a\x50\x10\x20\x12\xb9\x04\x00\xc2\xec\xb2" . + "\x00\x52\x00\xd9\xec\x92\x00\x5c\x00\xd9\xe5\x44\x20\x00\x00\x52" . + "\xe5\x44\x20\x08\x00\x4a\xe5\x44\x20\x0e\x00\x44\xe5\x44\x20\x10" . + "\x00\x01\xe5\x4c\x20\x16\x00\x01\xe5\x44\x20\x1a\x00\x38\xe5\x44" . + "\x20\x1c\x00\x01\xe3\x80\xf0\xa0\x00\x04\xb9\x18\x00\x8a\x95\x00" . + "\x80\x00\xa7\x84\x00\x5b\xb9\x04\x00\x2b\xa7\x39\x00\x00\xa7\x49" . + "\x00\x0a\xc0\xe5\xff\xff\xfb\x9b\xe5\x44\xb0\x00\x00\x0a\xe5\x44" . + "\xb0\x02\x00\x04\xe5\x44\xb0\x04\x10\x00\xa7\x19\x00\x00\xb9\x04" . + "\x00\xe8\xe3\x71\x80\x00\x00\x90\xb9\xf8\x10\x5a\x41\x41\x90\x00" . + "\xb9\x94\x00\x07\x18\x25\xb9\x04\x00\x34\xb9\xe8\x10\x6e\xec\x06" . + "\x00\x21\x00\x7e\x48\x00\xb0\x00\x18\x10\x4a\x00\xc0\x00\x4a\x10" . + "\xc0\x0e\x40\x10\xc0\x0e\x48\x10\xc0\x08\x4a\x10\xb0\x00\x40\x00" . + "\xc0\x00\x40\x10\xc0\x08\x95\x00\x60\x00\xa7\x84\x00\x1a\xec\x25" . + "\x00\x01\x00\xd8\xb9\x04\x00\xb4\x41\x30\x40\x0a\xa7\xf4\x00\x11" . + "\xec\x08\xff\xe2\x15\x7e\x42\x71\x90\x00\xa7\x1b\x00\x01\x48\x20" . + "\xb0\x00\xa7\x2a\x00\x01\x40\x20\xb0\x00\xa7\xf4\xff\xc4\x18\xa2" . + "\xb9\x04\x00\x93\xa7\xf4\xff\xa0\xc0\x21\x00\x76\x00\x05\xb9\x04" . + "\x00\x3c\xc0\xe5\xff\xff\xfe\xb3\xec\x26\x00\x10\x00\x7e\xe3\x10" . + "\xc0\x06\x00\x91\xc0\x17\x00\x00\x00\x20\xb9\x03\x00\x11\xeb\xb1" . + "\x00\x3f\x00\x0c\xa7\xf4\x00\x04\xa7\xb8\x00\x01\xb9\x04\x00\x2c" . + "\xc0\xe5\xff\xff\xfc\x00\xe3\x40\xf0\xe8\x00\x04\xb9\x14\x00\x2b" . + "\xeb\x6f\xf0\xa8\x00\x04\x07\xf4\xeb\xdf\xf0\x88\x00\x24\xa7\xf1" . + "\x1f\x80\xb9\x04\x00\xd2\xa7\x84\x00\x01\xe3\xf0\xff\xe8\xff\x71" . + "\xe5\x44\x20\x00\x10\x00\xb9\x04\x00\x3d\xc0\x21\x00\x12\x00\x01" . + "\xc0\xe5\xff\xff\xfe\x7c\xec\x26\x00\x20\x00\x7e\xe5\x54\xd0\x06" . + "\x00\x10\xa7\x74\x00\x0b\xe5\x54\xd0\x06\x00\x10\xa7\x74\x00\x11" . + "\xa7\x28\x00\x00\xa7\xf4\x00\x13\xc0\x21\x00\x02\x00\x01\xb9\x04" . + "\x00\x3d\xc0\xe5\xff\xff\xfe\x63\xec\x28\xff\xef\x00\x7e\xa7\x28" . + "\x00\x02\xa7\xf4\x00\x04\xa7\x28\x00\x01\xb9\x14\x00\x22\xeb\xdf" . + "\xf0\xa0\x00\x04\x07\xfe\x07\x07\xeb\xbf\xf0\x78\x00\x24\xa7\xf1" . + "\x1f\x80\xe3\xf0\xff\xd8\xff\x71\xa7\x84\x00\x01\xb9\x04\x00\xb2" . + "\xc0\xe5\xff\xff\xfd\x5c\xb9\x04\x00\xc2\xc0\xe5\xff\xff\xff\xaf" . + "\xb9\x04\x00\xd2\xec\x26\x00\x0c\x00\x7e\xb9\x04\x00\x2b\x41\x30" . + "\xc0\x18\xa7\x49\x00\x08\xc0\xe5\xff\xff\xfa\xd1\xb9\x04\x00\x2c" . + "\xc0\xe5\xff\xff\xfb\x90\xe3\x40\xf0\xb8\x00\x04\xb9\x04\x00\x2d" . + "\xeb\xbf\xf0\xa0\x00\x04\x07\xf4\xeb\x9f\xf0\x68\x00\x24\xa7\xf1" . + "\x1f\x80\xe3\xf0\xff\xc8\xff\x71\xa7\x84\x00\x01\xb9\x04\x00\x92" . + "\xb9\x04\x00\xb3\xb9\x04\x00\xa4\xc0\xe5\xff\xff\xfd\x28\xb9\x04" . + "\x00\xc2\xa7\x39\x00\x00\xa7\x49\x10\x00\xb9\x04\x00\x2c\xc0\xe5" . + "\xff\xff\xfa\x95\xe5\x44\xc0\x00\x10\x00\xc0\x21\x00\x77\x00\x05" . + "\xb9\x04\x00\x3c\xc0\xe5\xff\xff\xfd\xfa\x18\xd2\xec\x26\x00\xa0" . + "\x00\x7e\xe3\x10\xc0\x06\x00\x95\xec\x16\x00\x85\x20\x7e\xe3\x10" . + "\xc0\x08\x00\x91\xec\x2c\x00\x0e\x00\xd9\x41\x1c\x10\x08\xec\x21" . + "\x00\x8b\xa0\x65\xe5\x54\x20\x02\x13\x10\xa7\x84\x00\x09\xe3\x30" . + "\x20\x00\x00\x91\x41\x23\x20\x00\xa7\xf4\xff\xf3\xe3\x30\x20\x00" . + "\x00\x91\x41\x10\x20\x04\x41\x23\x20\x00\xec\x12\x00\x75\xa0\x65" . + "\xe5\x54\x10\x02\x12\x12\xa7\x84\x00\x09\xe3\x30\x10\x00\x00\x91" . + "\x41\x13\x10\x00\xa7\xf4\xff\xf3\xe3\x20\x10\x00\x00\x91\x41\x22" . + "\x10\x00\x41\x10\x10\x04\xec\x12\x00\x5f\xa0\x65\xe5\x54\x10\x02" . + "\x13\x20\xa7\x74\x00\x41\xe3\x20\x10\x00\x00\x91\x41\x22\x10\x00" . + "\x41\x10\x10\x04\xec\x12\x00\x50\xa0\x65\x95\x31\x10\x01\xa7\x74" . + "\x00\x2c\xe3\x20\x10\x00\x00\x90\x41\x22\x10\x00\x41\x10\x10\x02" . + "\xec\x12\x00\x42\xa0\x65\x95\x30\x10\x01\xa7\x84\x00\x09\xe3\x30" . + "\x10\x00\x00\x90\x41\x13\x10\x00\xa7\xf4\xff\xf4\xec\x18\x00\x34" . + "\x00\x7c\xe3\x40\x10\x00\x00\x94\xb9\x04\x00\x2b\xa7\x4a\xff\xfe" . + "\x41\x30\x10\x02\x50\x40\xa0\x00\xb9\x14\x00\x44\xc0\xe5\xff\xff" . + "\xfa\x1e\xa7\xf4\x00\x27\xe3\x30\x10\x00\x00\x90\x41\x13\x10\x00" . + "\xa7\xf4\xff\xca\xe3\x30\x10\x00\x00\x91\x41\x13\x10\x00\xa7\xf4" . + "\xff\xb4\xa7\x28\x60\xf0\xec\x12\x00\x13\x60\x76\xb9\x04\x00\x29" . + "\xc0\xe5\xff\xff\xfd\x08\xec\x28\xff\x56\x00\x7e\xa7\xd8\x00\x02" . + "\xa7\xf4\x00\x08\xa7\xd8\xff\xfb\xa7\xf4\x00\x04\xa7\xd8\x00\x01" . + "\xb9\x04\x00\x2c\xc0\xe5\xff\xff\xfa\xb6\xe3\x40\xf0\xc8\x00\x04" . + "\xb9\x14\x00\x2d\xeb\x9f\xf0\xa0\x00\x04\x07\xf4\x07\x07\x07\x07" . + "\xeb\xdf\xf0\x88\x00\x24\xa7\xf1\x1f\x80\xa7\x39\x00\x00\xe3\xf0" . + "\xff\xe8\xff\x71\xa7\x49\x10\x00\xb9\x04\x00\xd2\xa7\x84\x00\x01" . + "\xc0\xe5\xff\xff\xf9\xc4\xc0\x21\x00\x77\x00\x05\xe5\x44\xd0\x00" . + "\x10\x00\xb9\x04\x00\x3d\xc0\xe5\xff\xff\xfd\x29\xec\x26\x00\x0e" . + "\x00\x7e\xe3\x10\xd0\x06\x00\x91\xc0\x17\x00\x00\x00\x20\xb9\x03" . + "\x00\x11\xeb\x21\x00\x3f\x00\x0c\xb9\x14\x00\x22\xeb\xdf\xf0\xa0" . + "\x00\x04\x07\xfe\x07\x07\x07\x07\xeb\xdf\xf0\x88\x00\x24\xa7\xf1" . + "\x1f\x80\xa7\x84\x00\x01\xc4\x1d\x00\x00\x08\x75\x12\x11\xe3\xf0" . + "\xff\xe8\xff\x71\xb9\x04\x00\xd2\xa7\x84\x00\x0a\x91\xef\xd0\x1f" . + "\xa7\x74\x00\x1d\xa7\x28\x00\x00\xa7\xf4\x00\x1b\x91\x03\x00\x83" . + "\xa7\x84\x00\x0c\xb9\x04\x00\x2d\xc0\xe5\xff\xff\xff\xac\xec\x28" . + "\xff\xef\x00\x7e\xa7\xf4\x00\x0b\xa7\x29\x00\x00\xc0\xe5\xff\xff" . + "\xfc\x8a\x91\x03\x00\x83\xa7\x74\xff\xef\xa7\x28\x00\x01\xb9\x14" . + "\x00\x22\xeb\xdf\xf0\xa0\x00\x04\x07\xfe\x07\x07\x07\x07\x07\x07" . + "\xeb\xaf\xf0\x70\x00\x24\xa7\xf1\x1f\x80\xe3\xf0\xff\xd0\xff\x71" . + "\xb9\x04\x00\xb3\xa7\x84\x00\x01\xb9\x04\x00\xa2\xb9\x04\x00\xc4" . + "\xc0\xe5\xff\xff\xfb\xdc\x92\x1c\x20\x0a\x92\x00\x20\x0e\x92\x01" . + "\x20\x1e\xe3\xa0\x20\x28\x00\x24\x50\xb0\x20\x34\x50\xc0\x20\x24" . + "\xb9\x04\x00\xd2\xe5\x44\x20\x00\x00\x44\xe5\x44\x20\x08\x00\x3c" . + "\xe5\x4c\x20\x18\x47\x12\xe5\x44\x20\x42\x00\x01\xb9\x04\x00\x3d" . + "\xc0\x21\x00\x76\x00\x05\xc0\xe5\xff\xff\xfc\xa1\xec\x26\x00\x10" . + "\x00\x7e\xe5\x54\xd0\x06\x00\x20\xa7\x74\x00\x0a\xb9\x04\x00\x2d" . + "\xc0\xe5\xff\xff\xff\x84\x18\xc2\xa7\xf4\x00\x04\xa7\xc8\x00\x01" . + "\xb9\x04\x00\x2d\xc0\xe5\xff\xff\xf9\xee\xe3\x40\xf0\xc0\x00\x04" . + "\xb9\x14\x00\x2c\xeb\xaf\xf0\xa0\x00\x04\x07\xf4\x07\x07\x07\x07" . + "\xeb\xcf\xf0\x80\x00\x24\xa7\xf1\x1f\x80\xe3\xf0\xff\xe0\xff\x71" . + "\xa7\x84\x00\x01\xb9\x04\x00\xc2\xc0\xe5\xff\xff\xfb\x88\x92\x1c" . + "\x20\x0a\x92\x01\x20\x0e\x92\x00\x20\x0f\xb9\x04\x00\xd2\xe5\x44" . + "\x20\x00\x00\x44\xe5\x44\x20\x08\x00\x3c\xe5\x4c\x20\x18\x12\x68" . + "\xe5\x44\x20\x42\x00\x01\xb9\x04\x00\x3d\xc0\x21\x00\x76\x00\x05" . + "\xc0\xe5\xff\xff\xfc\x54\xec\x28\x00\x07\x00\x7e\xa7\xc8\xff\xfb" . + "\xa7\xf4\x00\x38\xe5\x54\xd0\x06\x00\x20\xa7\x74\xff\xf9\xc4\x1d" . + "\x00\x00\x07\xb1\x12\x11\xa7\x84\x00\x14\xe3\x10\xd0\x24\x00\x12" . + "\xa7\x84\xff\xee\xc2\x1b\x00\x0f\xff\xff\xec\x11\x20\xb3\x0c\x55" . + "\xe3\x10\xc0\x00\x00\x24\xa7\xc8\x00\x00\xa7\xf4\x00\x1b\x91\x03" . + "\x00\x83\xa7\x84\x00\x0c\xb9\x04\x00\x2d\xc0\xe5\xff\xff\xfe\xe3" . + "\xec\x28\xff\xe5\x00\x7e\xa7\xf4\xff\xd3\xa7\x29\x00\x00\xc0\xe5" . + "\xff\xff\xfb\xc1\x91\x03\x00\x83\xa7\x74\xff\xef\xa7\xf4\xff\xc8" . + "\xb9\x04\x00\x2d\xc0\xe5\xff\xff\xf9\x76\xe3\x40\xf0\xb0\x00\x04" . + "\xb9\x14\x00\x2c\xeb\xcf\xf0\xa0\x00\x04\x07\xf4\x07\x07\x07\x07" . + "\xeb\xcf\xf0\x80\x00\x24\xa7\xf1\x1f\x80\xb9\x04\x00\xc2\xe3\xf0" . + "\xff\xe0\xff\x71\xa7\x29\x00\x02\xa7\x84\x00\x01\xc0\xe5\xff\xff" . + "\xfc\x2e\xc0\xe5\xff\xff\xfb\x0b\x92\x1c\x20\x0a\x92\x00\x20\x0e" . + "\x92\x01\x20\x1e\xe3\xc0\x20\x28\x00\x24\xb9\x04\x00\xd2\xe5\x44" . + "\x20\x00\x00\x44\xe5\x44\x20\x08\x00\x3c\xe5\x4c\x20\x18\x47\x12" . + "\xe5\x4c\x20\x34\x00\x02\xe5\x4c\x20\x24\x00\x01\xe5\x44\x20\x42" . + "\x00\x01\xb9\x04\x00\x3d\xc0\x21\x00\x76\x00\x05\xc0\xe5\xff\xff" . + "\xfb\xce\xec\x26\x00\x0d\x00\x7e\xe5\x54\xd0\x06\x00\x20\xa7\x74" . + "\x00\x07\xb9\x04\x00\x2d\xc0\xe5\xff\xff\xfe\xb1\x95\x00\xd0\x1f" . + "\xa7\x84\x00\x0f\xa7\x18\x00\x01\xb9\x04\x00\x2d\xc4\x1f\x00\x00" . + "\x07\x22\xeb\xcf\xf0\xa0\x00\x04\xc0\xf4\xff\xff\xf9\x14\xa7\x18" . + "\x00\x00\xb9\x04\x00\x2d\xc4\x1f\x00\x00\x07\x15\xc0\xe5\xff\xff" . + "\xf9\x0a\xa7\x29\x00\x01\xc0\xe5\xff\xff\xfb\xd9\xa7\x29\x00\x03" . + "\xeb\xcf\xf0\xa0\x00\x04\xc0\xf4\xff\xff\xfb\xd1\x07\x07\x07\x07" . + "\xeb\xef\xf0\x90\x00\x24\xa7\xf1\x1f\x80\xa7\x29\x00\x01\xe3\xf0" . + "\xff\xf0\xff\x71\xa7\x84\x00\x01\xc0\xe5\xff\xff\xfb\xc0\xa7\x09" . + "\x00\x00\xa7\x19\x00\x00\xa7\x29\x00\x02\x83\x02\x03\x08\xeb\xef" . + "\xf0\xa0\x00\x04\x07\xfe\x07\x07\xeb\xdf\xf0\x88\x00\x24\xa7\xf1" . + "\x1f\x80\xb9\x04\x00\xd2\xe3\xf0\xff\xe8\xff\x71\xc0\x20\x00\x00" . + "\x05\xc6\xa7\x84\x00\x01\xc0\xe5\xff\xff\xfa\x55\xb9\x04\x00\x2d" . + "\xc0\xe5\xff\xff\xf6\xa4\xb9\x04\x00\x2d\xc0\xe5\xff\xff\xf9\x3f" . + "\xeb\xdf\xf0\x88\x00\x24\xc0\xd0\x00\x00\x05\xad\xa7\xf1\x1f\x80" . + "\xb9\x04\x00\x12\xa7\x84\x00\x01\xe3\xf0\xff\xe8\xff\x71\xec\x26" . + "\x00\x07\x00\x7c\xa7\x29\x45\x20\xa7\xf4\x00\x27\xa7\x21\x0f\xff" . + "\xa7\x74\xff\xfa\xa7\x28\xff\xf2\xe5\x01\x10\x00\x00\x00\xb2\x22" . + "\x00\x20\x88\x20\x00\x1c\xec\x22\xff\xef\x01\x7f\xd5\x07\xd0\x00" . + "\x10\x00\xa7\x74\xff\xe9\x41\x20\x10\x0c\xa7\x39\x0f\xf4\xa7\x48" . + "\x00\x00\xb2\x41\x00\x42\xa7\x14\xff\xfe\x59\x40\x10\x08\xa7\x84" . + "\x00\x07\xa7\x29\x45\x21\xc0\xe5\xff\xff\xff\xa9\xe5\x55\x10\x0c" . + "\x00\x01\xa7\x29\x45\x22\xa7\x24\xff\xf8\xe3\x20\x10\x10\x00\x02" . + "\xa7\x74\x00\x06\xa7\x29\x45\x23\xa7\xf4\xff\xef\xeb\xdf\xf0\xa0" . + "\x00\x04\x07\xfe\x07\x07\x07\x07\xeb\x0f\x02\x00\x00\x24\xa7\xfb" . + "\xff\x38\xc0\xe0\xff\xff\xfa\x63\x0d\xee\xeb\x0f\x02\x00\x00\x04" . + "\xb2\xb2\x01\x50\xff\xff\xff\x7a\xff\xff\xff\x7e\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x80\x00\x00\x00" . + "\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00" . + "\x00\x00\x00\x01\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00" . + "\x00\x00\x00\x01\x80\x00\x00\x00\x00\x02\x00\x00\x80\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00" . + "\x00\x00\x00\x00\x00\x00\xb5\xf4\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7" . + "\xf8\xf9\x81\x82\x83\x84\x85\x86\x01\x02\x00\x01\x80\x00\x00\x00" . + "\x00\x00\x00\x00\x00\x00\xac\xa2\x00\x00\x00\x00\x00\x00\xac\xb2" . + "\x00\x00\x00\x00\x00\x00\xac\xc2\x00\x00\x00\x00\x00\x00\xac\xcc" . + "\x4f\x53\x49\x4e\x46\x4f\x53\x5a\xc4\xa4\x94\x97\x40\x86\x81\x89" . + "\x93\x85\x84\x7a\x40\xc3\x88\x85\x83\x92\x40\x84\x89\xa2\x81\x82" . + "\x93\x85\x84\x40\xa6\x81\x89\xa3\x40\x83\x96\x84\x85\x00\x00\x00" . + "\x00\x01\x02\x03\x07\x09\x07\x7f\x07\x07\x07\x0b\x0c\x0d\x0e\x0f" . + "\x10\x11\x12\x13\x07\x0a\x08\x07\x18\x19\x07\x07\x07\x07\x07\x07" . + "\x07\x07\x1c\x07\x07\x0a\x17\x1b\x07\x07\x07\x07\x07\x05\x06\x07" . + "\x07\x07\x16\x07\x07\x07\x07\x04\x07\x07\x07\x07\x14\x15\x07\x1a" . + "\x20\xff\x83\x84\x85\xa0\x07\x86\x87\xa4\x9b\x2e\x3c\x28\x2b\x7c" . + "\x26\x82\x88\x89\x8a\xa1\x8c\x07\x8d\xe1\x21\x24\x2a\x29\x3b\xaa" . + "\x2d\x2f\x07\x8e\x07\x07\x07\x8f\x80\xa5\x07\x2c\x25\x5f\x3e\x3f" . + "\x07\x90\x07\x07\x07\x07\x07\x07\x70\x60\x3a\x23\x40\x27\x3d\x22" . + "\x07\x61\x62\x63\x64\x65\x66\x67\x68\x69\xae\xaf\x07\x07\x07\xf1" . + "\xf8\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\xa6\xa7\x91\x07\x92\x07" . + "\xe6\x7e\x73\x74\x75\x76\x77\x78\x79\x7a\xad\xab\x07\x07\x07\x07" . + "\x5e\x9c\x9d\xfa\x07\x07\x07\xac\xab\x07\x5b\x5d\x07\x07\x07\x07" . + "\x7b\x41\x42\x43\x44\x45\x46\x47\x48\x49\x07\x93\x94\x95\xa2\x07" . + "\x7d\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x07\x96\x81\x97\xa3\x98" . + "\x5c\xf6\x53\x54\x55\x56\x57\x58\x59\x5a\xfd\x07\x99\x07\x07\x07" . + "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x07\x07\x9a\x07\x07\x07" . + "\x00\x01\x02\x03\x07\x09\x07\x7f\x07\x07\x07\x0b\x0c\x0d\x0e\x0f" . + "\x10\x11\x12\x13\x07\x0a\x08\x07\x18\x19\x07\x07\x07\x07\x07\x07" . + "\x07\x07\x1c\x07\x07\x0a\x17\x1b\x07\x07\x07\x07\x07\x05\x06\x07" . + "\x07\x07\x16\x07\x07\x07\x07\x04\x07\x07\x07\x07\x14\x15\x07\x1a" . + "\x20\xff\x83\x84\x85\xa0\x07\x86\x87\xa4\x9b\x2e\x3c\x28\x2b\x7c" . + "\x26\x82\x88\x89\x8a\xa1\x8c\x07\x8d\xe1\x21\x24\x2a\x29\x3b\xaa" . + "\x2d\x2f\x07\x8e\x07\x07\x07\x8f\x80\xa5\x07\x2c\x25\x5f\x3e\x3f" . + "\x07\x90\x07\x07\x07\x07\x07\x07\x70\x60\x3a\x23\x40\x27\x3d\x22" . + "\x07\x61\x62\x63\x64\x65\x66\x67\x68\x69\xae\xaf\x07\x07\x07\xf1" . + "\xf8\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\xa6\xa7\x91\x07\x92\x07" . + "\xe6\x7e\x73\x74\x75\x76\x77\x78\x79\x7a\xad\xab\x07\x07\x07\x07" . + "\x5e\x9c\x9d\xfa\x07\x07\x07\xac\xab\x07\x5b\x5d\x07\x07\x07\x07" . + "\x7b\x41\x42\x43\x44\x45\x46\x47\x48\x49\x07\x93\x94\x95\xa2\x07" . + "\x7d\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x07\x96\x81\x97\xa3\x98" . + "\x5c\xf6\x53\x54\x55\x56\x57\x58\x59\x5a\xfd\x07\x99\x07\x07\x07" . + "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x07\x07\x9a\x07\x07\x07" . + "\x00\x00\x00\x01"; +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mksusecd-1.28/mksusecd new/mksusecd-1.29/mksusecd --- old/mksusecd-1.28/mksusecd 2015-07-13 15:01:09.000000000 +0200 +++ new/mksusecd-1.29/mksusecd 2015-07-22 17:14:04.000000000 +0200 @@ -317,6 +317,7 @@ my $rebuild_initrd; my $hybrid_part_type; my $kernel; +my $warned; my $progress_start = 0; my $progress_end = 100; @@ -1535,13 +1536,14 @@ } } - if($cnt > 1) { - print "warning: more than one kernel/initrd pair to choose from\n"; + if($cnt > 1 && !$warned->{multi_arch}) { + $warned->{multi_arch} = 1; + print "Warning: more than one kernel/initrd pair to choose from\n"; + print "(Use '--arch' option to select a different one.)\n"; print "Using $x->{kernel} & $x->{initrd}.\n"; - print "Try '--arch' option to select different ones.\n"; } - if($x->{kernel} =~ m#/s390x/#) { + if($opt_new_boot_entry && $x->{kernel} =~ m#/s390x/#) { die "sorry, --add-entry option does not work for s390x\n"; }