summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/Samba-Developers-Guide.pdf4
-rw-r--r--docs/Samba-HOWTO-Collection.pdf10161
-rw-r--r--docs/docbook/faq/errors.sgml2
-rw-r--r--docs/docbook/faq/general.sgml4
-rw-r--r--docs/docbook/faq/install.sgml9
-rw-r--r--docs/faq/clientapp.html19
-rw-r--r--docs/faq/errors.html54
-rw-r--r--docs/faq/general.html31
-rw-r--r--docs/faq/install.html55
-rw-r--r--docs/faq/samba-faq.html64
-rw-r--r--docs/htmldocs/Samba-HOWTO-Collection.html16882
-rw-r--r--docs/roadmap-3.html2
-rw-r--r--docs/textdocs/RPC_PLUGIN.txt34
-rw-r--r--examples/LDAP/export_smbpasswd.pl63
-rw-r--r--examples/LDAP/import_smbpasswd.pl65
-rw-r--r--examples/pdb/README46
-rw-r--r--examples/pdb/pdb_test.c14
-rwxr-xr-xexamples/printing/smbprint.old95
-rw-r--r--examples/sam/.cvsignore1
-rw-r--r--examples/sam/Makefile.in28
-rw-r--r--examples/sam/README29
-rw-r--r--examples/sam/sam_skel.c250
-rw-r--r--source3/Makefile.in207
-rw-r--r--source3/auth/auth.c11
-rw-r--r--source3/auth/auth_sam.c43
-rw-r--r--source3/client/smbmount.c11
-rwxr-xr-xsource3/configure2388
-rw-r--r--source3/configure.in140
-rw-r--r--source3/dynconfig.c4
-rw-r--r--source3/include/.cvsignore1
-rw-r--r--source3/include/asn_1.h4
-rw-r--r--source3/include/auth.h9
-rw-r--r--source3/include/charset.h16
-rw-r--r--source3/include/config.h.in2087
-rw-r--r--source3/include/dynconfig.h2
-rw-r--r--source3/include/genparser.h78
-rw-r--r--source3/include/genparser_samba.h58
-rw-r--r--source3/include/gums.h230
-rw-r--r--source3/include/includes.h20
-rw-r--r--source3/include/ntlmssp.h19
-rw-r--r--source3/include/passdb.h8
-rw-r--r--source3/include/rpc_client_proto.h231
-rw-r--r--source3/include/sam.h238
-rw-r--r--source3/include/tdbsam2.h94
-rw-r--r--source3/include/version.h2
-rw-r--r--source3/lib/debug.c4
-rw-r--r--source3/lib/domain_namemap.c1317
-rw-r--r--source3/lib/genparser.c775
-rw-r--r--source3/lib/genparser_samba.c200
-rw-r--r--source3/lib/iconv.c194
-rw-r--r--source3/lib/util.c39
-rw-r--r--source3/lib/util_str.c94
-rw-r--r--source3/libads/ads_utils.c46
-rw-r--r--source3/libads/kerberos_verify.c60
-rw-r--r--source3/libsmb/cliconnect.c7
-rw-r--r--source3/libsmb/clikrb5.c122
-rw-r--r--source3/libsmb/clispnego.c124
-rw-r--r--source3/modules/developer.c132
-rw-r--r--source3/modules/vfs_fake_perms.c471
-rw-r--r--source3/modules/vfs_recycle.c220
-rw-r--r--source3/nsswitch/winbindd.c2
-rw-r--r--source3/nsswitch/winbindd_misc.c12
-rw-r--r--source3/nsswitch/winbindd_nss.h4
-rw-r--r--source3/nsswitch/winbindd_util.c11
-rw-r--r--source3/param/loadparm.c374
-rw-r--r--source3/passdb/pdb_interface.c68
-rw-r--r--source3/passdb/pdb_ldap.c26
-rw-r--r--source3/passdb/pdb_mysql.c (renamed from source3/modules/mysql.c)19
-rw-r--r--source3/passdb/pdb_plugin.c (renamed from source3/sam/sam_plugin.c)47
-rw-r--r--source3/passdb/pdb_xml.c (renamed from source3/modules/xml.c)14
-rw-r--r--source3/rpc_server/srv_dfs.c36
-rw-r--r--source3/rpc_server/srv_lsa.c64
-rw-r--r--source3/rpc_server/srv_netlog.c44
-rw-r--r--source3/rpc_server/srv_pipe.c238
-rw-r--r--source3/rpc_server/srv_reg.c55
-rw-r--r--source3/rpc_server/srv_samr.c128
-rwxr-xr-xsource3/rpc_server/srv_spoolss.c29
-rw-r--r--source3/rpc_server/srv_srvsvc.c59
-rw-r--r--source3/rpc_server/srv_wkssvc.c24
-rw-r--r--source3/rpcclient/cmd_lsarpc.c47
-rw-r--r--source3/sam/SAM-interface_handles.txt123
-rw-r--r--source3/sam/account.c305
-rw-r--r--source3/sam/get_set_account.c845
-rw-r--r--source3/sam/get_set_domain.c263
-rw-r--r--source3/sam/get_set_group.c106
-rw-r--r--source3/sam/group.c193
-rw-r--r--source3/sam/gumm_tdb.c562
-rw-r--r--source3/sam/gums.c131
-rw-r--r--source3/sam/gums_api.c1268
-rw-r--r--source3/sam/gums_helper.c607
-rw-r--r--source3/sam/interface.c1338
-rwxr-xr-xsource3/sam/sam_ads.c1378
-rw-r--r--source3/sam/sam_skel.c251
-rwxr-xr-xsource3/script/genstruct.pl298
-rw-r--r--source3/smbd/process.c12
-rw-r--r--source3/smbd/server.c5
-rw-r--r--source3/smbd/sesssetup.c338
-rw-r--r--source3/torture/cmd_sam.c514
-rw-r--r--source3/torture/samtest.c450
-rw-r--r--source3/utils/editreg.c1874
-rw-r--r--source3/utils/net_lookup.c2
-rw-r--r--source3/utils/pdbedit.c3
-rw-r--r--source3/web/cgi.c31
103 files changed, 8530 insertions, 41286 deletions
diff --git a/docs/Samba-Developers-Guide.pdf b/docs/Samba-Developers-Guide.pdf
index bb93380217..897074783c 100644
--- a/docs/Samba-Developers-Guide.pdf
+++ b/docs/Samba-Developers-Guide.pdf
@@ -1,6 +1,6 @@
%PDF-1.3
%âãÏÓ
-1 0 obj<</Producer(htmldoc 1.8.22 Copyright 1997-2002 Easy Software Products, All Rights Reserved.)/CreationDate(D:20030115201051+0600)/Title(SAMBA Developers Guide)/Creator(Modular DocBook HTML Stylesheet Version 1.77)>>endobj
+1 0 obj<</Producer(htmldoc 1.8.22 Copyright 1997-2002 Easy Software Products, All Rights Reserved.)/CreationDate(D:20030115164419+0600)/Title(SAMBA Developers Guide)/Creator(Modular DocBook HTML Stylesheet Version 1.77)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Bold/Encoding 2 0 R>>endobj
@@ -2527,7 +2527,7 @@ xref
0000174321 00000 n
0000174427 00000 n
trailer
-<</Size 806/Root 805 0 R/Info 1 0 R/ID[<7fd6ff3b92a5faaa32c7fae07a75de5e><7fd6ff3b92a5faaa32c7fae07a75de5e>]>>
+<</Size 806/Root 805 0 R/Info 1 0 R/ID[<37e21dd5bf11a0bb7770129df9f0d2ea><37e21dd5bf11a0bb7770129df9f0d2ea>]>>
startxref
174907
%%EOF
diff --git a/docs/Samba-HOWTO-Collection.pdf b/docs/Samba-HOWTO-Collection.pdf
index 1dedb444bd..e25e15e0a6 100644
--- a/docs/Samba-HOWTO-Collection.pdf
+++ b/docs/Samba-HOWTO-Collection.pdf
@@ -1,6 +1,6 @@
%PDF-1.3
%âãÏÓ
-1 0 obj<</Producer(htmldoc 1.8.22 Copyright 1997-2002 Easy Software Products, All Rights Reserved.)/CreationDate(D:20030115201049+0600)/Title(SAMBA Project Documentation)/Creator(Modular DocBook HTML Stylesheet Version 1.77)>>endobj
+1 0 obj<</Producer(htmldoc 1.8.22 Copyright 1997-2002 Easy Software Products, All Rights Reserved.)/CreationDate(D:20030115164419+0600)/Title(SAMBA Project Documentation)/Creator(Modular DocBook HTML Stylesheet Version 1.76b+)>>endobj
2 0 obj<</Type/Encoding/Differences[ 32/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle/parenleft/parenright/asterisk/plus/comma/minus/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/grave/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 128/Euro 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 159/Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier-Bold/Encoding 2 0 R>>endobj
@@ -13,46 +13,49 @@
11 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
12 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
13 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
-14 0 obj<</Subtype/Link/Rect[72.0 684.0 223.5 697.0]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 734 0]>>endobj
-15 0 obj<</Subtype/Link/Rect[108.0 670.8 174.9 683.8]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 696 0]>>endobj
-16 0 obj<</Subtype/Link/Rect[72.0 644.4 112.9 657.4]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 734 0]>>endobj
-17 0 obj<</Subtype/Link/Rect[72.0 618.0 175.0 631.0]/Border[0 0 0]/Dest[1394 0 R/XYZ 0 734 0]>>endobj
-18 0 obj<</Subtype/Link/Rect[72.0 591.6 131.9 604.6]/Border[0 0 0]/Dest[1396 0 R/XYZ 0 734 0]>>endobj
-19 0 obj<</Subtype/Link/Rect[72.0 565.2 277.3 578.2]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 734 0]>>endobj
-20 0 obj<</Subtype/Link/Rect[108.0 552.0 215.5 565.0]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 696 0]>>endobj
-21 0 obj<</Subtype/Link/Rect[108.0 538.8 221.4 551.8]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 568 0]>>endobj
-22 0 obj<</Subtype/Link/Rect[108.0 525.6 224.1 538.6]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 163 0]>>endobj
-23 0 obj<</Subtype/Link/Rect[108.0 512.4 275.4 525.4]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 734 0]>>endobj
-24 0 obj<</Subtype/Link/Rect[108.0 499.2 280.3 512.2]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 385 0]>>endobj
-25 0 obj<</Subtype/Link/Rect[108.0 486.0 251.3 499.0]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 257 0]>>endobj
-26 0 obj<</Subtype/Link/Rect[126.0 472.8 259.5 485.8]/Border[0 0 0]/Dest[1404 0 R/XYZ 0 734 0]>>endobj
-27 0 obj<</Subtype/Link/Rect[126.0 459.6 307.8 472.6]/Border[0 0 0]/Dest[1404 0 R/XYZ 0 247 0]>>endobj
-28 0 obj<</Subtype/Link/Rect[108.0 446.4 328.6 459.4]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 665 0]>>endobj
-29 0 obj<</Subtype/Link/Rect[108.0 433.2 282.2 446.2]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 498 0]>>endobj
-30 0 obj<</Subtype/Link/Rect[108.0 420.0 478.0 433.0]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 330 0]>>endobj
-31 0 obj<</Subtype/Link/Rect[108.0 406.8 259.4 419.8]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 734 0]>>endobj
-32 0 obj<</Subtype/Link/Rect[126.0 393.6 254.0 406.6]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 553 0]>>endobj
-33 0 obj<</Subtype/Link/Rect[126.0 380.4 204.5 393.4]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 494 0]>>endobj
-34 0 obj<</Subtype/Link/Rect[126.0 367.2 285.2 380.2]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 409 0]>>endobj
-35 0 obj<</Subtype/Link/Rect[126.0 354.0 313.6 367.0]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 734 0]>>endobj
-36 0 obj<</Subtype/Link/Rect[126.0 340.8 195.7 353.8]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 583 0]>>endobj
-37 0 obj<</Subtype/Link/Rect[126.0 327.6 250.3 340.6]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 128 0]>>endobj
-38 0 obj<</Subtype/Link/Rect[72.0 301.2 262.7 314.2]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 734 0]>>endobj
-39 0 obj<</Subtype/Link/Rect[108.0 288.0 226.2 301.0]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 696 0]>>endobj
-40 0 obj<</Subtype/Link/Rect[108.0 274.8 247.9 287.8]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 515 0]>>endobj
-41 0 obj<</Subtype/Link/Rect[108.0 261.6 211.3 274.6]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 137 0]>>endobj
-42 0 obj<</Subtype/Link/Rect[108.0 248.4 236.0 261.4]/Border[0 0 0]/Dest[1416 0 R/XYZ 0 533 0]>>endobj
-43 0 obj<</Subtype/Link/Rect[126.0 235.2 331.3 248.2]/Border[0 0 0]/Dest[1416 0 R/XYZ 0 273 0]>>endobj
-44 0 obj<</Subtype/Link/Rect[108.0 222.0 240.3 235.0]/Border[0 0 0]/Dest[1422 0 R/XYZ 0 560 0]>>endobj
-45 0 obj<</Subtype/Link/Rect[108.0 208.8 310.3 221.8]/Border[0 0 0]/Dest[1424 0 R/XYZ 0 613 0]>>endobj
-46 0 obj<</Subtype/Link/Rect[108.0 195.6 284.6 208.6]/Border[0 0 0]/Dest[1426 0 R/XYZ 0 622 0]>>endobj
-47 0 obj<</Subtype/Link/Rect[108.0 182.4 265.0 195.4]/Border[0 0 0]/Dest[1426 0 R/XYZ 0 266 0]>>endobj
-48 0 obj<</Subtype/Link/Rect[108.0 169.2 276.3 182.2]/Border[0 0 0]/Dest[1428 0 R/XYZ 0 520 0]>>endobj
-49 0 obj<</Subtype/Link/Rect[108.0 156.0 271.1 169.0]/Border[0 0 0]/Dest[1430 0 R/XYZ 0 734 0]>>endobj
-50 0 obj<</Subtype/Link/Rect[108.0 142.8 216.2 155.8]/Border[0 0 0]/Dest[1430 0 R/XYZ 0 645 0]>>endobj
-51 0 obj<</Subtype/Link/Rect[72.0 116.4 163.4 129.4]/Border[0 0 0]/Dest[1432 0 R/XYZ 0 734 0]>>endobj
-52 0 obj<</Subtype/Link/Rect[108.0 103.2 209.1 116.2]/Border[0 0 0]/Dest[1432 0 R/XYZ 0 696 0]>>endobj
-53 0 obj[14 0 R
+14 0 obj<</Subtype/Link/Rect[72.0 684.0 223.5 697.0]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 734 0]>>endobj
+15 0 obj<</Subtype/Link/Rect[108.0 670.8 174.9 683.8]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 696 0]>>endobj
+16 0 obj<</Subtype/Link/Rect[72.0 644.4 112.9 657.4]/Border[0 0 0]/Dest[1136 0 R/XYZ 0 734 0]>>endobj
+17 0 obj<</Subtype/Link/Rect[72.0 618.0 175.0 631.0]/Border[0 0 0]/Dest[1146 0 R/XYZ 0 734 0]>>endobj
+18 0 obj<</Subtype/Link/Rect[72.0 591.6 131.9 604.6]/Border[0 0 0]/Dest[1146 0 R/XYZ 0 696 0]>>endobj
+19 0 obj<</Subtype/Link/Rect[72.0 565.2 224.5 578.2]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 734 0]>>endobj
+20 0 obj<</Subtype/Link/Rect[108.0 552.0 196.3 565.0]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 696 0]>>endobj
+21 0 obj<</Subtype/Link/Rect[108.0 538.8 202.1 551.8]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 568 0]>>endobj
+22 0 obj<</Subtype/Link/Rect[108.0 525.6 204.9 538.6]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 163 0]>>endobj
+23 0 obj<</Subtype/Link/Rect[108.0 512.4 256.2 525.4]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 734 0]>>endobj
+24 0 obj<</Subtype/Link/Rect[108.0 499.2 261.1 512.2]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 382 0]>>endobj
+25 0 obj<</Subtype/Link/Rect[108.0 486.0 232.1 499.0]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 254 0]>>endobj
+26 0 obj<</Subtype/Link/Rect[126.0 472.8 232.0 485.8]/Border[0 0 0]/Dest[1154 0 R/XYZ 0 734 0]>>endobj
+27 0 obj<</Subtype/Link/Rect[126.0 459.6 280.3 472.6]/Border[0 0 0]/Dest[1154 0 R/XYZ 0 244 0]>>endobj
+28 0 obj<</Subtype/Link/Rect[108.0 446.4 309.3 459.4]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 665 0]>>endobj
+29 0 obj<</Subtype/Link/Rect[108.0 433.2 262.9 446.2]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 498 0]>>endobj
+30 0 obj<</Subtype/Link/Rect[108.0 420.0 458.7 433.0]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 330 0]>>endobj
+31 0 obj<</Subtype/Link/Rect[108.0 406.8 234.6 419.8]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 734 0]>>endobj
+32 0 obj<</Subtype/Link/Rect[126.0 393.6 221.0 406.6]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 553 0]>>endobj
+33 0 obj<</Subtype/Link/Rect[126.0 380.4 171.5 393.4]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 494 0]>>endobj
+34 0 obj<</Subtype/Link/Rect[126.0 367.2 252.2 380.2]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 409 0]>>endobj
+35 0 obj<</Subtype/Link/Rect[126.0 354.0 280.6 367.0]/Border[0 0 0]/Dest[1160 0 R/XYZ 0 734 0]>>endobj
+36 0 obj<</Subtype/Link/Rect[126.0 340.8 162.7 353.8]/Border[0 0 0]/Dest[1160 0 R/XYZ 0 583 0]>>endobj
+37 0 obj<</Subtype/Link/Rect[126.0 327.6 217.3 340.6]/Border[0 0 0]/Dest[1160 0 R/XYZ 0 128 0]>>endobj
+38 0 obj<</Subtype/Link/Rect[72.0 301.2 209.8 314.2]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 734 0]>>endobj
+39 0 obj<</Subtype/Link/Rect[108.0 288.0 207.0 301.0]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 696 0]>>endobj
+40 0 obj<</Subtype/Link/Rect[108.0 274.8 228.7 287.8]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 515 0]>>endobj
+41 0 obj<</Subtype/Link/Rect[108.0 261.6 192.0 274.6]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 137 0]>>endobj
+42 0 obj<</Subtype/Link/Rect[108.0 248.4 216.8 261.4]/Border[0 0 0]/Dest[1166 0 R/XYZ 0 533 0]>>endobj
+43 0 obj<</Subtype/Link/Rect[126.0 235.2 303.8 248.2]/Border[0 0 0]/Dest[1166 0 R/XYZ 0 273 0]>>endobj
+44 0 obj<</Subtype/Link/Rect[108.0 222.0 221.0 235.0]/Border[0 0 0]/Dest[1172 0 R/XYZ 0 511 0]>>endobj
+45 0 obj<</Subtype/Link/Rect[108.0 208.8 291.0 221.8]/Border[0 0 0]/Dest[1174 0 R/XYZ 0 560 0]>>endobj
+46 0 obj<</Subtype/Link/Rect[108.0 195.6 265.4 208.6]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 567 0]>>endobj
+47 0 obj<</Subtype/Link/Rect[108.0 182.4 245.8 195.4]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 208 0]>>endobj
+48 0 obj<</Subtype/Link/Rect[108.0 169.2 257.1 182.2]/Border[0 0 0]/Dest[1178 0 R/XYZ 0 454 0]>>endobj
+49 0 obj<</Subtype/Link/Rect[108.0 156.0 246.4 169.0]/Border[0 0 0]/Dest[1180 0 R/XYZ 0 679 0]>>endobj
+50 0 obj<</Subtype/Link/Rect[108.0 142.8 191.4 155.8]/Border[0 0 0]/Dest[1180 0 R/XYZ 0 590 0]>>endobj
+51 0 obj<</Subtype/Link/Rect[72.0 116.4 383.1 129.4]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 734 0]>>endobj
+52 0 obj<</Subtype/Link/Rect[108.0 103.2 156.3 116.2]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 604 0]>>endobj
+53 0 obj<</Subtype/Link/Rect[108.0 90.0 293.8 103.0]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 159 0]>>endobj
+54 0 obj<</Subtype/Link/Rect[108.0 76.8 307.0 89.8]/Border[0 0 0]/Dest[1184 0 R/XYZ 0 520 0]>>endobj
+55 0 obj<</Subtype/Link/Rect[108.0 63.6 167.9 76.6]/Border[0 0 0]/Dest[1184 0 R/XYZ 0 339 0]>>endobj
+56 0 obj[14 0 R
15 0 R
16 0 R
17 0 R
@@ -90,53 +93,52 @@
49 0 R
50 0 R
51 0 R
-52 0 R]endobj
-54 0 obj<</Subtype/Link/Rect[72.0 684.0 435.9 697.0]/Border[0 0 0]/Dest[1434 0 R/XYZ 0 734 0]>>endobj
-55 0 obj<</Subtype/Link/Rect[108.0 670.8 175.5 683.8]/Border[0 0 0]/Dest[1434 0 R/XYZ 0 604 0]>>endobj
-56 0 obj<</Subtype/Link/Rect[108.0 657.6 313.1 670.6]/Border[0 0 0]/Dest[1434 0 R/XYZ 0 159 0]>>endobj
-57 0 obj<</Subtype/Link/Rect[108.0 644.4 326.2 657.4]/Border[0 0 0]/Dest[1436 0 R/XYZ 0 483 0]>>endobj
-58 0 obj<</Subtype/Link/Rect[108.0 631.2 187.1 644.2]/Border[0 0 0]/Dest[1436 0 R/XYZ 0 305 0]>>endobj
-59 0 obj<</Subtype/Link/Rect[108.0 618.0 425.7 631.0]/Border[0 0 0]/Dest[1438 0 R/XYZ 0 467 0]>>endobj
-60 0 obj<</Subtype/Link/Rect[108.0 604.8 232.3 617.8]/Border[0 0 0]/Dest[1438 0 R/XYZ 0 187 0]>>endobj
-61 0 obj<</Subtype/Link/Rect[72.0 578.4 355.3 591.4]/Border[0 0 0]/Dest[1442 0 R/XYZ 0 734 0]>>endobj
-62 0 obj<</Subtype/Link/Rect[108.0 565.2 181.6 578.2]/Border[0 0 0]/Dest[1442 0 R/XYZ 0 672 0]>>endobj
-63 0 obj<</Subtype/Link/Rect[108.0 552.0 268.7 565.0]/Border[0 0 0]/Dest[1442 0 R/XYZ 0 531 0]>>endobj
-64 0 obj<</Subtype/Link/Rect[126.0 538.8 295.0 551.8]/Border[0 0 0]/Dest[1444 0 R/XYZ 0 734 0]>>endobj
-65 0 obj<</Subtype/Link/Rect[126.0 525.6 334.7 538.6]/Border[0 0 0]/Dest[1444 0 R/XYZ 0 609 0]>>endobj
-66 0 obj<</Subtype/Link/Rect[108.0 512.4 246.4 525.4]/Border[0 0 0]/Dest[1444 0 R/XYZ 0 511 0]>>endobj
-67 0 obj<</Subtype/Link/Rect[72.0 486.0 177.1 499.0]/Border[0 0 0]/Dest[1448 0 R/XYZ 0 734 0]>>endobj
-68 0 obj<</Subtype/Link/Rect[72.0 459.6 131.9 472.6]/Border[0 0 0]/Dest[1450 0 R/XYZ 0 734 0]>>endobj
-69 0 obj<</Subtype/Link/Rect[72.0 433.2 423.4 446.2]/Border[0 0 0]/Dest[1452 0 R/XYZ 0 734 0]>>endobj
-70 0 obj<</Subtype/Link/Rect[108.0 420.0 219.2 433.0]/Border[0 0 0]/Dest[1452 0 R/XYZ 0 672 0]>>endobj
-71 0 obj<</Subtype/Link/Rect[108.0 406.8 181.0 419.8]/Border[0 0 0]/Dest[1452 0 R/XYZ 0 584 0]>>endobj
-72 0 obj<</Subtype/Link/Rect[108.0 393.6 316.1 406.6]/Border[0 0 0]/Dest[1454 0 R/XYZ 0 718 0]>>endobj
-73 0 obj<</Subtype/Link/Rect[108.0 380.4 430.0 393.4]/Border[0 0 0]/Dest[1456 0 R/XYZ 0 613 0]>>endobj
-74 0 obj<</Subtype/Link/Rect[126.0 367.2 351.2 380.2]/Border[0 0 0]/Dest[1456 0 R/XYZ 0 227 0]>>endobj
-75 0 obj<</Subtype/Link/Rect[126.0 354.0 380.5 367.0]/Border[0 0 0]/Dest[1458 0 R/XYZ 0 319 0]>>endobj
-76 0 obj<</Subtype/Link/Rect[126.0 340.8 297.4 353.8]/Border[0 0 0]/Dest[1460 0 R/XYZ 0 734 0]>>endobj
-77 0 obj<</Subtype/Link/Rect[108.0 327.6 261.4 340.6]/Border[0 0 0]/Dest[1460 0 R/XYZ 0 385 0]>>endobj
-78 0 obj<</Subtype/Link/Rect[108.0 314.4 252.8 327.4]/Border[0 0 0]/Dest[1462 0 R/XYZ 0 129 0]>>endobj
-79 0 obj<</Subtype/Link/Rect[108.0 301.2 243.6 314.2]/Border[0 0 0]/Dest[1464 0 R/XYZ 0 124 0]>>endobj
-80 0 obj<</Subtype/Link/Rect[108.0 288.0 292.9 301.0]/Border[0 0 0]/Dest[1470 0 R/XYZ 0 507 0]>>endobj
-81 0 obj<</Subtype/Link/Rect[126.0 274.8 350.0 287.8]/Border[0 0 0]/Dest[1472 0 R/XYZ 0 520 0]>>endobj
-82 0 obj<</Subtype/Link/Rect[126.0 261.6 424.2 274.6]/Border[0 0 0]/Dest[1474 0 R/XYZ 0 734 0]>>endobj
-83 0 obj<</Subtype/Link/Rect[108.0 248.4 431.0 261.4]/Border[0 0 0]/Dest[1482 0 R/XYZ 0 718 0]>>endobj
-84 0 obj<</Subtype/Link/Rect[72.0 222.0 512.6 235.0]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 734 0]>>endobj
-85 0 obj<</Subtype/Link/Rect[108.0 208.8 219.2 221.8]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 672 0]>>endobj
-86 0 obj<</Subtype/Link/Rect[108.0 195.6 181.0 208.6]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 597 0]>>endobj
-87 0 obj<</Subtype/Link/Rect[108.0 182.4 359.1 195.4]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 225 0]>>endobj
-88 0 obj<</Subtype/Link/Rect[126.0 169.2 382.3 182.2]/Border[0 0 0]/Dest[1488 0 R/XYZ 0 734 0]>>endobj
-89 0 obj<</Subtype/Link/Rect[126.0 156.0 269.0 169.0]/Border[0 0 0]/Dest[1488 0 R/XYZ 0 609 0]>>endobj
-90 0 obj<</Subtype/Link/Rect[108.0 142.8 325.8 155.8]/Border[0 0 0]/Dest[1488 0 R/XYZ 0 524 0]>>endobj
-91 0 obj<</Subtype/Link/Rect[108.0 129.6 268.1 142.6]/Border[0 0 0]/Dest[1488 0 R/XYZ 0 383 0]>>endobj
-92 0 obj<</Subtype/Link/Rect[126.0 116.4 327.6 129.4]/Border[0 0 0]/Dest[1490 0 R/XYZ 0 620 0]>>endobj
-93 0 obj<</Subtype/Link/Rect[72.0 90.0 282.8 103.0]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 734 0]>>endobj
-94 0 obj<</Subtype/Link/Rect[108.0 76.8 317.6 89.8]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 524 0]>>endobj
-95 0 obj<</Subtype/Link/Rect[108.0 63.6 319.4 76.6]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 417 0]>>endobj
-96 0 obj[54 0 R
-55 0 R
-56 0 R
-57 0 R
+52 0 R
+53 0 R
+54 0 R
+55 0 R]endobj
+57 0 obj<</Subtype/Link/Rect[72.0 684.0 383.1 697.0]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 734 0]>>endobj
+58 0 obj<</Subtype/Link/Rect[108.0 670.8 406.5 683.8]/Border[0 0 0]/Dest[1186 0 R/XYZ 0 494 0]>>endobj
+59 0 obj<</Subtype/Link/Rect[108.0 657.6 213.1 670.6]/Border[0 0 0]/Dest[1186 0 R/XYZ 0 213 0]>>endobj
+60 0 obj<</Subtype/Link/Rect[72.0 631.2 302.4 644.2]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 734 0]>>endobj
+61 0 obj<</Subtype/Link/Rect[108.0 618.0 162.4 631.0]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 696 0]>>endobj
+62 0 obj<</Subtype/Link/Rect[108.0 604.8 249.5 617.8]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 555 0]>>endobj
+63 0 obj<</Subtype/Link/Rect[126.0 591.6 267.5 604.6]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 734 0]>>endobj
+64 0 obj<</Subtype/Link/Rect[126.0 578.4 307.2 591.4]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 609 0]>>endobj
+65 0 obj<</Subtype/Link/Rect[108.0 565.2 227.2 578.2]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 511 0]>>endobj
+66 0 obj<</Subtype/Link/Rect[72.0 538.8 177.1 551.8]/Border[0 0 0]/Dest[1196 0 R/XYZ 0 734 0]>>endobj
+67 0 obj<</Subtype/Link/Rect[72.0 512.4 131.9 525.4]/Border[0 0 0]/Dest[1196 0 R/XYZ 0 696 0]>>endobj
+68 0 obj<</Subtype/Link/Rect[72.0 486.0 345.7 499.0]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 734 0]>>endobj
+69 0 obj<</Subtype/Link/Rect[72.0 459.6 370.5 472.6]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 734 0]>>endobj
+70 0 obj<</Subtype/Link/Rect[108.0 446.4 200.0 459.4]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 672 0]>>endobj
+71 0 obj<</Subtype/Link/Rect[108.0 433.2 161.8 446.2]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 584 0]>>endobj
+72 0 obj<</Subtype/Link/Rect[108.0 420.0 296.8 433.0]/Border[0 0 0]/Dest[1206 0 R/XYZ 0 718 0]>>endobj
+73 0 obj<</Subtype/Link/Rect[108.0 406.8 410.8 419.8]/Border[0 0 0]/Dest[1208 0 R/XYZ 0 613 0]>>endobj
+74 0 obj<</Subtype/Link/Rect[126.0 393.6 323.7 406.6]/Border[0 0 0]/Dest[1208 0 R/XYZ 0 227 0]>>endobj
+75 0 obj<</Subtype/Link/Rect[126.0 380.4 353.0 393.4]/Border[0 0 0]/Dest[1210 0 R/XYZ 0 316 0]>>endobj
+76 0 obj<</Subtype/Link/Rect[126.0 367.2 269.9 380.2]/Border[0 0 0]/Dest[1212 0 R/XYZ 0 734 0]>>endobj
+77 0 obj<</Subtype/Link/Rect[108.0 354.0 242.1 367.0]/Border[0 0 0]/Dest[1212 0 R/XYZ 0 385 0]>>endobj
+78 0 obj<</Subtype/Link/Rect[108.0 340.8 233.6 353.8]/Border[0 0 0]/Dest[1214 0 R/XYZ 0 126 0]>>endobj
+79 0 obj<</Subtype/Link/Rect[108.0 327.6 224.4 340.6]/Border[0 0 0]/Dest[1216 0 R/XYZ 0 124 0]>>endobj
+80 0 obj<</Subtype/Link/Rect[108.0 314.4 273.6 327.4]/Border[0 0 0]/Dest[1222 0 R/XYZ 0 507 0]>>endobj
+81 0 obj<</Subtype/Link/Rect[126.0 301.2 322.5 314.2]/Border[0 0 0]/Dest[1224 0 R/XYZ 0 520 0]>>endobj
+82 0 obj<</Subtype/Link/Rect[126.0 288.0 396.7 301.0]/Border[0 0 0]/Dest[1226 0 R/XYZ 0 734 0]>>endobj
+83 0 obj<</Subtype/Link/Rect[108.0 274.8 411.7 287.8]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 702 0]>>endobj
+84 0 obj<</Subtype/Link/Rect[72.0 248.4 459.8 261.4]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 734 0]>>endobj
+85 0 obj<</Subtype/Link/Rect[108.0 235.2 200.0 248.2]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 672 0]>>endobj
+86 0 obj<</Subtype/Link/Rect[108.0 222.0 161.8 235.0]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 597 0]>>endobj
+87 0 obj<</Subtype/Link/Rect[108.0 208.8 339.9 221.8]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 223 0]>>endobj
+88 0 obj<</Subtype/Link/Rect[126.0 195.6 354.8 208.6]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 734 0]>>endobj
+89 0 obj<</Subtype/Link/Rect[126.0 182.4 241.5 195.4]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 609 0]>>endobj
+90 0 obj<</Subtype/Link/Rect[108.0 169.2 306.6 182.2]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 524 0]>>endobj
+91 0 obj<</Subtype/Link/Rect[108.0 156.0 248.8 169.0]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 383 0]>>endobj
+92 0 obj<</Subtype/Link/Rect[126.0 142.8 300.1 155.8]/Border[0 0 0]/Dest[1242 0 R/XYZ 0 617 0]>>endobj
+93 0 obj<</Subtype/Link/Rect[72.0 116.4 230.0 129.4]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 734 0]>>endobj
+94 0 obj<</Subtype/Link/Rect[108.0 103.2 298.3 116.2]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 551 0]>>endobj
+95 0 obj<</Subtype/Link/Rect[108.0 90.0 300.1 103.0]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 444 0]>>endobj
+96 0 obj<</Subtype/Link/Rect[108.0 76.8 178.6 89.8]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 267 0]>>endobj
+97 0 obj<</Subtype/Link/Rect[108.0 63.6 220.1 76.6]/Border[0 0 0]/Dest[1246 0 R/XYZ 0 564 0]>>endobj
+98 0 obj[57 0 R
58 0 R
59 0 R
60 0 R
@@ -174,53 +176,51 @@
92 0 R
93 0 R
94 0 R
-95 0 R]endobj
-97 0 obj<</Subtype/Link/Rect[72.0 684.0 282.8 697.0]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 734 0]>>endobj
-98 0 obj<</Subtype/Link/Rect[108.0 670.8 197.8 683.8]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 241 0]>>endobj
-99 0 obj<</Subtype/Link/Rect[108.0 657.6 239.4 670.6]/Border[0 0 0]/Dest[1494 0 R/XYZ 0 556 0]>>endobj
-100 0 obj<</Subtype/Link/Rect[108.0 644.4 253.4 657.4]/Border[0 0 0]/Dest[1494 0 R/XYZ 0 240 0]>>endobj
-101 0 obj<</Subtype/Link/Rect[126.0 631.2 218.6 644.2]/Border[0 0 0]/Dest[1494 0 R/XYZ 0 151 0]>>endobj
-102 0 obj<</Subtype/Link/Rect[108.0 618.0 224.7 631.0]/Border[0 0 0]/Dest[1496 0 R/XYZ 0 692 0]>>endobj
-103 0 obj<</Subtype/Link/Rect[108.0 604.8 228.1 617.8]/Border[0 0 0]/Dest[1496 0 R/XYZ 0 603 0]>>endobj
-104 0 obj<</Subtype/Link/Rect[108.0 591.6 152.9 604.6]/Border[0 0 0]/Dest[1496 0 R/XYZ 0 528 0]>>endobj
-105 0 obj<</Subtype/Link/Rect[72.0 565.2 281.6 578.2]/Border[0 0 0]/Dest[1498 0 R/XYZ 0 734 0]>>endobj
-106 0 obj<</Subtype/Link/Rect[108.0 552.0 299.9 565.0]/Border[0 0 0]/Dest[1498 0 R/XYZ 0 696 0]>>endobj
-107 0 obj<</Subtype/Link/Rect[108.0 538.8 288.0 551.8]/Border[0 0 0]/Dest[1500 0 R/XYZ 0 362 0]>>endobj
-108 0 obj<</Subtype/Link/Rect[108.0 525.6 307.9 538.6]/Border[0 0 0]/Dest[1500 0 R/XYZ 0 155 0]>>endobj
-109 0 obj<</Subtype/Link/Rect[72.0 499.2 198.2 512.2]/Border[0 0 0]/Dest[1504 0 R/XYZ 0 734 0]>>endobj
-110 0 obj<</Subtype/Link/Rect[72.0 472.8 131.9 485.8]/Border[0 0 0]/Dest[1506 0 R/XYZ 0 734 0]>>endobj
-111 0 obj<</Subtype/Link/Rect[72.0 446.4 354.3 459.4]/Border[0 0 0]/Dest[1512 0 R/XYZ 0 734 0]>>endobj
-112 0 obj<</Subtype/Link/Rect[108.0 433.2 167.0 446.2]/Border[0 0 0]/Dest[1512 0 R/XYZ 0 672 0]>>endobj
-113 0 obj<</Subtype/Link/Rect[108.0 420.0 333.2 433.0]/Border[0 0 0]/Dest[1512 0 R/XYZ 0 439 0]>>endobj
-114 0 obj<</Subtype/Link/Rect[126.0 406.8 200.6 419.8]/Border[0 0 0]/Dest[1512 0 R/XYZ 0 311 0]>>endobj
-115 0 obj<</Subtype/Link/Rect[126.0 393.6 227.1 406.6]/Border[0 0 0]/Dest[1514 0 R/XYZ 0 441 0]>>endobj
-116 0 obj<</Subtype/Link/Rect[126.0 380.4 218.6 393.4]/Border[0 0 0]/Dest[1514 0 R/XYZ 0 303 0]>>endobj
-117 0 obj<</Subtype/Link/Rect[126.0 367.2 238.7 380.2]/Border[0 0 0]/Dest[1514 0 R/XYZ 0 157 0]>>endobj
-118 0 obj<</Subtype/Link/Rect[108.0 354.0 387.9 367.0]/Border[0 0 0]/Dest[1516 0 R/XYZ 0 339 0]>>endobj
-119 0 obj<</Subtype/Link/Rect[126.0 340.8 279.1 353.8]/Border[0 0 0]/Dest[1518 0 R/XYZ 0 266 0]>>endobj
-120 0 obj<</Subtype/Link/Rect[126.0 327.6 247.6 340.6]/Border[0 0 0]/Dest[1520 0 R/XYZ 0 734 0]>>endobj
-121 0 obj<</Subtype/Link/Rect[126.0 314.4 211.2 327.4]/Border[0 0 0]/Dest[1522 0 R/XYZ 0 459 0]>>endobj
-122 0 obj<</Subtype/Link/Rect[126.0 301.2 218.0 314.2]/Border[0 0 0]/Dest[1522 0 R/XYZ 0 361 0]>>endobj
-123 0 obj<</Subtype/Link/Rect[126.0 288.0 224.1 301.0]/Border[0 0 0]/Dest[1522 0 R/XYZ 0 224 0]>>endobj
-124 0 obj<</Subtype/Link/Rect[108.0 274.8 528.7 287.8]/Border[0 0 0]/Dest[1524 0 R/XYZ 0 670 0]>>endobj
-125 0 obj<</Subtype/Link/Rect[108.0 261.6 503.4 274.6]/Border[0 0 0]/Dest[1524 0 R/XYZ 0 126 0]>>endobj
-126 0 obj<</Subtype/Link/Rect[126.0 248.4 376.8 261.4]/Border[0 0 0]/Dest[1528 0 R/XYZ 0 734 0]>>endobj
-127 0 obj<</Subtype/Link/Rect[126.0 235.2 442.5 248.2]/Border[0 0 0]/Dest[1528 0 R/XYZ 0 484 0]>>endobj
-128 0 obj<</Subtype/Link/Rect[126.0 222.0 356.0 235.0]/Border[0 0 0]/Dest[1528 0 R/XYZ 0 132 0]>>endobj
-129 0 obj<</Subtype/Link/Rect[108.0 208.8 187.1 221.8]/Border[0 0 0]/Dest[1530 0 R/XYZ 0 263 0]>>endobj
-130 0 obj<</Subtype/Link/Rect[72.0 182.4 418.2 195.4]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 734 0]>>endobj
-131 0 obj<</Subtype/Link/Rect[108.0 169.2 450.2 182.2]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 672 0]>>endobj
-132 0 obj<</Subtype/Link/Rect[108.0 156.0 324.6 169.0]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 497 0]>>endobj
-133 0 obj<</Subtype/Link/Rect[108.0 142.8 236.6 155.8]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 330 0]>>endobj
-134 0 obj<</Subtype/Link/Rect[108.0 129.6 297.7 142.6]/Border[0 0 0]/Dest[1534 0 R/XYZ 0 665 0]>>endobj
-135 0 obj<</Subtype/Link/Rect[126.0 116.4 232.0 129.4]/Border[0 0 0]/Dest[1534 0 R/XYZ 0 432 0]>>endobj
-136 0 obj<</Subtype/Link/Rect[126.0 103.2 257.1 116.2]/Border[0 0 0]/Dest[1534 0 R/XYZ 0 189 0]>>endobj
-137 0 obj<</Subtype/Link/Rect[108.0 90.0 306.9 103.0]/Border[0 0 0]/Dest[1536 0 R/XYZ 0 692 0]>>endobj
-138 0 obj<</Subtype/Link/Rect[108.0 76.8 397.6 89.8]/Border[0 0 0]/Dest[1536 0 R/XYZ 0 260 0]>>endobj
-139 0 obj<</Subtype/Link/Rect[108.0 63.6 389.7 76.6]/Border[0 0 0]/Dest[1540 0 R/XYZ 0 599 0]>>endobj
-140 0 obj[97 0 R
-98 0 R
-99 0 R
+95 0 R
+96 0 R
+97 0 R]endobj
+99 0 obj<</Subtype/Link/Rect[72.0 684.0 230.0 697.0]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 734 0]>>endobj
+100 0 obj<</Subtype/Link/Rect[108.0 670.8 234.2 683.8]/Border[0 0 0]/Dest[1246 0 R/XYZ 0 245 0]>>endobj
+101 0 obj<</Subtype/Link/Rect[126.0 657.6 191.1 670.6]/Border[0 0 0]/Dest[1246 0 R/XYZ 0 156 0]>>endobj
+102 0 obj<</Subtype/Link/Rect[108.0 644.4 205.4 657.4]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 692 0]>>endobj
+103 0 obj<</Subtype/Link/Rect[108.0 631.2 208.8 644.2]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 603 0]>>endobj
+104 0 obj<</Subtype/Link/Rect[108.0 618.0 133.7 631.0]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 528 0]>>endobj
+105 0 obj<</Subtype/Link/Rect[72.0 591.6 228.8 604.6]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 734 0]>>endobj
+106 0 obj<</Subtype/Link/Rect[108.0 578.4 280.6 591.4]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 696 0]>>endobj
+107 0 obj<</Subtype/Link/Rect[108.0 565.2 268.7 578.2]/Border[0 0 0]/Dest[1252 0 R/XYZ 0 362 0]>>endobj
+108 0 obj<</Subtype/Link/Rect[108.0 552.0 288.6 565.0]/Border[0 0 0]/Dest[1252 0 R/XYZ 0 155 0]>>endobj
+109 0 obj<</Subtype/Link/Rect[72.0 525.6 198.2 538.6]/Border[0 0 0]/Dest[1256 0 R/XYZ 0 734 0]>>endobj
+110 0 obj<</Subtype/Link/Rect[72.0 499.2 131.9 512.2]/Border[0 0 0]/Dest[1256 0 R/XYZ 0 696 0]>>endobj
+111 0 obj<</Subtype/Link/Rect[72.0 472.8 296.0 485.8]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 734 0]>>endobj
+112 0 obj<</Subtype/Link/Rect[108.0 459.6 142.2 472.6]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 696 0]>>endobj
+113 0 obj<</Subtype/Link/Rect[108.0 446.4 308.4 459.4]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 463 0]>>endobj
+114 0 obj<</Subtype/Link/Rect[126.0 433.2 167.6 446.2]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 335 0]>>endobj
+115 0 obj<</Subtype/Link/Rect[126.0 420.0 194.1 433.0]/Border[0 0 0]/Dest[1262 0 R/XYZ 0 454 0]>>endobj
+116 0 obj<</Subtype/Link/Rect[126.0 406.8 185.6 419.8]/Border[0 0 0]/Dest[1262 0 R/XYZ 0 317 0]>>endobj
+117 0 obj<</Subtype/Link/Rect[126.0 393.6 205.7 406.6]/Border[0 0 0]/Dest[1262 0 R/XYZ 0 168 0]>>endobj
+118 0 obj<</Subtype/Link/Rect[108.0 380.4 363.1 393.4]/Border[0 0 0]/Dest[1264 0 R/XYZ 0 347 0]>>endobj
+119 0 obj<</Subtype/Link/Rect[126.0 367.2 246.1 380.2]/Border[0 0 0]/Dest[1266 0 R/XYZ 0 295 0]>>endobj
+120 0 obj<</Subtype/Link/Rect[126.0 354.0 214.6 367.0]/Border[0 0 0]/Dest[1268 0 R/XYZ 0 734 0]>>endobj
+121 0 obj<</Subtype/Link/Rect[126.0 340.8 178.2 353.8]/Border[0 0 0]/Dest[1270 0 R/XYZ 0 456 0]>>endobj
+122 0 obj<</Subtype/Link/Rect[126.0 327.6 185.0 340.6]/Border[0 0 0]/Dest[1270 0 R/XYZ 0 358 0]>>endobj
+123 0 obj<</Subtype/Link/Rect[126.0 314.4 191.1 327.4]/Border[0 0 0]/Dest[1270 0 R/XYZ 0 221 0]>>endobj
+124 0 obj<</Subtype/Link/Rect[108.0 301.2 504.0 314.2]/Border[0 0 0]/Dest[1272 0 R/XYZ 0 667 0]>>endobj
+125 0 obj<</Subtype/Link/Rect[108.0 288.0 478.6 301.0]/Border[0 0 0]/Dest[1274 0 R/XYZ 0 734 0]>>endobj
+126 0 obj<</Subtype/Link/Rect[126.0 274.8 343.8 287.8]/Border[0 0 0]/Dest[1276 0 R/XYZ 0 692 0]>>endobj
+127 0 obj<</Subtype/Link/Rect[126.0 261.6 409.5 274.6]/Border[0 0 0]/Dest[1276 0 R/XYZ 0 440 0]>>endobj
+128 0 obj<</Subtype/Link/Rect[126.0 248.4 323.0 261.4]/Border[0 0 0]/Dest[1278 0 R/XYZ 0 734 0]>>endobj
+129 0 obj<</Subtype/Link/Rect[108.0 235.2 162.4 248.2]/Border[0 0 0]/Dest[1278 0 R/XYZ 0 172 0]>>endobj
+130 0 obj<</Subtype/Link/Rect[72.0 208.8 359.8 221.8]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 734 0]>>endobj
+131 0 obj<</Subtype/Link/Rect[108.0 195.6 425.4 208.6]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 672 0]>>endobj
+132 0 obj<</Subtype/Link/Rect[108.0 182.4 299.9 195.4]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 497 0]>>endobj
+133 0 obj<</Subtype/Link/Rect[108.0 169.2 211.9 182.2]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 330 0]>>endobj
+134 0 obj<</Subtype/Link/Rect[108.0 156.0 273.0 169.0]/Border[0 0 0]/Dest[1284 0 R/XYZ 0 665 0]>>endobj
+135 0 obj<</Subtype/Link/Rect[126.0 142.8 199.0 155.8]/Border[0 0 0]/Dest[1284 0 R/XYZ 0 432 0]>>endobj
+136 0 obj<</Subtype/Link/Rect[126.0 129.6 224.1 142.6]/Border[0 0 0]/Dest[1284 0 R/XYZ 0 189 0]>>endobj
+137 0 obj<</Subtype/Link/Rect[108.0 116.4 282.2 129.4]/Border[0 0 0]/Dest[1286 0 R/XYZ 0 692 0]>>endobj
+138 0 obj<</Subtype/Link/Rect[108.0 103.2 372.8 116.2]/Border[0 0 0]/Dest[1286 0 R/XYZ 0 260 0]>>endobj
+139 0 obj<</Subtype/Link/Rect[108.0 90.0 364.9 103.0]/Border[0 0 0]/Dest[1290 0 R/XYZ 0 599 0]>>endobj
+140 0 obj[99 0 R
100 0 R
101 0 R
102 0 R
@@ -261,51 +261,52 @@
137 0 R
138 0 R
139 0 R]endobj
-141 0 obj<</Subtype/Link/Rect[72.0 684.0 466.2 697.0]/Border[0 0 0]/Dest[1542 0 R/XYZ 0 734 0]>>endobj
-142 0 obj<</Subtype/Link/Rect[108.0 670.8 207.9 683.8]/Border[0 0 0]/Dest[1542 0 R/XYZ 0 672 0]>>endobj
-143 0 obj<</Subtype/Link/Rect[108.0 657.6 250.4 670.6]/Border[0 0 0]/Dest[1544 0 R/XYZ 0 148 0]>>endobj
-144 0 obj<</Subtype/Link/Rect[108.0 644.4 275.8 657.4]/Border[0 0 0]/Dest[1546 0 R/XYZ 0 705 0]>>endobj
-145 0 obj<</Subtype/Link/Rect[72.0 618.0 407.8 631.0]/Border[0 0 0]/Dest[1548 0 R/XYZ 0 734 0]>>endobj
-146 0 obj<</Subtype/Link/Rect[108.0 604.8 184.7 617.8]/Border[0 0 0]/Dest[1548 0 R/XYZ 0 672 0]>>endobj
-147 0 obj<</Subtype/Link/Rect[126.0 591.6 184.7 604.6]/Border[0 0 0]/Dest[1550 0 R/XYZ 0 652 0]>>endobj
-148 0 obj<</Subtype/Link/Rect[72.0 565.2 210.7 578.2]/Border[0 0 0]/Dest[1552 0 R/XYZ 0 734 0]>>endobj
-149 0 obj<</Subtype/Link/Rect[108.0 552.0 187.1 565.0]/Border[0 0 0]/Dest[1552 0 R/XYZ 0 696 0]>>endobj
-150 0 obj<</Subtype/Link/Rect[108.0 538.8 194.5 551.8]/Border[0 0 0]/Dest[1552 0 R/XYZ 0 317 0]>>endobj
-151 0 obj<</Subtype/Link/Rect[126.0 525.6 233.2 538.6]/Border[0 0 0]/Dest[1552 0 R/XYZ 0 131 0]>>endobj
-152 0 obj<</Subtype/Link/Rect[126.0 512.4 317.9 525.4]/Border[0 0 0]/Dest[1556 0 R/XYZ 0 583 0]>>endobj
-153 0 obj<</Subtype/Link/Rect[126.0 499.2 310.8 512.2]/Border[0 0 0]/Dest[1556 0 R/XYZ 0 169 0]>>endobj
-154 0 obj<</Subtype/Link/Rect[126.0 486.0 374.4 499.0]/Border[0 0 0]/Dest[1558 0 R/XYZ 0 470 0]>>endobj
-155 0 obj<</Subtype/Link/Rect[126.0 472.8 265.6 485.8]/Border[0 0 0]/Dest[1560 0 R/XYZ 0 297 0]>>endobj
-156 0 obj<</Subtype/Link/Rect[108.0 459.6 225.6 472.6]/Border[0 0 0]/Dest[1562 0 R/XYZ 0 734 0]>>endobj
-157 0 obj<</Subtype/Link/Rect[126.0 446.4 237.8 459.4]/Border[0 0 0]/Dest[1562 0 R/XYZ 0 632 0]>>endobj
-158 0 obj<</Subtype/Link/Rect[126.0 433.2 304.7 446.2]/Border[0 0 0]/Dest[1562 0 R/XYZ 0 507 0]>>endobj
-159 0 obj<</Subtype/Link/Rect[126.0 420.0 245.8 433.0]/Border[0 0 0]/Dest[1562 0 R/XYZ 0 423 0]>>endobj
-160 0 obj<</Subtype/Link/Rect[126.0 406.8 258.0 419.8]/Border[0 0 0]/Dest[1562 0 R/XYZ 0 325 0]>>endobj
-161 0 obj<</Subtype/Link/Rect[108.0 393.6 176.8 406.6]/Border[0 0 0]/Dest[1564 0 R/XYZ 0 440 0]>>endobj
-162 0 obj<</Subtype/Link/Rect[126.0 380.4 213.4 393.4]/Border[0 0 0]/Dest[1564 0 R/XYZ 0 406 0]>>endobj
-163 0 obj<</Subtype/Link/Rect[126.0 367.2 283.7 380.2]/Border[0 0 0]/Dest[1566 0 R/XYZ 0 479 0]>>endobj
-164 0 obj<</Subtype/Link/Rect[126.0 354.0 267.7 367.0]/Border[0 0 0]/Dest[1568 0 R/XYZ 0 692 0]>>endobj
-165 0 obj<</Subtype/Link/Rect[126.0 340.8 318.8 353.8]/Border[0 0 0]/Dest[1568 0 R/XYZ 0 511 0]>>endobj
-166 0 obj<</Subtype/Link/Rect[126.0 327.6 242.1 340.6]/Border[0 0 0]/Dest[1570 0 R/XYZ 0 734 0]>>endobj
-167 0 obj<</Subtype/Link/Rect[126.0 314.4 262.9 327.4]/Border[0 0 0]/Dest[1570 0 R/XYZ 0 394 0]>>endobj
-168 0 obj<</Subtype/Link/Rect[126.0 301.2 261.1 314.2]/Border[0 0 0]/Dest[1572 0 R/XYZ 0 718 0]>>endobj
-169 0 obj<</Subtype/Link/Rect[126.0 288.0 241.8 301.0]/Border[0 0 0]/Dest[1572 0 R/XYZ 0 633 0]>>endobj
-170 0 obj<</Subtype/Link/Rect[126.0 274.8 228.4 287.8]/Border[0 0 0]/Dest[1572 0 R/XYZ 0 535 0]>>endobj
-171 0 obj<</Subtype/Link/Rect[72.0 248.4 197.9 261.4]/Border[0 0 0]/Dest[1574 0 R/XYZ 0 734 0]>>endobj
-172 0 obj<</Subtype/Link/Rect[108.0 235.2 187.1 248.2]/Border[0 0 0]/Dest[1574 0 R/XYZ 0 696 0]>>endobj
-173 0 obj<</Subtype/Link/Rect[108.0 222.0 329.2 235.0]/Border[0 0 0]/Dest[1574 0 R/XYZ 0 467 0]>>endobj
-174 0 obj<</Subtype/Link/Rect[72.0 195.6 431.7 208.6]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 734 0]>>endobj
-175 0 obj<</Subtype/Link/Rect[108.0 182.4 170.0 195.4]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 672 0]>>endobj
-176 0 obj<</Subtype/Link/Rect[108.0 169.2 187.1 182.2]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 544 0]>>endobj
-177 0 obj<</Subtype/Link/Rect[108.0 156.0 239.1 169.0]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 231 0]>>endobj
-178 0 obj<</Subtype/Link/Rect[126.0 142.8 211.8 155.8]/Border[0 0 0]/Dest[1580 0 R/XYZ 0 560 0]>>endobj
-179 0 obj<</Subtype/Link/Rect[108.0 129.6 227.5 142.6]/Border[0 0 0]/Dest[1580 0 R/XYZ 0 409 0]>>endobj
-180 0 obj<</Subtype/Link/Rect[126.0 116.4 312.1 129.4]/Border[0 0 0]/Dest[1580 0 R/XYZ 0 294 0]>>endobj
-181 0 obj<</Subtype/Link/Rect[126.0 103.2 254.3 116.2]/Border[0 0 0]/Dest[1582 0 R/XYZ 0 734 0]>>endobj
-182 0 obj<</Subtype/Link/Rect[126.0 90.0 312.4 103.0]/Border[0 0 0]/Dest[1582 0 R/XYZ 0 292 0]>>endobj
-183 0 obj<</Subtype/Link/Rect[126.0 76.8 292.8 89.8]/Border[0 0 0]/Dest[1584 0 R/XYZ 0 665 0]>>endobj
-184 0 obj<</Subtype/Link/Rect[126.0 63.6 226.5 76.6]/Border[0 0 0]/Dest[1584 0 R/XYZ 0 488 0]>>endobj
-185 0 obj[141 0 R
+141 0 obj<</Subtype/Link/Rect[72.0 684.0 407.8 697.0]/Border[0 0 0]/Dest[1292 0 R/XYZ 0 734 0]>>endobj
+142 0 obj<</Subtype/Link/Rect[108.0 670.8 183.2 683.8]/Border[0 0 0]/Dest[1292 0 R/XYZ 0 672 0]>>endobj
+143 0 obj<</Subtype/Link/Rect[108.0 657.6 225.6 670.6]/Border[0 0 0]/Dest[1294 0 R/XYZ 0 127 0]>>endobj
+144 0 obj<</Subtype/Link/Rect[108.0 644.4 251.0 657.4]/Border[0 0 0]/Dest[1296 0 R/XYZ 0 679 0]>>endobj
+145 0 obj<</Subtype/Link/Rect[72.0 618.0 349.4 631.0]/Border[0 0 0]/Dest[1298 0 R/XYZ 0 734 0]>>endobj
+146 0 obj<</Subtype/Link/Rect[108.0 604.8 159.9 617.8]/Border[0 0 0]/Dest[1298 0 R/XYZ 0 672 0]>>endobj
+147 0 obj<</Subtype/Link/Rect[126.0 591.6 151.7 604.6]/Border[0 0 0]/Dest[1300 0 R/XYZ 0 652 0]>>endobj
+148 0 obj<</Subtype/Link/Rect[72.0 565.2 152.4 578.2]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 734 0]>>endobj
+149 0 obj<</Subtype/Link/Rect[108.0 552.0 162.4 565.0]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 696 0]>>endobj
+150 0 obj<</Subtype/Link/Rect[108.0 538.8 169.7 551.8]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 317 0]>>endobj
+151 0 obj<</Subtype/Link/Rect[126.0 525.6 200.2 538.6]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 131 0]>>endobj
+152 0 obj<</Subtype/Link/Rect[126.0 512.4 284.9 525.4]/Border[0 0 0]/Dest[1306 0 R/XYZ 0 583 0]>>endobj
+153 0 obj<</Subtype/Link/Rect[126.0 499.2 277.8 512.2]/Border[0 0 0]/Dest[1306 0 R/XYZ 0 169 0]>>endobj
+154 0 obj<</Subtype/Link/Rect[126.0 486.0 341.4 499.0]/Border[0 0 0]/Dest[1308 0 R/XYZ 0 456 0]>>endobj
+155 0 obj<</Subtype/Link/Rect[126.0 472.8 232.6 485.8]/Border[0 0 0]/Dest[1310 0 R/XYZ 0 283 0]>>endobj
+156 0 obj<</Subtype/Link/Rect[108.0 459.6 200.9 472.6]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 734 0]>>endobj
+157 0 obj<</Subtype/Link/Rect[126.0 446.4 204.8 459.4]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 632 0]>>endobj
+158 0 obj<</Subtype/Link/Rect[126.0 433.2 271.7 446.2]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 507 0]>>endobj
+159 0 obj<</Subtype/Link/Rect[126.0 420.0 212.8 433.0]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 423 0]>>endobj
+160 0 obj<</Subtype/Link/Rect[126.0 406.8 225.0 419.8]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 325 0]>>endobj
+161 0 obj<</Subtype/Link/Rect[108.0 393.6 152.0 406.6]/Border[0 0 0]/Dest[1314 0 R/XYZ 0 426 0]>>endobj
+162 0 obj<</Subtype/Link/Rect[126.0 380.4 180.4 393.4]/Border[0 0 0]/Dest[1314 0 R/XYZ 0 393 0]>>endobj
+163 0 obj<</Subtype/Link/Rect[126.0 367.2 250.7 380.2]/Border[0 0 0]/Dest[1316 0 R/XYZ 0 450 0]>>endobj
+164 0 obj<</Subtype/Link/Rect[126.0 354.0 234.7 367.0]/Border[0 0 0]/Dest[1318 0 R/XYZ 0 665 0]>>endobj
+165 0 obj<</Subtype/Link/Rect[126.0 340.8 285.8 353.8]/Border[0 0 0]/Dest[1318 0 R/XYZ 0 479 0]>>endobj
+166 0 obj<</Subtype/Link/Rect[126.0 327.6 209.1 340.6]/Border[0 0 0]/Dest[1320 0 R/XYZ 0 718 0]>>endobj
+167 0 obj<</Subtype/Link/Rect[126.0 314.4 229.9 327.4]/Border[0 0 0]/Dest[1320 0 R/XYZ 0 373 0]>>endobj
+168 0 obj<</Subtype/Link/Rect[126.0 301.2 228.1 314.2]/Border[0 0 0]/Dest[1322 0 R/XYZ 0 679 0]>>endobj
+169 0 obj<</Subtype/Link/Rect[126.0 288.0 208.8 301.0]/Border[0 0 0]/Dest[1322 0 R/XYZ 0 594 0]>>endobj
+170 0 obj<</Subtype/Link/Rect[126.0 274.8 195.4 287.8]/Border[0 0 0]/Dest[1322 0 R/XYZ 0 496 0]>>endobj
+171 0 obj<</Subtype/Link/Rect[72.0 248.4 373.3 261.4]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 734 0]>>endobj
+172 0 obj<</Subtype/Link/Rect[108.0 235.2 145.3 248.2]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 672 0]>>endobj
+173 0 obj<</Subtype/Link/Rect[108.0 222.0 162.4 235.0]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 544 0]>>endobj
+174 0 obj<</Subtype/Link/Rect[108.0 208.8 214.3 221.8]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 231 0]>>endobj
+175 0 obj<</Subtype/Link/Rect[126.0 195.6 178.8 208.6]/Border[0 0 0]/Dest[1326 0 R/XYZ 0 560 0]>>endobj
+176 0 obj<</Subtype/Link/Rect[108.0 182.4 202.7 195.4]/Border[0 0 0]/Dest[1326 0 R/XYZ 0 409 0]>>endobj
+177 0 obj<</Subtype/Link/Rect[126.0 169.2 279.1 182.2]/Border[0 0 0]/Dest[1326 0 R/XYZ 0 294 0]>>endobj
+178 0 obj<</Subtype/Link/Rect[126.0 156.0 221.3 169.0]/Border[0 0 0]/Dest[1328 0 R/XYZ 0 734 0]>>endobj
+179 0 obj<</Subtype/Link/Rect[126.0 142.8 279.4 155.8]/Border[0 0 0]/Dest[1328 0 R/XYZ 0 292 0]>>endobj
+180 0 obj<</Subtype/Link/Rect[126.0 129.6 259.8 142.6]/Border[0 0 0]/Dest[1330 0 R/XYZ 0 665 0]>>endobj
+181 0 obj<</Subtype/Link/Rect[126.0 116.4 193.5 129.4]/Border[0 0 0]/Dest[1330 0 R/XYZ 0 488 0]>>endobj
+182 0 obj<</Subtype/Link/Rect[108.0 103.2 240.6 116.2]/Border[0 0 0]/Dest[1330 0 R/XYZ 0 351 0]>>endobj
+183 0 obj<</Subtype/Link/Rect[126.0 90.0 180.4 103.0]/Border[0 0 0]/Dest[1330 0 R/XYZ 0 209 0]>>endobj
+184 0 obj<</Subtype/Link/Rect[126.0 76.8 187.1 89.8]/Border[0 0 0]/Dest[1332 0 R/XYZ 0 599 0]>>endobj
+185 0 obj<</Subtype/Link/Rect[126.0 63.6 211.6 76.6]/Border[0 0 0]/Dest[1332 0 R/XYZ 0 330 0]>>endobj
+186 0 obj[141 0 R
142 0 R
143 0 R
144 0 R
@@ -348,51 +349,48 @@
181 0 R
182 0 R
183 0 R
-184 0 R]endobj
-186 0 obj<</Subtype/Link/Rect[72.0 684.0 431.7 697.0]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 734 0]>>endobj
-187 0 obj<</Subtype/Link/Rect[108.0 670.8 265.4 683.8]/Border[0 0 0]/Dest[1584 0 R/XYZ 0 351 0]>>endobj
-188 0 obj<</Subtype/Link/Rect[126.0 657.6 213.4 670.6]/Border[0 0 0]/Dest[1584 0 R/XYZ 0 209 0]>>endobj
-189 0 obj<</Subtype/Link/Rect[126.0 644.4 220.1 657.4]/Border[0 0 0]/Dest[1586 0 R/XYZ 0 599 0]>>endobj
-190 0 obj<</Subtype/Link/Rect[126.0 631.2 244.6 644.2]/Border[0 0 0]/Dest[1586 0 R/XYZ 0 330 0]>>endobj
-191 0 obj<</Subtype/Link/Rect[108.0 618.0 183.5 631.0]/Border[0 0 0]/Dest[1600 0 R/XYZ 0 296 0]>>endobj
-192 0 obj<</Subtype/Link/Rect[108.0 604.8 182.9 617.8]/Border[0 0 0]/Dest[1602 0 R/XYZ 0 734 0]>>endobj
-193 0 obj<</Subtype/Link/Rect[72.0 578.4 236.7 591.4]/Border[0 0 0]/Dest[1604 0 R/XYZ 0 734 0]>>endobj
-194 0 obj<</Subtype/Link/Rect[108.0 565.2 171.3 578.2]/Border[0 0 0]/Dest[1604 0 R/XYZ 0 696 0]>>endobj
-195 0 obj<</Subtype/Link/Rect[108.0 552.0 186.5 565.0]/Border[0 0 0]/Dest[1604 0 R/XYZ 0 595 0]>>endobj
-196 0 obj<</Subtype/Link/Rect[108.0 538.8 351.2 551.8]/Border[0 0 0]/Dest[1606 0 R/XYZ 0 568 0]>>endobj
-197 0 obj<</Subtype/Link/Rect[108.0 525.6 309.7 538.6]/Border[0 0 0]/Dest[1606 0 R/XYZ 0 414 0]>>endobj
-198 0 obj<</Subtype/Link/Rect[72.0 499.2 224.5 512.2]/Border[0 0 0]/Dest[1608 0 R/XYZ 0 734 0]>>endobj
-199 0 obj<</Subtype/Link/Rect[108.0 486.0 171.3 499.0]/Border[0 0 0]/Dest[1608 0 R/XYZ 0 696 0]>>endobj
-200 0 obj<</Subtype/Link/Rect[108.0 472.8 160.2 485.8]/Border[0 0 0]/Dest[1608 0 R/XYZ 0 608 0]>>endobj
-201 0 obj<</Subtype/Link/Rect[72.0 446.4 484.2 459.4]/Border[0 0 0]/Dest[1610 0 R/XYZ 0 734 0]>>endobj
-202 0 obj<</Subtype/Link/Rect[108.0 433.2 168.2 446.2]/Border[0 0 0]/Dest[1610 0 R/XYZ 0 672 0]>>endobj
-203 0 obj<</Subtype/Link/Rect[108.0 420.0 187.1 433.0]/Border[0 0 0]/Dest[1610 0 R/XYZ 0 412 0]>>endobj
-204 0 obj<</Subtype/Link/Rect[108.0 406.8 245.2 419.8]/Border[0 0 0]/Dest[1612 0 R/XYZ 0 573 0]>>endobj
-205 0 obj<</Subtype/Link/Rect[108.0 393.6 384.2 406.6]/Border[0 0 0]/Dest[1612 0 R/XYZ 0 471 0]>>endobj
-206 0 obj<</Subtype/Link/Rect[108.0 380.4 273.0 393.4]/Border[0 0 0]/Dest[1614 0 R/XYZ 0 734 0]>>endobj
-207 0 obj<</Subtype/Link/Rect[126.0 367.2 273.6 380.2]/Border[0 0 0]/Dest[1614 0 R/XYZ 0 700 0]>>endobj
-208 0 obj<</Subtype/Link/Rect[126.0 354.0 245.5 367.0]/Border[0 0 0]/Dest[1614 0 R/XYZ 0 143 0]>>endobj
-209 0 obj<</Subtype/Link/Rect[108.0 340.8 287.0 353.8]/Border[0 0 0]/Dest[1616 0 R/XYZ 0 243 0]>>endobj
-210 0 obj<</Subtype/Link/Rect[108.0 327.6 256.2 340.6]/Border[0 0 0]/Dest[1618 0 R/XYZ 0 718 0]>>endobj
-211 0 obj<</Subtype/Link/Rect[108.0 314.4 330.7 327.4]/Border[0 0 0]/Dest[1618 0 R/XYZ 0 336 0]>>endobj
-212 0 obj<</Subtype/Link/Rect[108.0 301.2 324.3 314.2]/Border[0 0 0]/Dest[1620 0 R/XYZ 0 322 0]>>endobj
-213 0 obj<</Subtype/Link/Rect[108.0 288.0 185.9 301.0]/Border[0 0 0]/Dest[1622 0 R/XYZ 0 492 0]>>endobj
-214 0 obj<</Subtype/Link/Rect[72.0 261.6 342.4 274.6]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 734 0]>>endobj
-215 0 obj<</Subtype/Link/Rect[108.0 248.4 187.1 261.4]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 672 0]>>endobj
-216 0 obj<</Subtype/Link/Rect[108.0 235.2 247.6 248.2]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 557 0]>>endobj
-217 0 obj<</Subtype/Link/Rect[126.0 222.0 248.8 235.0]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 469 0]>>endobj
-218 0 obj<</Subtype/Link/Rect[126.0 208.8 223.8 221.8]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 358 0]>>endobj
-219 0 obj<</Subtype/Link/Rect[72.0 182.4 252.6 195.4]/Border[0 0 0]/Dest[1628 0 R/XYZ 0 734 0]>>endobj
-220 0 obj<</Subtype/Link/Rect[72.0 156.0 255.6 169.0]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 734 0]>>endobj
-221 0 obj<</Subtype/Link/Rect[108.0 142.8 190.8 155.8]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 696 0]>>endobj
-222 0 obj<</Subtype/Link/Rect[108.0 129.6 169.4 142.6]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 449 0]>>endobj
-223 0 obj<</Subtype/Link/Rect[126.0 116.4 202.4 129.4]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 416 0]>>endobj
-224 0 obj<</Subtype/Link/Rect[126.0 103.2 229.0 116.2]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 146 0]>>endobj
-225 0 obj<</Subtype/Link/Rect[126.0 90.0 328.3 103.0]/Border[0 0 0]/Dest[1632 0 R/XYZ 0 652 0]>>endobj
-226 0 obj<</Subtype/Link/Rect[108.0 76.8 197.8 89.8]/Border[0 0 0]/Dest[1632 0 R/XYZ 0 515 0]>>endobj
-227 0 obj<</Subtype/Link/Rect[108.0 63.6 175.2 76.6]/Border[0 0 0]/Dest[1632 0 R/XYZ 0 255 0]>>endobj
-228 0 obj[186 0 R
-187 0 R
+184 0 R
+185 0 R]endobj
+187 0 obj<</Subtype/Link/Rect[72.0 684.0 373.3 697.0]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 734 0]>>endobj
+188 0 obj<</Subtype/Link/Rect[108.0 670.8 158.7 683.8]/Border[0 0 0]/Dest[1346 0 R/XYZ 0 217 0]>>endobj
+189 0 obj<</Subtype/Link/Rect[108.0 657.6 158.1 670.6]/Border[0 0 0]/Dest[1348 0 R/XYZ 0 679 0]>>endobj
+190 0 obj<</Subtype/Link/Rect[72.0 631.2 178.4 644.2]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 734 0]>>endobj
+191 0 obj<</Subtype/Link/Rect[108.0 618.0 146.5 631.0]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 696 0]>>endobj
+192 0 obj<</Subtype/Link/Rect[108.0 604.8 161.8 617.8]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 595 0]>>endobj
+193 0 obj<</Subtype/Link/Rect[108.0 591.6 326.4 604.6]/Border[0 0 0]/Dest[1352 0 R/XYZ 0 511 0]>>endobj
+194 0 obj<</Subtype/Link/Rect[108.0 578.4 285.0 591.4]/Border[0 0 0]/Dest[1352 0 R/XYZ 0 357 0]>>endobj
+195 0 obj<</Subtype/Link/Rect[72.0 552.0 166.1 565.0]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 734 0]>>endobj
+196 0 obj<</Subtype/Link/Rect[108.0 538.8 146.5 551.8]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 696 0]>>endobj
+197 0 obj<</Subtype/Link/Rect[108.0 525.6 135.5 538.6]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 608 0]>>endobj
+198 0 obj<</Subtype/Link/Rect[72.0 499.2 183.2 512.2]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 734 0]>>endobj
+199 0 obj<</Subtype/Link/Rect[108.0 486.0 243.0 499.0]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 696 0]>>endobj
+200 0 obj<</Subtype/Link/Rect[108.0 472.8 186.5 485.8]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 382 0]>>endobj
+201 0 obj<</Subtype/Link/Rect[126.0 459.6 148.0 472.6]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 348 0]>>endobj
+202 0 obj<</Subtype/Link/Rect[126.0 446.4 157.8 459.4]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 212 0]>>endobj
+203 0 obj<</Subtype/Link/Rect[126.0 433.2 160.8 446.2]/Border[0 0 0]/Dest[1358 0 R/XYZ 0 560 0]>>endobj
+204 0 obj<</Subtype/Link/Rect[108.0 420.0 257.4 433.0]/Border[0 0 0]/Dest[1358 0 R/XYZ 0 430 0]>>endobj
+205 0 obj<</Subtype/Link/Rect[126.0 406.8 178.5 419.8]/Border[0 0 0]/Dest[1358 0 R/XYZ 0 315 0]>>endobj
+206 0 obj<</Subtype/Link/Rect[126.0 393.6 151.0 406.6]/Border[0 0 0]/Dest[1360 0 R/XYZ 0 734 0]>>endobj
+207 0 obj<</Subtype/Link/Rect[72.0 367.2 425.8 380.2]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 734 0]>>endobj
+208 0 obj<</Subtype/Link/Rect[108.0 354.0 143.4 367.0]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 672 0]>>endobj
+209 0 obj<</Subtype/Link/Rect[108.0 340.8 162.4 353.8]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 412 0]>>endobj
+210 0 obj<</Subtype/Link/Rect[108.0 327.6 220.4 340.6]/Border[0 0 0]/Dest[1364 0 R/XYZ 0 573 0]>>endobj
+211 0 obj<</Subtype/Link/Rect[108.0 314.4 359.5 327.4]/Border[0 0 0]/Dest[1364 0 R/XYZ 0 471 0]>>endobj
+212 0 obj<</Subtype/Link/Rect[108.0 301.2 248.3 314.2]/Border[0 0 0]/Dest[1366 0 R/XYZ 0 734 0]>>endobj
+213 0 obj<</Subtype/Link/Rect[126.0 288.0 240.6 301.0]/Border[0 0 0]/Dest[1366 0 R/XYZ 0 700 0]>>endobj
+214 0 obj<</Subtype/Link/Rect[126.0 274.8 212.5 287.8]/Border[0 0 0]/Dest[1366 0 R/XYZ 0 138 0]>>endobj
+215 0 obj<</Subtype/Link/Rect[108.0 261.6 262.3 274.6]/Border[0 0 0]/Dest[1368 0 R/XYZ 0 227 0]>>endobj
+216 0 obj<</Subtype/Link/Rect[108.0 248.4 231.4 261.4]/Border[0 0 0]/Dest[1370 0 R/XYZ 0 705 0]>>endobj
+217 0 obj<</Subtype/Link/Rect[108.0 235.2 306.0 248.2]/Border[0 0 0]/Dest[1370 0 R/XYZ 0 320 0]>>endobj
+218 0 obj<</Subtype/Link/Rect[108.0 222.0 299.5 235.0]/Border[0 0 0]/Dest[1372 0 R/XYZ 0 309 0]>>endobj
+219 0 obj<</Subtype/Link/Rect[108.0 208.8 155.7 221.8]/Border[0 0 0]/Dest[1374 0 R/XYZ 0 478 0]>>endobj
+220 0 obj<</Subtype/Link/Rect[72.0 182.4 284.0 195.4]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 734 0]>>endobj
+221 0 obj<</Subtype/Link/Rect[108.0 169.2 162.4 182.2]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 696 0]>>endobj
+222 0 obj<</Subtype/Link/Rect[108.0 156.0 222.9 169.0]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 581 0]>>endobj
+223 0 obj<</Subtype/Link/Rect[126.0 142.8 215.8 155.8]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 493 0]>>endobj
+224 0 obj<</Subtype/Link/Rect[126.0 129.6 190.8 142.6]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 382 0]>>endobj
+225 0 obj<</Subtype/Link/Rect[72.0 103.2 194.3 116.2]/Border[0 0 0]/Dest[1380 0 R/XYZ 0 734 0]>>endobj
+226 0 obj[187 0 R
188 0 R
189 0 R
190 0 R
@@ -430,51 +428,53 @@
222 0 R
223 0 R
224 0 R
-225 0 R
-226 0 R
-227 0 R]endobj
-229 0 obj<</Subtype/Link/Rect[72.0 684.0 255.6 697.0]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 734 0]>>endobj
-230 0 obj<</Subtype/Link/Rect[108.0 670.8 175.8 683.8]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 718 0]>>endobj
-231 0 obj<</Subtype/Link/Rect[108.0 657.6 169.4 670.6]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 537 0]>>endobj
-232 0 obj<</Subtype/Link/Rect[108.0 644.4 189.3 657.4]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 409 0]>>endobj
-233 0 obj<</Subtype/Link/Rect[108.0 631.2 174.6 644.2]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 189 0]>>endobj
-234 0 obj<</Subtype/Link/Rect[108.0 618.0 180.1 631.0]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 734 0]>>endobj
-235 0 obj<</Subtype/Link/Rect[108.0 604.8 180.1 617.8]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 645 0]>>endobj
-236 0 obj<</Subtype/Link/Rect[108.0 591.6 182.5 604.6]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 477 0]>>endobj
-237 0 obj<</Subtype/Link/Rect[108.0 578.4 208.2 591.4]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 349 0]>>endobj
-238 0 obj<</Subtype/Link/Rect[108.0 565.2 217.4 578.2]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 129 0]>>endobj
-239 0 obj<</Subtype/Link/Rect[108.0 552.0 194.8 565.0]/Border[0 0 0]/Dest[1638 0 R/XYZ 0 639 0]>>endobj
-240 0 obj<</Subtype/Link/Rect[108.0 538.8 194.2 551.8]/Border[0 0 0]/Dest[1638 0 R/XYZ 0 511 0]>>endobj
-241 0 obj<</Subtype/Link/Rect[108.0 525.6 196.0 538.6]/Border[0 0 0]/Dest[1638 0 R/XYZ 0 436 0]>>endobj
-242 0 obj<</Subtype/Link/Rect[108.0 512.4 188.7 525.4]/Border[0 0 0]/Dest[1640 0 R/XYZ 0 388 0]>>endobj
-243 0 obj<</Subtype/Link/Rect[72.0 486.0 144.7 499.0]/Border[0 0 0]/Dest[1642 0 R/XYZ 0 734 0]>>endobj
-244 0 obj<</Subtype/Link/Rect[72.0 459.6 181.1 472.6]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 734 0]>>endobj
-245 0 obj<</Subtype/Link/Rect[108.0 446.4 162.7 459.4]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 655 0]>>endobj
-246 0 obj<</Subtype/Link/Rect[108.0 433.2 178.9 446.2]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 408 0]>>endobj
-247 0 obj<</Subtype/Link/Rect[108.0 420.0 160.2 433.0]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 293 0]>>endobj
-248 0 obj<</Subtype/Link/Rect[108.0 406.8 260.5 419.8]/Border[0 0 0]/Dest[1646 0 R/XYZ 0 228 0]>>endobj
-249 0 obj<</Subtype/Link/Rect[72.0 380.4 271.5 393.4]/Border[0 0 0]/Dest[1648 0 R/XYZ 0 734 0]>>endobj
-250 0 obj<</Subtype/Link/Rect[108.0 367.2 215.5 380.2]/Border[0 0 0]/Dest[1648 0 R/XYZ 0 668 0]>>endobj
-251 0 obj<</Subtype/Link/Rect[108.0 354.0 182.0 367.0]/Border[0 0 0]/Dest[1648 0 R/XYZ 0 461 0]>>endobj
-252 0 obj<</Subtype/Link/Rect[126.0 340.8 514.3 353.8]/Border[0 0 0]/Dest[1648 0 R/XYZ 0 427 0]>>endobj
-253 0 obj<</Subtype/Link/Rect[126.0 327.6 519.5 340.6]/Border[0 0 0]/Dest[1650 0 R/XYZ 0 734 0]>>endobj
-254 0 obj<</Subtype/Link/Rect[126.0 314.4 470.9 327.4]/Border[0 0 0]/Dest[1650 0 R/XYZ 0 523 0]>>endobj
-255 0 obj<</Subtype/Link/Rect[126.0 301.2 440.7 314.2]/Border[0 0 0]/Dest[1650 0 R/XYZ 0 408 0]>>endobj
-256 0 obj<</Subtype/Link/Rect[108.0 288.0 248.2 301.0]/Border[0 0 0]/Dest[1650 0 R/XYZ 0 151 0]>>endobj
-257 0 obj<</Subtype/Link/Rect[126.0 274.8 333.5 287.8]/Border[0 0 0]/Dest[1650 0 R/XYZ 0 118 0]>>endobj
-258 0 obj<</Subtype/Link/Rect[126.0 261.6 332.5 274.6]/Border[0 0 0]/Dest[1652 0 R/XYZ 0 626 0]>>endobj
-259 0 obj<</Subtype/Link/Rect[126.0 248.4 316.3 261.4]/Border[0 0 0]/Dest[1652 0 R/XYZ 0 475 0]>>endobj
-260 0 obj<</Subtype/Link/Rect[126.0 235.2 282.1 248.2]/Border[0 0 0]/Dest[1652 0 R/XYZ 0 377 0]>>endobj
-261 0 obj<</Subtype/Link/Rect[108.0 222.0 206.7 235.0]/Border[0 0 0]/Dest[1652 0 R/XYZ 0 292 0]>>endobj
-262 0 obj<</Subtype/Link/Rect[108.0 208.8 267.8 221.8]/Border[0 0 0]/Dest[1654 0 R/XYZ 0 718 0]>>endobj
-263 0 obj<</Subtype/Link/Rect[72.0 182.4 204.0 195.4]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 734 0]>>endobj
-264 0 obj<</Subtype/Link/Rect[108.0 169.2 187.1 182.2]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 696 0]>>endobj
-265 0 obj<</Subtype/Link/Rect[108.0 156.0 188.0 169.0]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 423 0]>>endobj
-266 0 obj<</Subtype/Link/Rect[108.0 142.8 190.5 155.8]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 282 0]>>endobj
-267 0 obj<</Subtype/Link/Rect[108.0 129.6 195.4 142.6]/Border[0 0 0]/Dest[1658 0 R/XYZ 0 613 0]>>endobj
-268 0 obj<</Subtype/Link/Rect[108.0 116.4 267.8 129.4]/Border[0 0 0]/Dest[1658 0 R/XYZ 0 260 0]>>endobj
-269 0 obj<</Subtype/Link/Rect[108.0 103.2 166.4 116.2]/Border[0 0 0]/Dest[1658 0 R/XYZ 0 159 0]>>endobj
-270 0 obj[229 0 R
+225 0 R]endobj
+227 0 obj<</Subtype/Link/Rect[72.0 684.0 197.3 697.0]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 734 0]>>endobj
+228 0 obj<</Subtype/Link/Rect[108.0 670.8 166.1 683.8]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 696 0]>>endobj
+229 0 obj<</Subtype/Link/Rect[108.0 657.6 173.1 670.6]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 449 0]>>endobj
+230 0 obj<</Subtype/Link/Rect[108.0 644.4 150.5 657.4]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 189 0]>>endobj
+231 0 obj<</Subtype/Link/Rect[108.0 631.2 151.1 644.2]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 639 0]>>endobj
+232 0 obj<</Subtype/Link/Rect[108.0 618.0 149.9 631.0]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 458 0]>>endobj
+233 0 obj<</Subtype/Link/Rect[108.0 604.8 149.8 617.8]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 383 0]>>endobj
+234 0 obj<</Subtype/Link/Rect[108.0 591.6 152.3 604.6]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 215 0]>>endobj
+235 0 obj<</Subtype/Link/Rect[108.0 578.4 164.5 591.4]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 734 0]>>endobj
+236 0 obj<</Subtype/Link/Rect[108.0 565.2 163.9 578.2]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 605 0]>>endobj
+237 0 obj<</Subtype/Link/Rect[108.0 552.0 165.8 565.0]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 530 0]>>endobj
+238 0 obj<</Subtype/Link/Rect[72.0 525.6 144.7 538.6]/Border[0 0 0]/Dest[1390 0 R/XYZ 0 734 0]>>endobj
+239 0 obj<</Subtype/Link/Rect[72.0 499.2 122.7 512.2]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 734 0]>>endobj
+240 0 obj<</Subtype/Link/Rect[108.0 486.0 137.9 499.0]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 655 0]>>endobj
+241 0 obj<</Subtype/Link/Rect[108.0 472.8 154.1 485.8]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 408 0]>>endobj
+242 0 obj<</Subtype/Link/Rect[108.0 459.6 135.5 472.6]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 293 0]>>endobj
+243 0 obj<</Subtype/Link/Rect[108.0 446.4 235.8 459.4]/Border[0 0 0]/Dest[1394 0 R/XYZ 0 216 0]>>endobj
+244 0 obj<</Subtype/Link/Rect[72.0 420.0 213.2 433.0]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 734 0]>>endobj
+245 0 obj<</Subtype/Link/Rect[108.0 406.8 190.8 419.8]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 668 0]>>endobj
+246 0 obj<</Subtype/Link/Rect[108.0 393.6 157.2 406.6]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 461 0]>>endobj
+247 0 obj<</Subtype/Link/Rect[126.0 380.4 481.3 393.4]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 427 0]>>endobj
+248 0 obj<</Subtype/Link/Rect[126.0 367.2 486.5 380.2]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 734 0]>>endobj
+249 0 obj<</Subtype/Link/Rect[126.0 354.0 437.9 367.0]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 520 0]>>endobj
+250 0 obj<</Subtype/Link/Rect[126.0 340.8 407.7 353.8]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 422 0]>>endobj
+251 0 obj<</Subtype/Link/Rect[108.0 327.6 223.5 340.6]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 165 0]>>endobj
+252 0 obj<</Subtype/Link/Rect[126.0 314.4 300.5 327.4]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 132 0]>>endobj
+253 0 obj<</Subtype/Link/Rect[126.0 301.2 299.5 314.2]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 652 0]>>endobj
+254 0 obj<</Subtype/Link/Rect[126.0 288.0 283.3 301.0]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 501 0]>>endobj
+255 0 obj<</Subtype/Link/Rect[126.0 274.8 249.1 287.8]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 403 0]>>endobj
+256 0 obj<</Subtype/Link/Rect[108.0 261.6 181.9 274.6]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 319 0]>>endobj
+257 0 obj<</Subtype/Link/Rect[108.0 248.4 243.0 261.4]/Border[0 0 0]/Dest[1404 0 R/XYZ 0 734 0]>>endobj
+258 0 obj<</Subtype/Link/Rect[72.0 222.0 145.6 235.0]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 734 0]>>endobj
+259 0 obj<</Subtype/Link/Rect[108.0 208.8 162.4 221.8]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 696 0]>>endobj
+260 0 obj<</Subtype/Link/Rect[108.0 195.6 163.3 208.6]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 423 0]>>endobj
+261 0 obj<</Subtype/Link/Rect[108.0 182.4 165.7 195.4]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 282 0]>>endobj
+262 0 obj<</Subtype/Link/Rect[108.0 169.2 170.6 182.2]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 613 0]>>endobj
+263 0 obj<</Subtype/Link/Rect[108.0 156.0 243.0 169.0]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 260 0]>>endobj
+264 0 obj<</Subtype/Link/Rect[108.0 142.8 141.6 155.8]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 159 0]>>endobj
+265 0 obj<</Subtype/Link/Rect[72.0 116.4 214.7 129.4]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 734 0]>>endobj
+266 0 obj<</Subtype/Link/Rect[108.0 103.2 162.4 116.2]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 696 0]>>endobj
+267 0 obj<</Subtype/Link/Rect[108.0 90.0 165.5 103.0]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 529 0]>>endobj
+268 0 obj<</Subtype/Link/Rect[108.0 76.8 131.2 89.8]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 196 0]>>endobj
+269 0 obj<</Subtype/Link/Rect[126.0 63.6 153.2 76.6]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 163 0]>>endobj
+270 0 obj[227 0 R
+228 0 R
+229 0 R
230 0 R
231 0 R
232 0 R
@@ -515,23 +515,19 @@
267 0 R
268 0 R
269 0 R]endobj
-271 0 obj<</Subtype/Link/Rect[72.0 684.0 273.0 697.0]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 734 0]>>endobj
-272 0 obj<</Subtype/Link/Rect[108.0 670.8 187.1 683.8]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 696 0]>>endobj
-273 0 obj<</Subtype/Link/Rect[108.0 657.6 190.2 670.6]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 529 0]>>endobj
-274 0 obj<</Subtype/Link/Rect[108.0 644.4 156.0 657.4]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 199 0]>>endobj
-275 0 obj<</Subtype/Link/Rect[126.0 631.2 186.2 644.2]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 165 0]>>endobj
-276 0 obj<</Subtype/Link/Rect[126.0 618.0 186.2 631.0]/Border[0 0 0]/Dest[1662 0 R/XYZ 0 734 0]>>endobj
-277 0 obj<</Subtype/Link/Rect[126.0 604.8 186.2 617.8]/Border[0 0 0]/Dest[1662 0 R/XYZ 0 530 0]>>endobj
-278 0 obj<</Subtype/Link/Rect[126.0 591.6 186.2 604.6]/Border[0 0 0]/Dest[1664 0 R/XYZ 0 626 0]>>endobj
-279 0 obj<</Subtype/Link/Rect[126.0 578.4 186.2 591.4]/Border[0 0 0]/Dest[1664 0 R/XYZ 0 475 0]>>endobj
-280 0 obj<</Subtype/Link/Rect[126.0 565.2 186.2 578.2]/Border[0 0 0]/Dest[1664 0 R/XYZ 0 351 0]>>endobj
-281 0 obj<</Subtype/Link/Rect[126.0 552.0 186.2 565.0]/Border[0 0 0]/Dest[1666 0 R/XYZ 0 734 0]>>endobj
-282 0 obj<</Subtype/Link/Rect[126.0 538.8 186.2 551.8]/Border[0 0 0]/Dest[1666 0 R/XYZ 0 371 0]>>endobj
-283 0 obj<</Subtype/Link/Rect[126.0 525.6 186.2 538.6]/Border[0 0 0]/Dest[1668 0 R/XYZ 0 705 0]>>endobj
-284 0 obj<</Subtype/Link/Rect[126.0 512.4 197.2 525.4]/Border[0 0 0]/Dest[1668 0 R/XYZ 0 515 0]>>endobj
-285 0 obj<</Subtype/Link/Rect[126.0 499.2 197.2 512.2]/Border[0 0 0]/Dest[1668 0 R/XYZ 0 377 0]>>endobj
-286 0 obj<</Subtype/Link/Rect[108.0 486.0 226.9 499.0]/Border[0 0 0]/Dest[1668 0 R/XYZ 0 239 0]>>endobj
-287 0 obj[271 0 R
+271 0 obj<</Subtype/Link/Rect[72.0 684.0 214.7 697.0]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 734 0]>>endobj
+272 0 obj<</Subtype/Link/Rect[126.0 670.8 153.2 683.8]/Border[0 0 0]/Dest[1412 0 R/XYZ 0 734 0]>>endobj
+273 0 obj<</Subtype/Link/Rect[126.0 657.6 153.2 670.6]/Border[0 0 0]/Dest[1412 0 R/XYZ 0 530 0]>>endobj
+274 0 obj<</Subtype/Link/Rect[126.0 644.4 153.2 657.4]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 599 0]>>endobj
+275 0 obj<</Subtype/Link/Rect[126.0 631.2 153.2 644.2]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 449 0]>>endobj
+276 0 obj<</Subtype/Link/Rect[126.0 618.0 153.2 631.0]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 324 0]>>endobj
+277 0 obj<</Subtype/Link/Rect[126.0 604.8 153.2 617.8]/Border[0 0 0]/Dest[1416 0 R/XYZ 0 734 0]>>endobj
+278 0 obj<</Subtype/Link/Rect[126.0 591.6 153.2 604.6]/Border[0 0 0]/Dest[1416 0 R/XYZ 0 371 0]>>endobj
+279 0 obj<</Subtype/Link/Rect[126.0 578.4 153.2 591.4]/Border[0 0 0]/Dest[1418 0 R/XYZ 0 705 0]>>endobj
+280 0 obj<</Subtype/Link/Rect[126.0 565.2 158.7 578.2]/Border[0 0 0]/Dest[1418 0 R/XYZ 0 515 0]>>endobj
+281 0 obj<</Subtype/Link/Rect[126.0 552.0 158.7 565.0]/Border[0 0 0]/Dest[1418 0 R/XYZ 0 377 0]>>endobj
+282 0 obj<</Subtype/Link/Rect[108.0 538.8 202.1 551.8]/Border[0 0 0]/Dest[1418 0 R/XYZ 0 239 0]>>endobj
+283 0 obj[271 0 R
272 0 R
273 0 R
274 0 R
@@ -542,53 +538,54 @@
279 0 R
280 0 R
281 0 R
-282 0 R
-283 0 R
-284 0 R
-285 0 R
-286 0 R]endobj
-288 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
-289 0 obj<</Subtype/Link/Rect[185.6 631.0 289.8 644.0]/Border[0 0 0]/A 288 0 R>>endobj
-290 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
-291 0 obj<</Subtype/Link/Rect[72.0 617.8 148.4 630.8]/Border[0 0 0]/A 290 0 R>>endobj
-292 0 obj<</S/URI/URI(http://www.fsf.org/licenses/gpl.txt)>>endobj
-293 0 obj<</Subtype/Link/Rect[72.0 565.0 223.3 578.0]/Border[0 0 0]/A 292 0 R>>endobj
-294 0 obj<</Subtype/Link/Rect[78.4 499.0 170.1 512.0]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 258 0]>>endobj
-295 0 obj<</Subtype/Link/Rect[116.2 485.8 259.9 498.8]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 734 0]>>endobj
-296 0 obj<</Subtype/Link/Rect[160.5 472.6 252.2 485.6]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 696 0]>>endobj
-297 0 obj<</Subtype/Link/Rect[160.5 459.4 257.4 472.4]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 568 0]>>endobj
-298 0 obj<</Subtype/Link/Rect[160.5 446.2 260.7 459.2]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 163 0]>>endobj
-299 0 obj<</Subtype/Link/Rect[160.5 433.0 312.1 446.0]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 734 0]>>endobj
-300 0 obj<</Subtype/Link/Rect[160.5 419.8 315.1 432.8]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 385 0]>>endobj
-301 0 obj<</Subtype/Link/Rect[160.5 406.6 287.3 419.6]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 257 0]>>endobj
-302 0 obj<</Subtype/Link/Rect[160.5 393.4 367.0 406.4]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 665 0]>>endobj
-303 0 obj<</Subtype/Link/Rect[160.5 380.2 316.3 393.2]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 498 0]>>endobj
-304 0 obj<</Subtype/Link/Rect[160.5 367.0 503.0 380.0]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 330 0]>>endobj
-305 0 obj<</Subtype/Link/Rect[166.0 353.8 293.3 366.8]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 734 0]>>endobj
-306 0 obj<</Subtype/Link/Rect[116.2 340.6 247.6 353.6]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 734 0]>>endobj
-307 0 obj<</Subtype/Link/Rect[160.5 327.4 260.4 340.4]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 696 0]>>endobj
-308 0 obj<</Subtype/Link/Rect[160.5 314.2 284.6 327.2]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 515 0]>>endobj
-309 0 obj<</Subtype/Link/Rect[160.5 301.0 248.5 314.0]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 137 0]>>endobj
-310 0 obj<</Subtype/Link/Rect[160.5 287.8 272.6 300.8]/Border[0 0 0]/Dest[1416 0 R/XYZ 0 533 0]>>endobj
-311 0 obj<</Subtype/Link/Rect[160.5 274.6 274.5 287.6]/Border[0 0 0]/Dest[1422 0 R/XYZ 0 560 0]>>endobj
-312 0 obj<</Subtype/Link/Rect[160.5 261.4 343.2 274.4]/Border[0 0 0]/Dest[1424 0 R/XYZ 0 613 0]>>endobj
-313 0 obj<</Subtype/Link/Rect[160.5 248.2 317.6 261.2]/Border[0 0 0]/Dest[1426 0 R/XYZ 0 622 0]>>endobj
-314 0 obj<</Subtype/Link/Rect[160.5 235.0 303.5 248.0]/Border[0 0 0]/Dest[1426 0 R/XYZ 0 266 0]>>endobj
-315 0 obj<</Subtype/Link/Rect[160.5 221.8 313.0 234.8]/Border[0 0 0]/Dest[1428 0 R/XYZ 0 520 0]>>endobj
-316 0 obj<</Subtype/Link/Rect[166.0 208.6 310.2 221.6]/Border[0 0 0]/Dest[1430 0 R/XYZ 0 734 0]>>endobj
-317 0 obj<</Subtype/Link/Rect[166.0 195.4 252.2 208.4]/Border[0 0 0]/Dest[1430 0 R/XYZ 0 645 0]>>endobj
-318 0 obj<</Subtype/Link/Rect[116.2 182.2 155.0 195.2]/Border[0 0 0]/Dest[1432 0 R/XYZ 0 734 0]>>endobj
-319 0 obj<</Subtype/Link/Rect[160.5 169.0 245.7 182.0]/Border[0 0 0]/Dest[1432 0 R/XYZ 0 696 0]>>endobj
-320 0 obj<</Subtype/Link/Rect[116.2 155.8 410.5 168.8]/Border[0 0 0]/Dest[1434 0 R/XYZ 0 734 0]>>endobj
-321 0 obj<</Subtype/Link/Rect[160.5 142.6 211.5 155.6]/Border[0 0 0]/Dest[1434 0 R/XYZ 0 604 0]>>endobj
-322 0 obj<</Subtype/Link/Rect[160.5 129.4 348.1 142.4]/Border[0 0 0]/Dest[1434 0 R/XYZ 0 159 0]>>endobj
-323 0 obj<</Subtype/Link/Rect[160.5 116.2 360.7 129.2]/Border[0 0 0]/Dest[1436 0 R/XYZ 0 483 0]>>endobj
-324 0 obj<</Subtype/Link/Rect[160.5 103.0 220.1 116.0]/Border[0 0 0]/Dest[1436 0 R/XYZ 0 305 0]>>endobj
-325 0 obj<</Subtype/Link/Rect[160.5 89.8 458.7 102.8]/Border[0 0 0]/Dest[1438 0 R/XYZ 0 467 0]>>endobj
-326 0 obj<</Subtype/Link/Rect[160.5 76.6 268.4 89.6]/Border[0 0 0]/Dest[1438 0 R/XYZ 0 187 0]>>endobj
-327 0 obj<</Subtype/Link/Rect[116.2 63.4 333.5 76.4]/Border[0 0 0]/Dest[1442 0 R/XYZ 0 734 0]>>endobj
-328 0 obj[289 0 R
+282 0 R]endobj
+284 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
+285 0 obj<</Subtype/Link/Rect[185.6 631.0 289.8 644.0]/Border[0 0 0]/A 284 0 R>>endobj
+286 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
+287 0 obj<</Subtype/Link/Rect[72.0 617.8 148.4 630.8]/Border[0 0 0]/A 286 0 R>>endobj
+288 0 obj<</S/URI/URI(mailto:jelmer@samba.org)>>endobj
+289 0 obj<</Subtype/Link/Rect[160.3 617.8 246.8 630.8]/Border[0 0 0]/A 288 0 R>>endobj
+290 0 obj<</S/URI/URI(http://www.fsf.org/licenses/gpl.txt)>>endobj
+291 0 obj<</Subtype/Link/Rect[72.0 565.0 223.3 578.0]/Border[0 0 0]/A 290 0 R>>endobj
+292 0 obj<</Subtype/Link/Rect[78.4 499.0 170.1 512.0]/Border[0 0 0]/Dest[1144 0 R/XYZ 0 364 0]>>endobj
+293 0 obj<</Subtype/Link/Rect[108.0 485.8 248.9 498.8]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 734 0]>>endobj
+294 0 obj<</Subtype/Link/Rect[144.0 472.6 232.9 485.6]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 696 0]>>endobj
+295 0 obj<</Subtype/Link/Rect[144.0 459.4 238.1 472.4]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 568 0]>>endobj
+296 0 obj<</Subtype/Link/Rect[144.0 446.2 241.5 459.2]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 163 0]>>endobj
+297 0 obj<</Subtype/Link/Rect[144.0 433.0 292.8 446.0]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 734 0]>>endobj
+298 0 obj<</Subtype/Link/Rect[144.0 419.8 295.9 432.8]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 382 0]>>endobj
+299 0 obj<</Subtype/Link/Rect[144.0 406.6 268.1 419.6]/Border[0 0 0]/Dest[1152 0 R/XYZ 0 254 0]>>endobj
+300 0 obj<</Subtype/Link/Rect[144.0 393.4 347.8 406.4]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 665 0]>>endobj
+301 0 obj<</Subtype/Link/Rect[144.0 380.2 297.1 393.2]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 498 0]>>endobj
+302 0 obj<</Subtype/Link/Rect[144.0 367.0 483.7 380.0]/Border[0 0 0]/Dest[1156 0 R/XYZ 0 330 0]>>endobj
+303 0 obj<</Subtype/Link/Rect[144.0 353.8 268.6 366.8]/Border[0 0 0]/Dest[1158 0 R/XYZ 0 734 0]>>endobj
+304 0 obj<</Subtype/Link/Rect[108.0 340.6 236.6 353.6]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 734 0]>>endobj
+305 0 obj<</Subtype/Link/Rect[144.0 327.4 241.2 340.4]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 696 0]>>endobj
+306 0 obj<</Subtype/Link/Rect[144.0 314.2 265.3 327.2]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 515 0]>>endobj
+307 0 obj<</Subtype/Link/Rect[144.0 301.0 229.2 314.0]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 137 0]>>endobj
+308 0 obj<</Subtype/Link/Rect[144.0 287.8 253.4 300.8]/Border[0 0 0]/Dest[1166 0 R/XYZ 0 533 0]>>endobj
+309 0 obj<</Subtype/Link/Rect[144.0 274.6 255.2 287.6]/Border[0 0 0]/Dest[1172 0 R/XYZ 0 511 0]>>endobj
+310 0 obj<</Subtype/Link/Rect[144.0 261.4 324.0 274.4]/Border[0 0 0]/Dest[1174 0 R/XYZ 0 560 0]>>endobj
+311 0 obj<</Subtype/Link/Rect[144.0 248.2 298.3 261.2]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 567 0]>>endobj
+312 0 obj<</Subtype/Link/Rect[144.0 235.0 284.2 248.0]/Border[0 0 0]/Dest[1176 0 R/XYZ 0 208 0]>>endobj
+313 0 obj<</Subtype/Link/Rect[144.0 221.8 293.7 234.8]/Border[0 0 0]/Dest[1178 0 R/XYZ 0 454 0]>>endobj
+314 0 obj<</Subtype/Link/Rect[144.0 208.6 285.5 221.6]/Border[0 0 0]/Dest[1180 0 R/XYZ 0 679 0]>>endobj
+315 0 obj<</Subtype/Link/Rect[144.0 195.4 227.4 208.4]/Border[0 0 0]/Dest[1180 0 R/XYZ 0 590 0]>>endobj
+316 0 obj<</Subtype/Link/Rect[108.0 182.2 399.5 195.2]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 734 0]>>endobj
+317 0 obj<</Subtype/Link/Rect[144.0 169.0 192.3 182.0]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 604 0]>>endobj
+318 0 obj<</Subtype/Link/Rect[144.0 155.8 328.9 168.8]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 159 0]>>endobj
+319 0 obj<</Subtype/Link/Rect[144.0 142.6 341.4 155.6]/Border[0 0 0]/Dest[1184 0 R/XYZ 0 520 0]>>endobj
+320 0 obj<</Subtype/Link/Rect[144.0 129.4 200.8 142.4]/Border[0 0 0]/Dest[1184 0 R/XYZ 0 339 0]>>endobj
+321 0 obj<</Subtype/Link/Rect[144.0 116.2 439.4 129.2]/Border[0 0 0]/Dest[1186 0 R/XYZ 0 494 0]>>endobj
+322 0 obj<</Subtype/Link/Rect[144.0 103.0 249.1 116.0]/Border[0 0 0]/Dest[1186 0 R/XYZ 0 213 0]>>endobj
+323 0 obj<</Subtype/Link/Rect[108.0 89.8 322.5 102.8]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 734 0]>>endobj
+324 0 obj<</Subtype/Link/Rect[144.0 76.6 199.0 89.6]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 696 0]>>endobj
+325 0 obj<</Subtype/Link/Rect[144.0 63.4 283.6 76.4]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 555 0]>>endobj
+326 0 obj[285 0 R
+287 0 R
+289 0 R
291 0 R
+292 0 R
293 0 R
294 0 R
295 0 R
@@ -621,61 +618,61 @@
322 0 R
323 0 R
324 0 R
-325 0 R
-326 0 R
-327 0 R]endobj
-329 0 obj<</Subtype/Link/Rect[160.5 721.0 218.2 734.0]/Border[0 0 0]/Dest[1442 0 R/XYZ 0 672 0]>>endobj
-330 0 obj<</Subtype/Link/Rect[160.5 707.8 302.9 720.8]/Border[0 0 0]/Dest[1442 0 R/XYZ 0 531 0]>>endobj
-331 0 obj<</Subtype/Link/Rect[160.5 694.6 280.6 707.6]/Border[0 0 0]/Dest[1444 0 R/XYZ 0 511 0]>>endobj
-332 0 obj<</Subtype/Link/Rect[82.1 681.4 170.4 694.4]/Border[0 0 0]/Dest[1446 0 R/XYZ 0 681 0]>>endobj
-333 0 obj<</Subtype/Link/Rect[116.2 668.2 400.4 681.2]/Border[0 0 0]/Dest[1452 0 R/XYZ 0 734 0]>>endobj
-334 0 obj<</Subtype/Link/Rect[160.5 655.0 257.0 668.0]/Border[0 0 0]/Dest[1452 0 R/XYZ 0 672 0]>>endobj
-335 0 obj<</Subtype/Link/Rect[160.5 641.8 217.0 654.8]/Border[0 0 0]/Dest[1452 0 R/XYZ 0 584 0]>>endobj
-336 0 obj<</Subtype/Link/Rect[160.5 628.6 353.3 641.6]/Border[0 0 0]/Dest[1454 0 R/XYZ 0 718 0]>>endobj
-337 0 obj<</Subtype/Link/Rect[160.5 615.4 467.3 628.4]/Border[0 0 0]/Dest[1456 0 R/XYZ 0 613 0]>>endobj
-338 0 obj<</Subtype/Link/Rect[160.5 602.2 299.2 615.2]/Border[0 0 0]/Dest[1460 0 R/XYZ 0 385 0]>>endobj
-339 0 obj<</Subtype/Link/Rect[160.5 589.0 288.8 602.0]/Border[0 0 0]/Dest[1462 0 R/XYZ 0 129 0]>>endobj
-340 0 obj<</Subtype/Link/Rect[160.5 575.8 280.9 588.8]/Border[0 0 0]/Dest[1464 0 R/XYZ 0 124 0]>>endobj
-341 0 obj<</Subtype/Link/Rect[160.5 562.6 326.4 575.6]/Border[0 0 0]/Dest[1470 0 R/XYZ 0 507 0]>>endobj
-342 0 obj<</Subtype/Link/Rect[160.5 549.4 459.7 562.4]/Border[0 0 0]/Dest[1482 0 R/XYZ 0 718 0]>>endobj
-343 0 obj<</Subtype/Link/Rect[116.2 536.2 485.4 549.2]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 734 0]>>endobj
-344 0 obj<</Subtype/Link/Rect[160.5 523.0 257.0 536.0]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 672 0]>>endobj
-345 0 obj<</Subtype/Link/Rect[160.5 509.8 217.0 522.8]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 597 0]>>endobj
-346 0 obj<</Subtype/Link/Rect[160.5 496.6 396.4 509.6]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 225 0]>>endobj
-347 0 obj<</Subtype/Link/Rect[160.5 483.4 364.3 496.4]/Border[0 0 0]/Dest[1488 0 R/XYZ 0 524 0]>>endobj
-348 0 obj<</Subtype/Link/Rect[160.5 470.2 304.1 483.2]/Border[0 0 0]/Dest[1488 0 R/XYZ 0 383 0]>>endobj
-349 0 obj<</Subtype/Link/Rect[116.2 457.0 266.6 470.0]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 734 0]>>endobj
-350 0 obj<</Subtype/Link/Rect[160.5 443.8 356.7 456.8]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 524 0]>>endobj
-351 0 obj<</Subtype/Link/Rect[160.5 430.6 357.9 443.6]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 417 0]>>endobj
-352 0 obj<</Subtype/Link/Rect[160.5 417.4 233.2 430.4]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 241 0]>>endobj
-353 0 obj<</Subtype/Link/Rect[160.5 404.2 274.2 417.2]/Border[0 0 0]/Dest[1494 0 R/XYZ 0 556 0]>>endobj
-354 0 obj<</Subtype/Link/Rect[160.5 391.0 291.3 404.0]/Border[0 0 0]/Dest[1494 0 R/XYZ 0 240 0]>>endobj
-355 0 obj<</Subtype/Link/Rect[160.5 377.8 260.7 390.8]/Border[0 0 0]/Dest[1496 0 R/XYZ 0 692 0]>>endobj
-356 0 obj<</Subtype/Link/Rect[160.5 364.6 262.3 377.6]/Border[0 0 0]/Dest[1496 0 R/XYZ 0 603 0]>>endobj
-357 0 obj<</Subtype/Link/Rect[160.5 351.4 188.3 364.4]/Border[0 0 0]/Dest[1496 0 R/XYZ 0 528 0]>>endobj
-358 0 obj<</Subtype/Link/Rect[116.2 338.2 265.4 351.2]/Border[0 0 0]/Dest[1498 0 R/XYZ 0 734 0]>>endobj
-359 0 obj<</Subtype/Link/Rect[160.5 325.0 335.3 338.0]/Border[0 0 0]/Dest[1498 0 R/XYZ 0 696 0]>>endobj
-360 0 obj<</Subtype/Link/Rect[160.5 311.8 322.8 324.8]/Border[0 0 0]/Dest[1500 0 R/XYZ 0 362 0]>>endobj
-361 0 obj<</Subtype/Link/Rect[160.5 298.6 345.7 311.6]/Border[0 0 0]/Dest[1500 0 R/XYZ 0 155 0]>>endobj
-362 0 obj<</Subtype/Link/Rect[85.7 285.4 190.2 298.4]/Border[0 0 0]/Dest[1502 0 R/XYZ 0 337 0]>>endobj
-363 0 obj<</Subtype/Link/Rect[121.8 272.2 331.4 285.2]/Border[0 0 0]/Dest[1512 0 R/XYZ 0 734 0]>>endobj
-364 0 obj<</Subtype/Link/Rect[166.0 259.0 202.4 272.0]/Border[0 0 0]/Dest[1512 0 R/XYZ 0 672 0]>>endobj
-365 0 obj<</Subtype/Link/Rect[166.0 245.8 367.4 258.8]/Border[0 0 0]/Dest[1512 0 R/XYZ 0 439 0]>>endobj
-366 0 obj<</Subtype/Link/Rect[166.0 232.6 420.2 245.6]/Border[0 0 0]/Dest[1516 0 R/XYZ 0 339 0]>>endobj
-367 0 obj<</Subtype/Link/Rect[166.0 219.4 532.1 232.4]/Border[0 0 0]/Dest[1524 0 R/XYZ 0 670 0]>>endobj
-368 0 obj<</Subtype/Link/Rect[144.0 206.2 173.9 219.2]/Border[0 0 0]/Dest[1524 0 R/XYZ 0 670 0]>>endobj
-369 0 obj<</Subtype/Link/Rect[166.0 193.0 536.9 206.0]/Border[0 0 0]/Dest[1524 0 R/XYZ 0 126 0]>>endobj
-370 0 obj<</Subtype/Link/Rect[166.0 179.8 223.1 192.8]/Border[0 0 0]/Dest[1530 0 R/XYZ 0 263 0]>>endobj
-371 0 obj<</Subtype/Link/Rect[121.8 166.6 394.0 179.6]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 734 0]>>endobj
-372 0 obj<</Subtype/Link/Rect[166.0 153.4 483.2 166.4]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 672 0]>>endobj
-373 0 obj<</Subtype/Link/Rect[166.0 140.2 360.0 153.2]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 497 0]>>endobj
-374 0 obj<</Subtype/Link/Rect[166.0 127.0 270.2 140.0]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 330 0]>>endobj
-375 0 obj<</Subtype/Link/Rect[166.0 113.8 332.5 126.8]/Border[0 0 0]/Dest[1534 0 R/XYZ 0 665 0]>>endobj
-376 0 obj<</Subtype/Link/Rect[166.0 100.6 341.7 113.6]/Border[0 0 0]/Dest[1536 0 R/XYZ 0 692 0]>>endobj
-377 0 obj<</Subtype/Link/Rect[166.0 87.4 438.5 100.4]/Border[0 0 0]/Dest[1536 0 R/XYZ 0 260 0]>>endobj
-378 0 obj<</Subtype/Link/Rect[166.0 74.2 428.8 87.2]/Border[0 0 0]/Dest[1540 0 R/XYZ 0 599 0]>>endobj
-379 0 obj<</Subtype/Link/Rect[121.8 61.0 437.7 74.0]/Border[0 0 0]/Dest[1542 0 R/XYZ 0 734 0]>>endobj
-380 0 obj[329 0 R
+325 0 R]endobj
+327 0 obj<</Subtype/Link/Rect[144.0 721.0 261.3 734.0]/Border[0 0 0]/Dest[1192 0 R/XYZ 0 511 0]>>endobj
+328 0 obj<</Subtype/Link/Rect[82.1 707.8 170.4 720.8]/Border[0 0 0]/Dest[1194 0 R/XYZ 0 681 0]>>endobj
+329 0 obj<</Subtype/Link/Rect[108.0 694.6 367.7 707.6]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 734 0]>>endobj
+330 0 obj<</Subtype/Link/Rect[108.0 681.4 389.4 694.4]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 734 0]>>endobj
+331 0 obj<</Subtype/Link/Rect[144.0 668.2 237.8 681.2]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 672 0]>>endobj
+332 0 obj<</Subtype/Link/Rect[144.0 655.0 197.8 668.0]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 584 0]>>endobj
+333 0 obj<</Subtype/Link/Rect[144.0 641.8 334.1 654.8]/Border[0 0 0]/Dest[1206 0 R/XYZ 0 718 0]>>endobj
+334 0 obj<</Subtype/Link/Rect[144.0 628.6 448.0 641.6]/Border[0 0 0]/Dest[1208 0 R/XYZ 0 613 0]>>endobj
+335 0 obj<</Subtype/Link/Rect[144.0 615.4 280.0 628.4]/Border[0 0 0]/Dest[1212 0 R/XYZ 0 385 0]>>endobj
+336 0 obj<</Subtype/Link/Rect[144.0 602.2 269.6 615.2]/Border[0 0 0]/Dest[1214 0 R/XYZ 0 126 0]>>endobj
+337 0 obj<</Subtype/Link/Rect[144.0 589.0 261.6 602.0]/Border[0 0 0]/Dest[1216 0 R/XYZ 0 124 0]>>endobj
+338 0 obj<</Subtype/Link/Rect[144.0 575.8 307.2 588.8]/Border[0 0 0]/Dest[1222 0 R/XYZ 0 507 0]>>endobj
+339 0 obj<</Subtype/Link/Rect[144.0 562.6 440.4 575.6]/Border[0 0 0]/Dest[1234 0 R/XYZ 0 702 0]>>endobj
+340 0 obj<</Subtype/Link/Rect[108.0 549.4 474.4 562.4]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 734 0]>>endobj
+341 0 obj<</Subtype/Link/Rect[144.0 536.2 237.8 549.2]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 672 0]>>endobj
+342 0 obj<</Subtype/Link/Rect[144.0 523.0 197.8 536.0]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 597 0]>>endobj
+343 0 obj<</Subtype/Link/Rect[144.0 509.8 377.1 522.8]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 223 0]>>endobj
+344 0 obj<</Subtype/Link/Rect[144.0 496.6 345.0 509.6]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 524 0]>>endobj
+345 0 obj<</Subtype/Link/Rect[144.0 483.4 284.9 496.4]/Border[0 0 0]/Dest[1240 0 R/XYZ 0 383 0]>>endobj
+346 0 obj<</Subtype/Link/Rect[108.0 470.2 255.6 483.2]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 734 0]>>endobj
+347 0 obj<</Subtype/Link/Rect[144.0 457.0 337.4 470.0]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 551 0]>>endobj
+348 0 obj<</Subtype/Link/Rect[144.0 443.8 338.6 456.8]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 444 0]>>endobj
+349 0 obj<</Subtype/Link/Rect[144.0 430.6 214.0 443.6]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 267 0]>>endobj
+350 0 obj<</Subtype/Link/Rect[144.0 417.4 254.9 430.4]/Border[0 0 0]/Dest[1246 0 R/XYZ 0 564 0]>>endobj
+351 0 obj<</Subtype/Link/Rect[144.0 404.2 272.0 417.2]/Border[0 0 0]/Dest[1246 0 R/XYZ 0 245 0]>>endobj
+352 0 obj<</Subtype/Link/Rect[144.0 391.0 241.5 404.0]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 692 0]>>endobj
+353 0 obj<</Subtype/Link/Rect[144.0 377.8 243.0 390.8]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 603 0]>>endobj
+354 0 obj<</Subtype/Link/Rect[144.0 364.6 169.1 377.6]/Border[0 0 0]/Dest[1248 0 R/XYZ 0 528 0]>>endobj
+355 0 obj<</Subtype/Link/Rect[108.0 351.4 254.4 364.4]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 734 0]>>endobj
+356 0 obj<</Subtype/Link/Rect[144.0 338.2 316.0 351.2]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 696 0]>>endobj
+357 0 obj<</Subtype/Link/Rect[144.0 325.0 303.5 338.0]/Border[0 0 0]/Dest[1252 0 R/XYZ 0 362 0]>>endobj
+358 0 obj<</Subtype/Link/Rect[144.0 311.8 326.5 324.8]/Border[0 0 0]/Dest[1252 0 R/XYZ 0 155 0]>>endobj
+359 0 obj<</Subtype/Link/Rect[85.7 298.6 190.2 311.6]/Border[0 0 0]/Dest[1254 0 R/XYZ 0 337 0]>>endobj
+360 0 obj<</Subtype/Link/Rect[108.0 285.4 314.9 298.4]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 734 0]>>endobj
+361 0 obj<</Subtype/Link/Rect[144.0 272.2 177.6 285.2]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 696 0]>>endobj
+362 0 obj<</Subtype/Link/Rect[144.0 259.0 342.6 272.0]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 463 0]>>endobj
+363 0 obj<</Subtype/Link/Rect[144.0 245.8 395.5 258.8]/Border[0 0 0]/Dest[1264 0 R/XYZ 0 347 0]>>endobj
+364 0 obj<</Subtype/Link/Rect[144.0 232.6 540.0 245.6]/Border[0 0 0]/Dest[1272 0 R/XYZ 0 667 0]>>endobj
+365 0 obj<</Subtype/Link/Rect[144.0 219.4 512.2 232.4]/Border[0 0 0]/Dest[1274 0 R/XYZ 0 734 0]>>endobj
+366 0 obj<</Subtype/Link/Rect[144.0 206.2 198.4 219.2]/Border[0 0 0]/Dest[1278 0 R/XYZ 0 172 0]>>endobj
+367 0 obj<</Subtype/Link/Rect[108.0 193.0 377.5 206.0]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 734 0]>>endobj
+368 0 obj<</Subtype/Link/Rect[144.0 179.8 458.4 192.8]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 672 0]>>endobj
+369 0 obj<</Subtype/Link/Rect[144.0 166.6 335.3 179.6]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 497 0]>>endobj
+370 0 obj<</Subtype/Link/Rect[144.0 153.4 245.5 166.4]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 330 0]>>endobj
+371 0 obj<</Subtype/Link/Rect[144.0 140.2 307.8 153.2]/Border[0 0 0]/Dest[1284 0 R/XYZ 0 665 0]>>endobj
+372 0 obj<</Subtype/Link/Rect[144.0 127.0 316.9 140.0]/Border[0 0 0]/Dest[1286 0 R/XYZ 0 692 0]>>endobj
+373 0 obj<</Subtype/Link/Rect[144.0 113.8 413.8 126.8]/Border[0 0 0]/Dest[1286 0 R/XYZ 0 260 0]>>endobj
+374 0 obj<</Subtype/Link/Rect[144.0 100.6 404.0 113.6]/Border[0 0 0]/Dest[1290 0 R/XYZ 0 599 0]>>endobj
+375 0 obj<</Subtype/Link/Rect[108.0 87.4 421.2 100.4]/Border[0 0 0]/Dest[1292 0 R/XYZ 0 734 0]>>endobj
+376 0 obj<</Subtype/Link/Rect[144.0 74.2 218.5 87.2]/Border[0 0 0]/Dest[1292 0 R/XYZ 0 672 0]>>endobj
+377 0 obj<</Subtype/Link/Rect[144.0 61.0 261.6 74.0]/Border[0 0 0]/Dest[1294 0 R/XYZ 0 127 0]>>endobj
+378 0 obj[327 0 R
+328 0 R
+329 0 R
330 0 R
331 0 R
332 0 R
@@ -723,61 +720,61 @@
374 0 R
375 0 R
376 0 R
-377 0 R
-378 0 R
-379 0 R]endobj
-381 0 obj<</Subtype/Link/Rect[166.0 721.0 243.3 734.0]/Border[0 0 0]/Dest[1542 0 R/XYZ 0 672 0]>>endobj
-382 0 obj<</Subtype/Link/Rect[166.0 707.8 286.4 720.8]/Border[0 0 0]/Dest[1544 0 R/XYZ 0 148 0]>>endobj
-383 0 obj<</Subtype/Link/Rect[166.0 694.6 309.9 707.6]/Border[0 0 0]/Dest[1546 0 R/XYZ 0 705 0]>>endobj
-384 0 obj<</Subtype/Link/Rect[121.8 681.4 386.0 694.4]/Border[0 0 0]/Dest[1548 0 R/XYZ 0 734 0]>>endobj
-385 0 obj<</Subtype/Link/Rect[166.0 668.2 221.3 681.2]/Border[0 0 0]/Dest[1548 0 R/XYZ 0 672 0]>>endobj
-386 0 obj<</Subtype/Link/Rect[121.8 655.0 198.8 668.0]/Border[0 0 0]/Dest[1552 0 R/XYZ 0 734 0]>>endobj
-387 0 obj<</Subtype/Link/Rect[166.0 641.8 223.8 654.8]/Border[0 0 0]/Dest[1552 0 R/XYZ 0 696 0]>>endobj
-388 0 obj<</Subtype/Link/Rect[166.0 628.6 231.1 641.6]/Border[0 0 0]/Dest[1552 0 R/XYZ 0 317 0]>>endobj
-389 0 obj<</Subtype/Link/Rect[166.0 615.4 260.4 628.4]/Border[0 0 0]/Dest[1562 0 R/XYZ 0 734 0]>>endobj
-390 0 obj<</Subtype/Link/Rect[166.0 602.2 213.4 615.2]/Border[0 0 0]/Dest[1564 0 R/XYZ 0 440 0]>>endobj
-391 0 obj<</Subtype/Link/Rect[121.8 589.0 188.3 602.0]/Border[0 0 0]/Dest[1574 0 R/XYZ 0 734 0]>>endobj
-392 0 obj<</Subtype/Link/Rect[166.0 575.8 223.8 588.8]/Border[0 0 0]/Dest[1574 0 R/XYZ 0 696 0]>>endobj
-393 0 obj<</Subtype/Link/Rect[166.0 562.6 364.0 575.6]/Border[0 0 0]/Dest[1574 0 R/XYZ 0 467 0]>>endobj
-394 0 obj<</Subtype/Link/Rect[121.8 549.4 405.0 562.4]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 734 0]>>endobj
-395 0 obj<</Subtype/Link/Rect[166.0 536.2 206.0 549.2]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 672 0]>>endobj
-396 0 obj<</Subtype/Link/Rect[166.0 523.0 223.8 536.0]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 544 0]>>endobj
-397 0 obj<</Subtype/Link/Rect[166.0 509.8 273.9 522.8]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 231 0]>>endobj
-398 0 obj<</Subtype/Link/Rect[166.0 496.6 260.4 509.6]/Border[0 0 0]/Dest[1580 0 R/XYZ 0 409 0]>>endobj
-399 0 obj<</Subtype/Link/Rect[166.0 483.4 303.8 496.4]/Border[0 0 0]/Dest[1584 0 R/XYZ 0 351 0]>>endobj
-400 0 obj<</Subtype/Link/Rect[166.0 470.2 218.9 483.2]/Border[0 0 0]/Dest[1600 0 R/XYZ 0 296 0]>>endobj
-401 0 obj<</Subtype/Link/Rect[166.0 457.0 218.9 470.0]/Border[0 0 0]/Dest[1602 0 R/XYZ 0 734 0]>>endobj
-402 0 obj<</Subtype/Link/Rect[121.8 443.8 223.5 456.8]/Border[0 0 0]/Dest[1604 0 R/XYZ 0 734 0]>>endobj
-403 0 obj<</Subtype/Link/Rect[166.0 430.6 206.6 443.6]/Border[0 0 0]/Dest[1604 0 R/XYZ 0 696 0]>>endobj
-404 0 obj<</Subtype/Link/Rect[166.0 417.4 222.5 430.4]/Border[0 0 0]/Dest[1604 0 R/XYZ 0 595 0]>>endobj
-405 0 obj<</Subtype/Link/Rect[166.0 404.2 389.1 417.2]/Border[0 0 0]/Dest[1606 0 R/XYZ 0 568 0]>>endobj
-406 0 obj<</Subtype/Link/Rect[166.0 391.0 347.6 404.0]/Border[0 0 0]/Dest[1606 0 R/XYZ 0 414 0]>>endobj
-407 0 obj<</Subtype/Link/Rect[121.8 377.8 211.9 390.8]/Border[0 0 0]/Dest[1608 0 R/XYZ 0 734 0]>>endobj
-408 0 obj<</Subtype/Link/Rect[166.0 364.6 206.6 377.6]/Border[0 0 0]/Dest[1608 0 R/XYZ 0 696 0]>>endobj
-409 0 obj<</Subtype/Link/Rect[166.0 351.4 196.9 364.4]/Border[0 0 0]/Dest[1608 0 R/XYZ 0 608 0]>>endobj
-410 0 obj<</Subtype/Link/Rect[121.8 338.2 456.2 351.2]/Border[0 0 0]/Dest[1610 0 R/XYZ 0 734 0]>>endobj
-411 0 obj<</Subtype/Link/Rect[166.0 325.0 205.4 338.0]/Border[0 0 0]/Dest[1610 0 R/XYZ 0 672 0]>>endobj
-412 0 obj<</Subtype/Link/Rect[166.0 311.8 223.8 324.8]/Border[0 0 0]/Dest[1610 0 R/XYZ 0 412 0]>>endobj
-413 0 obj<</Subtype/Link/Rect[166.0 298.6 280.0 311.6]/Border[0 0 0]/Dest[1612 0 R/XYZ 0 573 0]>>endobj
-414 0 obj<</Subtype/Link/Rect[166.0 285.4 418.4 298.4]/Border[0 0 0]/Dest[1612 0 R/XYZ 0 471 0]>>endobj
-415 0 obj<</Subtype/Link/Rect[166.0 272.2 307.2 285.2]/Border[0 0 0]/Dest[1614 0 R/XYZ 0 734 0]>>endobj
-416 0 obj<</Subtype/Link/Rect[166.0 259.0 323.0 272.0]/Border[0 0 0]/Dest[1616 0 R/XYZ 0 243 0]>>endobj
-417 0 obj<</Subtype/Link/Rect[166.0 245.8 291.6 258.8]/Border[0 0 0]/Dest[1618 0 R/XYZ 0 718 0]>>endobj
-418 0 obj<</Subtype/Link/Rect[166.0 232.6 366.8 245.6]/Border[0 0 0]/Dest[1618 0 R/XYZ 0 336 0]>>endobj
-419 0 obj<</Subtype/Link/Rect[166.0 219.4 360.3 232.4]/Border[0 0 0]/Dest[1620 0 R/XYZ 0 322 0]>>endobj
-420 0 obj<</Subtype/Link/Rect[171.5 206.2 220.7 219.2]/Border[0 0 0]/Dest[1622 0 R/XYZ 0 492 0]>>endobj
-421 0 obj<</Subtype/Link/Rect[121.8 193.0 323.1 206.0]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 734 0]>>endobj
-422 0 obj<</Subtype/Link/Rect[166.0 179.8 223.8 192.8]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 672 0]>>endobj
-423 0 obj<</Subtype/Link/Rect[166.0 166.6 281.8 179.6]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 557 0]>>endobj
-424 0 obj<</Subtype/Link/Rect[121.8 153.4 236.3 166.4]/Border[0 0 0]/Dest[1628 0 R/XYZ 0 734 0]>>endobj
-425 0 obj<</Subtype/Link/Rect[121.8 140.2 242.4 153.2]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 734 0]>>endobj
-426 0 obj<</Subtype/Link/Rect[166.0 127.0 227.4 140.0]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 696 0]>>endobj
-427 0 obj<</Subtype/Link/Rect[166.0 113.8 204.8 126.8]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 449 0]>>endobj
-428 0 obj<</Subtype/Link/Rect[166.0 100.6 232.6 113.6]/Border[0 0 0]/Dest[1632 0 R/XYZ 0 515 0]>>endobj
-429 0 obj<</Subtype/Link/Rect[166.0 87.4 210.6 100.4]/Border[0 0 0]/Dest[1632 0 R/XYZ 0 255 0]>>endobj
-430 0 obj<</Subtype/Link/Rect[166.0 74.2 210.0 87.2]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 718 0]>>endobj
-431 0 obj<</Subtype/Link/Rect[166.0 61.0 204.2 74.0]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 537 0]>>endobj
-432 0 obj[381 0 R
+377 0 R]endobj
+379 0 obj<</Subtype/Link/Rect[144.0 721.0 285.2 734.0]/Border[0 0 0]/Dest[1296 0 R/XYZ 0 679 0]>>endobj
+380 0 obj<</Subtype/Link/Rect[108.0 707.8 369.5 720.8]/Border[0 0 0]/Dest[1298 0 R/XYZ 0 734 0]>>endobj
+381 0 obj<</Subtype/Link/Rect[144.0 694.6 196.6 707.6]/Border[0 0 0]/Dest[1298 0 R/XYZ 0 672 0]>>endobj
+382 0 obj<</Subtype/Link/Rect[108.0 681.4 182.3 694.4]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 734 0]>>endobj
+383 0 obj<</Subtype/Link/Rect[144.0 668.2 199.0 681.2]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 696 0]>>endobj
+384 0 obj<</Subtype/Link/Rect[144.0 655.0 206.3 668.0]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 317 0]>>endobj
+385 0 obj<</Subtype/Link/Rect[144.0 641.8 235.7 654.8]/Border[0 0 0]/Dest[1312 0 R/XYZ 0 734 0]>>endobj
+386 0 obj<</Subtype/Link/Rect[144.0 628.6 188.6 641.6]/Border[0 0 0]/Dest[1314 0 R/XYZ 0 426 0]>>endobj
+387 0 obj<</Subtype/Link/Rect[108.0 615.4 388.5 628.4]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 734 0]>>endobj
+388 0 obj<</Subtype/Link/Rect[144.0 602.2 181.3 615.2]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 672 0]>>endobj
+389 0 obj<</Subtype/Link/Rect[144.0 589.0 199.0 602.0]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 544 0]>>endobj
+390 0 obj<</Subtype/Link/Rect[144.0 575.8 249.1 588.8]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 231 0]>>endobj
+391 0 obj<</Subtype/Link/Rect[144.0 562.6 235.7 575.6]/Border[0 0 0]/Dest[1326 0 R/XYZ 0 409 0]>>endobj
+392 0 obj<</Subtype/Link/Rect[144.0 549.4 279.1 562.4]/Border[0 0 0]/Dest[1330 0 R/XYZ 0 351 0]>>endobj
+393 0 obj<</Subtype/Link/Rect[144.0 536.2 194.1 549.2]/Border[0 0 0]/Dest[1346 0 R/XYZ 0 217 0]>>endobj
+394 0 obj<</Subtype/Link/Rect[144.0 523.0 194.1 536.0]/Border[0 0 0]/Dest[1348 0 R/XYZ 0 679 0]>>endobj
+395 0 obj<</Subtype/Link/Rect[108.0 509.8 207.0 522.8]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 734 0]>>endobj
+396 0 obj<</Subtype/Link/Rect[144.0 496.6 181.9 509.6]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 696 0]>>endobj
+397 0 obj<</Subtype/Link/Rect[144.0 483.4 197.8 496.4]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 595 0]>>endobj
+398 0 obj<</Subtype/Link/Rect[144.0 470.2 364.3 483.2]/Border[0 0 0]/Dest[1352 0 R/XYZ 0 511 0]>>endobj
+399 0 obj<</Subtype/Link/Rect[144.0 457.0 322.8 470.0]/Border[0 0 0]/Dest[1352 0 R/XYZ 0 357 0]>>endobj
+400 0 obj<</Subtype/Link/Rect[108.0 443.8 195.4 456.8]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 734 0]>>endobj
+401 0 obj<</Subtype/Link/Rect[144.0 430.6 181.9 443.6]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 696 0]>>endobj
+402 0 obj<</Subtype/Link/Rect[144.0 417.4 172.1 430.4]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 608 0]>>endobj
+403 0 obj<</Subtype/Link/Rect[108.0 404.2 211.9 417.2]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 734 0]>>endobj
+404 0 obj<</Subtype/Link/Rect[144.0 391.0 280.9 404.0]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 696 0]>>endobj
+405 0 obj<</Subtype/Link/Rect[144.0 377.8 221.9 390.8]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 382 0]>>endobj
+406 0 obj<</Subtype/Link/Rect[144.0 364.6 292.8 377.6]/Border[0 0 0]/Dest[1358 0 R/XYZ 0 430 0]>>endobj
+407 0 obj<</Subtype/Link/Rect[108.0 351.4 439.7 364.4]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 734 0]>>endobj
+408 0 obj<</Subtype/Link/Rect[144.0 338.2 180.7 351.2]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 672 0]>>endobj
+409 0 obj<</Subtype/Link/Rect[144.0 325.0 199.0 338.0]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 412 0]>>endobj
+410 0 obj<</Subtype/Link/Rect[144.0 311.8 255.2 324.8]/Border[0 0 0]/Dest[1364 0 R/XYZ 0 573 0]>>endobj
+411 0 obj<</Subtype/Link/Rect[144.0 298.6 393.6 311.6]/Border[0 0 0]/Dest[1364 0 R/XYZ 0 471 0]>>endobj
+412 0 obj<</Subtype/Link/Rect[144.0 285.4 282.4 298.4]/Border[0 0 0]/Dest[1366 0 R/XYZ 0 734 0]>>endobj
+413 0 obj<</Subtype/Link/Rect[144.0 272.2 298.3 285.2]/Border[0 0 0]/Dest[1368 0 R/XYZ 0 227 0]>>endobj
+414 0 obj<</Subtype/Link/Rect[144.0 259.0 266.8 272.0]/Border[0 0 0]/Dest[1370 0 R/XYZ 0 705 0]>>endobj
+415 0 obj<</Subtype/Link/Rect[144.0 245.8 342.0 258.8]/Border[0 0 0]/Dest[1370 0 R/XYZ 0 320 0]>>endobj
+416 0 obj<</Subtype/Link/Rect[144.0 232.6 335.6 245.6]/Border[0 0 0]/Dest[1372 0 R/XYZ 0 309 0]>>endobj
+417 0 obj<</Subtype/Link/Rect[144.0 219.4 190.4 232.4]/Border[0 0 0]/Dest[1374 0 R/XYZ 0 478 0]>>endobj
+418 0 obj<</Subtype/Link/Rect[108.0 206.2 306.6 219.2]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 734 0]>>endobj
+419 0 obj<</Subtype/Link/Rect[144.0 193.0 199.0 206.0]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 696 0]>>endobj
+420 0 obj<</Subtype/Link/Rect[144.0 179.8 257.0 192.8]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 581 0]>>endobj
+421 0 obj<</Subtype/Link/Rect[108.0 166.6 219.8 179.6]/Border[0 0 0]/Dest[1380 0 R/XYZ 0 734 0]>>endobj
+422 0 obj<</Subtype/Link/Rect[108.0 153.4 225.9 166.4]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 734 0]>>endobj
+423 0 obj<</Subtype/Link/Rect[144.0 140.2 202.7 153.2]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 696 0]>>endobj
+424 0 obj<</Subtype/Link/Rect[144.0 127.0 207.9 140.0]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 449 0]>>endobj
+425 0 obj<</Subtype/Link/Rect[144.0 113.8 185.9 126.8]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 189 0]>>endobj
+426 0 obj<</Subtype/Link/Rect[144.0 100.6 185.2 113.6]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 639 0]>>endobj
+427 0 obj<</Subtype/Link/Rect[144.0 87.4 184.6 100.4]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 458 0]>>endobj
+428 0 obj<</Subtype/Link/Rect[144.0 74.2 186.5 87.2]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 383 0]>>endobj
+429 0 obj<</Subtype/Link/Rect[144.0 61.0 188.3 74.0]/Border[0 0 0]/Dest[1384 0 R/XYZ 0 215 0]>>endobj
+430 0 obj[379 0 R
+380 0 R
+381 0 R
382 0 R
383 0 R
384 0 R
@@ -825,45 +822,37 @@
426 0 R
427 0 R
428 0 R
-429 0 R
-430 0 R
-431 0 R]endobj
-433 0 obj<</Subtype/Link/Rect[166.0 721.0 225.3 734.0]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 409 0]>>endobj
-434 0 obj<</Subtype/Link/Rect[166.0 707.8 209.4 720.8]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 189 0]>>endobj
-435 0 obj<</Subtype/Link/Rect[166.0 694.6 214.9 707.6]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 734 0]>>endobj
-436 0 obj<</Subtype/Link/Rect[171.5 681.4 216.7 694.4]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 645 0]>>endobj
-437 0 obj<</Subtype/Link/Rect[171.5 668.2 218.6 681.2]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 477 0]>>endobj
-438 0 obj<</Subtype/Link/Rect[171.5 655.0 244.8 668.0]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 349 0]>>endobj
-439 0 obj<</Subtype/Link/Rect[171.5 641.8 252.2 654.8]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 129 0]>>endobj
-440 0 obj<</Subtype/Link/Rect[171.5 628.6 229.6 641.6]/Border[0 0 0]/Dest[1638 0 R/XYZ 0 639 0]>>endobj
-441 0 obj<</Subtype/Link/Rect[171.5 615.4 228.3 628.4]/Border[0 0 0]/Dest[1638 0 R/XYZ 0 511 0]>>endobj
-442 0 obj<</Subtype/Link/Rect[171.5 602.2 232.0 615.2]/Border[0 0 0]/Dest[1638 0 R/XYZ 0 436 0]>>endobj
-443 0 obj<</Subtype/Link/Rect[171.5 589.0 222.8 602.0]/Border[0 0 0]/Dest[1640 0 R/XYZ 0 388 0]>>endobj
-444 0 obj<</Subtype/Link/Rect[85.1 575.8 138.6 588.8]/Border[0 0 0]/Dest[1640 0 R/XYZ 0 170 0]>>endobj
-445 0 obj<</Subtype/Link/Rect[121.8 562.6 172.2 575.6]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 734 0]>>endobj
-446 0 obj<</Subtype/Link/Rect[166.0 549.4 198.1 562.4]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 655 0]>>endobj
-447 0 obj<</Subtype/Link/Rect[166.0 536.2 213.7 549.2]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 408 0]>>endobj
-448 0 obj<</Subtype/Link/Rect[166.0 523.0 194.4 536.0]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 293 0]>>endobj
-449 0 obj<</Subtype/Link/Rect[166.0 509.8 296.5 522.8]/Border[0 0 0]/Dest[1646 0 R/XYZ 0 228 0]>>endobj
-450 0 obj<</Subtype/Link/Rect[121.8 496.6 257.1 509.6]/Border[0 0 0]/Dest[1648 0 R/XYZ 0 734 0]>>endobj
-451 0 obj<</Subtype/Link/Rect[166.0 483.4 252.2 496.4]/Border[0 0 0]/Dest[1648 0 R/XYZ 0 668 0]>>endobj
-452 0 obj<</Subtype/Link/Rect[166.0 470.2 217.3 483.2]/Border[0 0 0]/Dest[1648 0 R/XYZ 0 461 0]>>endobj
-453 0 obj<</Subtype/Link/Rect[166.0 457.0 281.8 470.0]/Border[0 0 0]/Dest[1650 0 R/XYZ 0 151 0]>>endobj
-454 0 obj<</Subtype/Link/Rect[166.0 443.8 241.6 456.8]/Border[0 0 0]/Dest[1652 0 R/XYZ 0 292 0]>>endobj
-455 0 obj<</Subtype/Link/Rect[166.0 430.6 301.9 443.6]/Border[0 0 0]/Dest[1654 0 R/XYZ 0 718 0]>>endobj
-456 0 obj<</Subtype/Link/Rect[121.8 417.4 193.2 430.4]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 734 0]>>endobj
-457 0 obj<</Subtype/Link/Rect[166.0 404.2 223.8 417.2]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 696 0]>>endobj
-458 0 obj<</Subtype/Link/Rect[166.0 391.0 224.7 404.0]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 423 0]>>endobj
-459 0 obj<</Subtype/Link/Rect[166.0 377.8 225.9 390.8]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 282 0]>>endobj
-460 0 obj<</Subtype/Link/Rect[166.0 364.6 234.4 377.6]/Border[0 0 0]/Dest[1658 0 R/XYZ 0 613 0]>>endobj
-461 0 obj<</Subtype/Link/Rect[166.0 351.4 305.0 364.4]/Border[0 0 0]/Dest[1658 0 R/XYZ 0 260 0]>>endobj
-462 0 obj<</Subtype/Link/Rect[166.0 338.2 203.6 351.2]/Border[0 0 0]/Dest[1658 0 R/XYZ 0 159 0]>>endobj
-463 0 obj<</Subtype/Link/Rect[121.8 325.0 260.5 338.0]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 734 0]>>endobj
-464 0 obj<</Subtype/Link/Rect[166.0 311.8 223.8 324.8]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 696 0]>>endobj
-465 0 obj<</Subtype/Link/Rect[166.0 298.6 224.4 311.6]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 529 0]>>endobj
-466 0 obj<</Subtype/Link/Rect[166.0 285.4 191.4 298.4]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 199 0]>>endobj
-467 0 obj<</Subtype/Link/Rect[166.0 272.2 263.5 285.2]/Border[0 0 0]/Dest[1668 0 R/XYZ 0 239 0]>>endobj
-468 0 obj[433 0 R
+429 0 R]endobj
+431 0 obj<</Subtype/Link/Rect[144.0 721.0 199.3 734.0]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 734 0]>>endobj
+432 0 obj<</Subtype/Link/Rect[144.0 707.8 198.1 720.8]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 605 0]>>endobj
+433 0 obj<</Subtype/Link/Rect[144.0 694.6 201.8 707.6]/Border[0 0 0]/Dest[1386 0 R/XYZ 0 530 0]>>endobj
+434 0 obj<</Subtype/Link/Rect[85.1 681.4 138.6 694.4]/Border[0 0 0]/Dest[1388 0 R/XYZ 0 450 0]>>endobj
+435 0 obj<</Subtype/Link/Rect[108.0 668.2 155.7 681.2]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 734 0]>>endobj
+436 0 obj<</Subtype/Link/Rect[144.0 655.0 173.3 668.0]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 655 0]>>endobj
+437 0 obj<</Subtype/Link/Rect[144.0 641.8 188.9 654.8]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 408 0]>>endobj
+438 0 obj<</Subtype/Link/Rect[144.0 628.6 169.7 641.6]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 293 0]>>endobj
+439 0 obj<</Subtype/Link/Rect[144.0 615.4 271.8 628.4]/Border[0 0 0]/Dest[1394 0 R/XYZ 0 216 0]>>endobj
+440 0 obj<</Subtype/Link/Rect[108.0 602.2 240.6 615.2]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 734 0]>>endobj
+441 0 obj<</Subtype/Link/Rect[144.0 589.0 227.4 602.0]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 668 0]>>endobj
+442 0 obj<</Subtype/Link/Rect[144.0 575.8 192.6 588.8]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 461 0]>>endobj
+443 0 obj<</Subtype/Link/Rect[144.0 562.6 257.1 575.6]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 165 0]>>endobj
+444 0 obj<</Subtype/Link/Rect[144.0 549.4 216.9 562.4]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 319 0]>>endobj
+445 0 obj<</Subtype/Link/Rect[144.0 536.2 277.2 549.2]/Border[0 0 0]/Dest[1404 0 R/XYZ 0 734 0]>>endobj
+446 0 obj<</Subtype/Link/Rect[108.0 523.0 176.8 536.0]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 734 0]>>endobj
+447 0 obj<</Subtype/Link/Rect[144.0 509.8 199.0 522.8]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 696 0]>>endobj
+448 0 obj<</Subtype/Link/Rect[144.0 496.6 199.9 509.6]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 423 0]>>endobj
+449 0 obj<</Subtype/Link/Rect[144.0 483.4 201.1 496.4]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 282 0]>>endobj
+450 0 obj<</Subtype/Link/Rect[144.0 470.2 209.7 483.2]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 613 0]>>endobj
+451 0 obj<</Subtype/Link/Rect[144.0 457.0 280.3 470.0]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 260 0]>>endobj
+452 0 obj<</Subtype/Link/Rect[144.0 443.8 178.8 456.8]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 159 0]>>endobj
+453 0 obj<</Subtype/Link/Rect[108.0 430.6 244.0 443.6]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 734 0]>>endobj
+454 0 obj<</Subtype/Link/Rect[144.0 417.4 199.0 430.4]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 696 0]>>endobj
+455 0 obj<</Subtype/Link/Rect[144.0 404.2 199.6 417.2]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 529 0]>>endobj
+456 0 obj<</Subtype/Link/Rect[144.0 391.0 166.6 404.0]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 196 0]>>endobj
+457 0 obj<</Subtype/Link/Rect[144.0 377.8 238.7 390.8]/Border[0 0 0]/Dest[1418 0 R/XYZ 0 239 0]>>endobj
+458 0 obj[431 0 R
+432 0 R
+433 0 R
434 0 R
435 0 R
436 0 R
@@ -887,1266 +876,916 @@
454 0 R
455 0 R
456 0 R
-457 0 R
-458 0 R
-459 0 R
+457 0 R]endobj
+459 0 obj<</Subtype/Link/Rect[72.0 631.0 212.9 644.0]/Border[0 0 0]/Dest[1150 0 R/XYZ 0 734 0]>>endobj
+460 0 obj<</Subtype/Link/Rect[72.0 617.8 200.6 630.8]/Border[0 0 0]/Dest[1164 0 R/XYZ 0 734 0]>>endobj
+461 0 obj<</Subtype/Link/Rect[72.0 604.6 363.5 617.6]/Border[0 0 0]/Dest[1182 0 R/XYZ 0 734 0]>>endobj
+462 0 obj<</Subtype/Link/Rect[72.0 591.4 286.5 604.4]/Border[0 0 0]/Dest[1190 0 R/XYZ 0 734 0]>>endobj
+463 0 obj[459 0 R
460 0 R
461 0 R
-462 0 R
-463 0 R
-464 0 R
-465 0 R
-466 0 R
-467 0 R]endobj
-469 0 obj<</Subtype/Link/Rect[80.2 631.0 223.9 644.0]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 734 0]>>endobj
-470 0 obj<</Subtype/Link/Rect[124.5 617.8 216.2 630.8]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 696 0]>>endobj
-471 0 obj<</Subtype/Link/Rect[124.5 604.6 221.4 617.6]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 568 0]>>endobj
-472 0 obj<</Subtype/Link/Rect[124.5 591.4 224.7 604.4]/Border[0 0 0]/Dest[1400 0 R/XYZ 0 163 0]>>endobj
-473 0 obj<</Subtype/Link/Rect[124.5 578.2 276.1 591.2]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 734 0]>>endobj
-474 0 obj<</Subtype/Link/Rect[124.5 565.0 279.1 578.0]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 385 0]>>endobj
-475 0 obj<</Subtype/Link/Rect[124.5 551.8 251.3 564.8]/Border[0 0 0]/Dest[1402 0 R/XYZ 0 257 0]>>endobj
-476 0 obj<</Subtype/Link/Rect[168.8 538.6 276.9 551.6]/Border[0 0 0]/Dest[1404 0 R/XYZ 0 734 0]>>endobj
-477 0 obj<</Subtype/Link/Rect[168.8 525.4 328.2 538.4]/Border[0 0 0]/Dest[1404 0 R/XYZ 0 247 0]>>endobj
-478 0 obj<</Subtype/Link/Rect[124.5 512.2 331.0 525.2]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 665 0]>>endobj
-479 0 obj<</Subtype/Link/Rect[124.5 499.0 280.3 512.0]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 498 0]>>endobj
-480 0 obj<</Subtype/Link/Rect[124.5 485.8 467.0 498.8]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 330 0]>>endobj
-481 0 obj<</Subtype/Link/Rect[130.0 472.6 257.3 485.6]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 734 0]>>endobj
-482 0 obj<</Subtype/Link/Rect[174.2 459.4 273.2 472.4]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 553 0]>>endobj
-483 0 obj<</Subtype/Link/Rect[174.2 446.2 221.9 459.2]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 494 0]>>endobj
-484 0 obj<</Subtype/Link/Rect[174.2 433.0 303.2 446.0]/Border[0 0 0]/Dest[1408 0 R/XYZ 0 409 0]>>endobj
-485 0 obj<</Subtype/Link/Rect[174.2 419.8 331.6 432.8]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 734 0]>>endobj
-486 0 obj<</Subtype/Link/Rect[174.2 406.6 212.4 419.6]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 583 0]>>endobj
-487 0 obj<</Subtype/Link/Rect[174.2 393.4 269.0 406.4]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 128 0]>>endobj
-488 0 obj<</Subtype/Link/Rect[80.2 380.2 211.6 393.2]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 734 0]>>endobj
-489 0 obj<</Subtype/Link/Rect[124.5 367.0 224.4 380.0]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 696 0]>>endobj
-490 0 obj<</Subtype/Link/Rect[124.5 353.8 248.6 366.8]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 515 0]>>endobj
-491 0 obj<</Subtype/Link/Rect[124.5 340.6 212.5 353.6]/Border[0 0 0]/Dest[1414 0 R/XYZ 0 137 0]>>endobj
-492 0 obj<</Subtype/Link/Rect[124.5 327.4 236.6 340.4]/Border[0 0 0]/Dest[1416 0 R/XYZ 0 533 0]>>endobj
-493 0 obj<</Subtype/Link/Rect[168.8 314.2 349.3 327.2]/Border[0 0 0]/Dest[1416 0 R/XYZ 0 273 0]>>endobj
-494 0 obj<</Subtype/Link/Rect[124.5 301.0 238.5 314.0]/Border[0 0 0]/Dest[1422 0 R/XYZ 0 560 0]>>endobj
-495 0 obj<</Subtype/Link/Rect[124.5 287.8 307.2 300.8]/Border[0 0 0]/Dest[1424 0 R/XYZ 0 613 0]>>endobj
-496 0 obj<</Subtype/Link/Rect[124.5 274.6 281.6 287.6]/Border[0 0 0]/Dest[1426 0 R/XYZ 0 622 0]>>endobj
-497 0 obj<</Subtype/Link/Rect[124.5 261.4 267.5 274.4]/Border[0 0 0]/Dest[1426 0 R/XYZ 0 266 0]>>endobj
-498 0 obj<</Subtype/Link/Rect[124.5 248.2 277.0 261.2]/Border[0 0 0]/Dest[1428 0 R/XYZ 0 520 0]>>endobj
-499 0 obj<</Subtype/Link/Rect[130.0 235.0 274.2 248.0]/Border[0 0 0]/Dest[1430 0 R/XYZ 0 734 0]>>endobj
-500 0 obj<</Subtype/Link/Rect[130.0 221.8 216.2 234.8]/Border[0 0 0]/Dest[1430 0 R/XYZ 0 645 0]>>endobj
-501 0 obj<</Subtype/Link/Rect[80.2 208.6 119.0 221.6]/Border[0 0 0]/Dest[1432 0 R/XYZ 0 734 0]>>endobj
-502 0 obj<</Subtype/Link/Rect[124.5 195.4 209.7 208.4]/Border[0 0 0]/Dest[1432 0 R/XYZ 0 696 0]>>endobj
-503 0 obj<</Subtype/Link/Rect[80.2 182.2 374.5 195.2]/Border[0 0 0]/Dest[1434 0 R/XYZ 0 734 0]>>endobj
-504 0 obj<</Subtype/Link/Rect[124.5 169.0 175.5 182.0]/Border[0 0 0]/Dest[1434 0 R/XYZ 0 604 0]>>endobj
-505 0 obj<</Subtype/Link/Rect[124.5 155.8 312.1 168.8]/Border[0 0 0]/Dest[1434 0 R/XYZ 0 159 0]>>endobj
-506 0 obj<</Subtype/Link/Rect[124.5 142.6 324.7 155.6]/Border[0 0 0]/Dest[1436 0 R/XYZ 0 483 0]>>endobj
-507 0 obj<</Subtype/Link/Rect[124.5 129.4 184.1 142.4]/Border[0 0 0]/Dest[1436 0 R/XYZ 0 305 0]>>endobj
-508 0 obj<</Subtype/Link/Rect[124.5 116.2 422.7 129.2]/Border[0 0 0]/Dest[1438 0 R/XYZ 0 467 0]>>endobj
-509 0 obj<</Subtype/Link/Rect[124.5 103.0 232.4 116.0]/Border[0 0 0]/Dest[1438 0 R/XYZ 0 187 0]>>endobj
-510 0 obj<</Subtype/Link/Rect[80.2 89.8 297.5 102.8]/Border[0 0 0]/Dest[1442 0 R/XYZ 0 734 0]>>endobj
-511 0 obj<</Subtype/Link/Rect[124.5 76.6 182.2 89.6]/Border[0 0 0]/Dest[1442 0 R/XYZ 0 672 0]>>endobj
-512 0 obj<</Subtype/Link/Rect[124.5 63.4 266.9 76.4]/Border[0 0 0]/Dest[1442 0 R/XYZ 0 531 0]>>endobj
-513 0 obj[469 0 R
-470 0 R
+462 0 R]endobj
+464 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
+465 0 obj<</Subtype/Link/Rect[367.1 584.2 468.3 597.2]/Border[0 0 0]/A 464 0 R>>endobj
+466 0 obj[465 0 R]endobj
+467 0 obj<</S/Launch/F(Diagnosis.html)>>endobj
+468 0 obj<</Subtype/Link/Rect[280.4 510.2 327.1 523.2]/Border[0 0 0]/A 467 0 R>>endobj
+469 0 obj[468 0 R]endobj
+470 0 obj<</Subtype/Link/Rect[72.0 631.0 331.7 644.0]/Border[0 0 0]/Dest[1200 0 R/XYZ 0 734 0]>>endobj
+471 0 obj<</Subtype/Link/Rect[72.0 617.8 353.4 630.8]/Border[0 0 0]/Dest[1204 0 R/XYZ 0 734 0]>>endobj
+472 0 obj<</Subtype/Link/Rect[72.0 604.6 438.4 617.6]/Border[0 0 0]/Dest[1238 0 R/XYZ 0 734 0]>>endobj
+473 0 obj<</Subtype/Link/Rect[72.0 591.4 219.6 604.4]/Border[0 0 0]/Dest[1244 0 R/XYZ 0 734 0]>>endobj
+474 0 obj<</Subtype/Link/Rect[72.0 578.2 218.4 591.2]/Border[0 0 0]/Dest[1250 0 R/XYZ 0 734 0]>>endobj
+475 0 obj[470 0 R
471 0 R
472 0 R
473 0 R
-474 0 R
-475 0 R
-476 0 R
-477 0 R
-478 0 R
+474 0 R]endobj
+476 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+477 0 obj<</Subtype/Link/Rect[153.2 599.8 225.8 612.8]/Border[0 0 0]/A 476 0 R>>endobj
+478 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
+479 0 obj<</Subtype/Link/Rect[303.1 599.8 389.9 612.8]/Border[0 0 0]/A 478 0 R>>endobj
+480 0 obj<</S/Launch/F(UNIX_INSTALL.html)>>endobj
+481 0 obj<</Subtype/Link/Rect[333.5 442.5 438.0 455.5]/Border[0 0 0]/A 480 0 R>>endobj
+482 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+483 0 obj<</Subtype/Link/Rect[440.4 429.3 541.8 442.3]/Border[0 0 0]/A 482 0 R>>endobj
+484 0 obj[477 0 R
479 0 R
-480 0 R
481 0 R
-482 0 R
-483 0 R
-484 0 R
-485 0 R
-486 0 R
-487 0 R
+483 0 R]endobj
+485 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+486 0 obj<</Subtype/Link/Rect[465.5 659.0 546.8 672.0]/Border[0 0 0]/A 485 0 R>>endobj
+487 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+488 0 obj<</Subtype/Link/Rect[72.0 645.8 92.8 658.8]/Border[0 0 0]/A 487 0 R>>endobj
+489 0 obj<</S/Launch/F(#NETBIOSNAME)>>endobj
+490 0 obj<</Subtype/Link/Rect[95.0 572.0 159.8 583.0]/Border[0 0 0]/A 489 0 R>>endobj
+491 0 obj<</S/Launch/F(#WORKGROUP)>>endobj
+492 0 obj<</Subtype/Link/Rect[95.0 561.2 143.6 572.2]/Border[0 0 0]/A 491 0 R>>endobj
+493 0 obj<</S/Launch/F(#OSLEVEL)>>endobj
+494 0 obj<</Subtype/Link/Rect[95.0 528.8 138.2 539.8]/Border[0 0 0]/A 493 0 R>>endobj
+495 0 obj<</S/Launch/F(#PERFERREDMASTER)>>endobj
+496 0 obj<</Subtype/Link/Rect[95.0 518.0 181.4 529.0]/Border[0 0 0]/A 495 0 R>>endobj
+497 0 obj<</S/Launch/F(#DOMAINMASTER)>>endobj
+498 0 obj<</Subtype/Link/Rect[95.0 507.2 165.2 518.2]/Border[0 0 0]/A 497 0 R>>endobj
+499 0 obj<</S/Launch/F(#LOCALMASTER)>>endobj
+500 0 obj<</Subtype/Link/Rect[95.0 496.4 159.8 507.4]/Border[0 0 0]/A 499 0 R>>endobj
+501 0 obj<</S/Launch/F(#SECURITYEQUALSUSER)>>endobj
+502 0 obj<</Subtype/Link/Rect[95.0 464.0 138.2 475.0]/Border[0 0 0]/A 501 0 R>>endobj
+503 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
+504 0 obj<</Subtype/Link/Rect[95.0 431.6 186.8 442.6]/Border[0 0 0]/A 503 0 R>>endobj
+505 0 obj<</S/Launch/F(#DOMAINLOGONS)>>endobj
+506 0 obj<</Subtype/Link/Rect[95.0 399.2 165.2 410.2]/Border[0 0 0]/A 505 0 R>>endobj
+507 0 obj<</S/Launch/F(#LOGONPATH)>>endobj
+508 0 obj<</Subtype/Link/Rect[95.0 366.8 149.0 377.8]/Border[0 0 0]/A 507 0 R>>endobj
+509 0 obj<</S/Launch/F(#LOGONDRIVE)>>endobj
+510 0 obj<</Subtype/Link/Rect[95.0 323.6 154.4 334.6]/Border[0 0 0]/A 509 0 R>>endobj
+511 0 obj<</S/Launch/F(#LOGONHOME)>>endobj
+512 0 obj<</Subtype/Link/Rect[95.0 312.8 149.0 323.8]/Border[0 0 0]/A 511 0 R>>endobj
+513 0 obj<</S/Launch/F(#LOGONSCRIPT)>>endobj
+514 0 obj<</Subtype/Link/Rect[95.0 269.6 159.8 280.6]/Border[0 0 0]/A 513 0 R>>endobj
+515 0 obj<</S/Launch/F(#PATH)>>endobj
+516 0 obj<</Subtype/Link/Rect[95.0 226.4 116.6 237.4]/Border[0 0 0]/A 515 0 R>>endobj
+517 0 obj<</S/Launch/F(#READONLY)>>endobj
+518 0 obj<</Subtype/Link/Rect[95.0 215.6 143.6 226.6]/Border[0 0 0]/A 517 0 R>>endobj
+519 0 obj<</S/Launch/F(#WRITELIST)>>endobj
+520 0 obj<</Subtype/Link/Rect[95.0 204.8 149.0 215.8]/Border[0 0 0]/A 519 0 R>>endobj
+521 0 obj<</S/Launch/F(#PATH)>>endobj
+522 0 obj<</Subtype/Link/Rect[95.0 161.6 116.6 172.6]/Border[0 0 0]/A 521 0 R>>endobj
+523 0 obj<</S/Launch/F(#READONLY)>>endobj
+524 0 obj<</Subtype/Link/Rect[95.0 150.8 143.6 161.8]/Border[0 0 0]/A 523 0 R>>endobj
+525 0 obj<</S/Launch/F(#CREATEMASK)>>endobj
+526 0 obj<</Subtype/Link/Rect[95.0 140.0 154.4 151.0]/Border[0 0 0]/A 525 0 R>>endobj
+527 0 obj<</S/Launch/F(#DIRECTORYMASK)>>endobj
+528 0 obj<</Subtype/Link/Rect[95.0 129.2 170.6 140.2]/Border[0 0 0]/A 527 0 R>>endobj
+529 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
+530 0 obj<</Subtype/Link/Rect[108.0 62.1 200.6 75.1]/Border[0 0 0]/A 529 0 R>>endobj
+531 0 obj[486 0 R
488 0 R
-489 0 R
490 0 R
-491 0 R
492 0 R
-493 0 R
494 0 R
-495 0 R
496 0 R
-497 0 R
498 0 R
-499 0 R
500 0 R
-501 0 R
502 0 R
-503 0 R
504 0 R
-505 0 R
506 0 R
-507 0 R
508 0 R
-509 0 R
510 0 R
-511 0 R
-512 0 R]endobj
-514 0 obj<</Subtype/Link/Rect[168.8 721.0 309.9 734.0]/Border[0 0 0]/Dest[1444 0 R/XYZ 0 734 0]>>endobj
-515 0 obj<</Subtype/Link/Rect[168.8 707.8 353.4 720.8]/Border[0 0 0]/Dest[1444 0 R/XYZ 0 609 0]>>endobj
-516 0 obj<</Subtype/Link/Rect[124.5 694.6 244.6 707.6]/Border[0 0 0]/Dest[1444 0 R/XYZ 0 511 0]>>endobj
-517 0 obj[514 0 R
-515 0 R
-516 0 R]endobj
-518 0 obj<</S/URI/URI(http://www.samba.org/)>>endobj
-519 0 obj<</Subtype/Link/Rect[367.1 584.2 468.3 597.2]/Border[0 0 0]/A 518 0 R>>endobj
-520 0 obj[519 0 R]endobj
-521 0 obj<</S/Launch/F(Diagnosis.html)>>endobj
-522 0 obj<</Subtype/Link/Rect[280.4 510.2 327.1 523.2]/Border[0 0 0]/A 521 0 R>>endobj
-523 0 obj[522 0 R]endobj
-524 0 obj<</Subtype/Link/Rect[80.2 631.0 364.4 644.0]/Border[0 0 0]/Dest[1452 0 R/XYZ 0 734 0]>>endobj
-525 0 obj<</Subtype/Link/Rect[124.5 617.8 221.0 630.8]/Border[0 0 0]/Dest[1452 0 R/XYZ 0 672 0]>>endobj
-526 0 obj<</Subtype/Link/Rect[124.5 604.6 181.0 617.6]/Border[0 0 0]/Dest[1452 0 R/XYZ 0 584 0]>>endobj
-527 0 obj<</Subtype/Link/Rect[124.5 591.4 317.3 604.4]/Border[0 0 0]/Dest[1454 0 R/XYZ 0 718 0]>>endobj
-528 0 obj<</Subtype/Link/Rect[124.5 578.2 431.3 591.2]/Border[0 0 0]/Dest[1456 0 R/XYZ 0 613 0]>>endobj
-529 0 obj<</Subtype/Link/Rect[168.8 565.0 369.2 578.0]/Border[0 0 0]/Dest[1456 0 R/XYZ 0 227 0]>>endobj
-530 0 obj<</Subtype/Link/Rect[168.8 551.8 400.6 564.8]/Border[0 0 0]/Dest[1458 0 R/XYZ 0 319 0]>>endobj
-531 0 obj<</Subtype/Link/Rect[168.8 538.6 316.0 551.6]/Border[0 0 0]/Dest[1460 0 R/XYZ 0 734 0]>>endobj
-532 0 obj<</Subtype/Link/Rect[124.5 525.4 263.2 538.4]/Border[0 0 0]/Dest[1460 0 R/XYZ 0 385 0]>>endobj
-533 0 obj<</Subtype/Link/Rect[124.5 512.2 252.8 525.2]/Border[0 0 0]/Dest[1462 0 R/XYZ 0 129 0]>>endobj
-534 0 obj<</Subtype/Link/Rect[124.5 499.0 244.9 512.0]/Border[0 0 0]/Dest[1464 0 R/XYZ 0 124 0]>>endobj
-535 0 obj<</Subtype/Link/Rect[124.5 485.8 290.4 498.8]/Border[0 0 0]/Dest[1470 0 R/XYZ 0 507 0]>>endobj
-536 0 obj<</Subtype/Link/Rect[168.8 472.6 368.0 485.6]/Border[0 0 0]/Dest[1472 0 R/XYZ 0 520 0]>>endobj
-537 0 obj<</Subtype/Link/Rect[168.8 459.4 444.1 472.4]/Border[0 0 0]/Dest[1474 0 R/XYZ 0 734 0]>>endobj
-538 0 obj<</Subtype/Link/Rect[124.5 446.2 423.7 459.2]/Border[0 0 0]/Dest[1482 0 R/XYZ 0 718 0]>>endobj
-539 0 obj<</Subtype/Link/Rect[80.2 433.0 449.4 446.0]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 734 0]>>endobj
-540 0 obj<</Subtype/Link/Rect[124.5 419.8 221.0 432.8]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 672 0]>>endobj
-541 0 obj<</Subtype/Link/Rect[124.5 406.6 181.0 419.6]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 597 0]>>endobj
-542 0 obj<</Subtype/Link/Rect[124.5 393.4 360.4 406.4]/Border[0 0 0]/Dest[1486 0 R/XYZ 0 225 0]>>endobj
-543 0 obj<</Subtype/Link/Rect[168.8 380.2 401.0 393.2]/Border[0 0 0]/Dest[1488 0 R/XYZ 0 734 0]>>endobj
-544 0 obj<</Subtype/Link/Rect[168.8 367.0 287.0 380.0]/Border[0 0 0]/Dest[1488 0 R/XYZ 0 609 0]>>endobj
-545 0 obj<</Subtype/Link/Rect[124.5 353.8 328.3 366.8]/Border[0 0 0]/Dest[1488 0 R/XYZ 0 524 0]>>endobj
-546 0 obj<</Subtype/Link/Rect[124.5 340.6 268.1 353.6]/Border[0 0 0]/Dest[1488 0 R/XYZ 0 383 0]>>endobj
-547 0 obj<</Subtype/Link/Rect[168.8 327.4 345.7 340.4]/Border[0 0 0]/Dest[1490 0 R/XYZ 0 620 0]>>endobj
-548 0 obj<</Subtype/Link/Rect[80.2 314.2 230.6 327.2]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 734 0]>>endobj
-549 0 obj<</Subtype/Link/Rect[124.5 301.0 320.7 314.0]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 524 0]>>endobj
-550 0 obj<</Subtype/Link/Rect[124.5 287.8 321.9 300.8]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 417 0]>>endobj
-551 0 obj<</Subtype/Link/Rect[124.5 274.6 197.2 287.6]/Border[0 0 0]/Dest[1492 0 R/XYZ 0 241 0]>>endobj
-552 0 obj<</Subtype/Link/Rect[124.5 261.4 238.2 274.4]/Border[0 0 0]/Dest[1494 0 R/XYZ 0 556 0]>>endobj
-553 0 obj<</Subtype/Link/Rect[124.5 248.2 255.3 261.2]/Border[0 0 0]/Dest[1494 0 R/XYZ 0 240 0]>>endobj
-554 0 obj<</Subtype/Link/Rect[168.8 235.0 239.0 248.0]/Border[0 0 0]/Dest[1494 0 R/XYZ 0 151 0]>>endobj
-555 0 obj<</Subtype/Link/Rect[124.5 221.8 224.7 234.8]/Border[0 0 0]/Dest[1496 0 R/XYZ 0 692 0]>>endobj
-556 0 obj<</Subtype/Link/Rect[124.5 208.6 226.3 221.6]/Border[0 0 0]/Dest[1496 0 R/XYZ 0 603 0]>>endobj
-557 0 obj<</Subtype/Link/Rect[124.5 195.4 152.3 208.4]/Border[0 0 0]/Dest[1496 0 R/XYZ 0 528 0]>>endobj
-558 0 obj<</Subtype/Link/Rect[80.2 182.2 229.4 195.2]/Border[0 0 0]/Dest[1498 0 R/XYZ 0 734 0]>>endobj
-559 0 obj<</Subtype/Link/Rect[124.5 169.0 299.3 182.0]/Border[0 0 0]/Dest[1498 0 R/XYZ 0 696 0]>>endobj
-560 0 obj<</Subtype/Link/Rect[124.5 155.8 286.8 168.8]/Border[0 0 0]/Dest[1500 0 R/XYZ 0 362 0]>>endobj
-561 0 obj<</Subtype/Link/Rect[124.5 142.6 309.7 155.6]/Border[0 0 0]/Dest[1500 0 R/XYZ 0 155 0]>>endobj
-562 0 obj[524 0 R
-525 0 R
+512 0 R
+514 0 R
+516 0 R
+518 0 R
+520 0 R
+522 0 R
+524 0 R
526 0 R
-527 0 R
528 0 R
-529 0 R
-530 0 R
-531 0 R
-532 0 R
-533 0 R
-534 0 R
-535 0 R
-536 0 R
-537 0 R
-538 0 R
-539 0 R
-540 0 R
-541 0 R
-542 0 R
-543 0 R
-544 0 R
+530 0 R]endobj
+532 0 obj<</S/Launch/F(#DOMAINADMINGROUP)>>endobj
+533 0 obj<</Subtype/Link/Rect[494.2 641.8 530.0 654.8]/Border[0 0 0]/A 532 0 R>>endobj
+534 0 obj<</S/Launch/F(#DOMAINADMINGROUP)>>endobj
+535 0 obj<</Subtype/Link/Rect[72.0 628.6 127.9 641.6]/Border[0 0 0]/A 534 0 R>>endobj
+536 0 obj[533 0 R
+535 0 R]endobj
+537 0 obj<</S/Launch/F(smbpasswd.8.html)>>endobj
+538 0 obj<</Subtype/Link/Rect[72.0 509.3 138.6 522.3]/Border[0 0 0]/A 537 0 R>>endobj
+539 0 obj<</S/Launch/F(#ADDUSERSCRIPT)>>endobj
+540 0 obj<</Subtype/Link/Rect[420.0 220.8 486.9 233.8]/Border[0 0 0]/A 539 0 R>>endobj
+541 0 obj[538 0 R
+540 0 R]endobj
+542 0 obj<</S/URI/URI(http://www.microsoft.com/ntserver/management/deployment/planguide/prof_policies.asp)>>endobj
+543 0 obj<</Subtype/Link/Rect[139.8 721.0 387.6 734.0]/Border[0 0 0]/A 542 0 R>>endobj
+544 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE)>>endobj
+545 0 obj<</Subtype/Link/Rect[285.2 179.8 540.0 192.8]/Border[0 0 0]/A 544 0 R>>endobj
+546 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE)>>endobj
+547 0 obj<</Subtype/Link/Rect[230.8 140.2 505.8 153.2]/Border[0 0 0]/A 546 0 R>>endobj
+548 0 obj[543 0 R
545 0 R
-546 0 R
-547 0 R
-548 0 R
-549 0 R
-550 0 R
-551 0 R
-552 0 R
-553 0 R
-554 0 R
-555 0 R
-556 0 R
+547 0 R]endobj
+549 0 obj<</S/URI/URI(http://www.tcpdump.org/)>>endobj
+550 0 obj<</Subtype/Link/Rect[349.4 417.4 455.4 430.4]/Border[0 0 0]/A 549 0 R>>endobj
+551 0 obj<</S/URI/URI(http://www.ethereal.com/)>>endobj
+552 0 obj<</Subtype/Link/Rect[424.5 404.2 536.6 417.2]/Border[0 0 0]/A 551 0 R>>endobj
+553 0 obj[550 0 R
+552 0 R]endobj
+554 0 obj<</S/URI/URI(http://samba.org)>>endobj
+555 0 obj<</Subtype/Link/Rect[233.5 549.4 308.1 562.4]/Border[0 0 0]/A 554 0 R>>endobj
+556 0 obj<</S/URI/URI(http://www.skippy.net/linux/smb-howto.html)>>endobj
+557 0 obj<</Subtype/Link/Rect[144.0 496.6 346.1 509.6]/Border[0 0 0]/A 556 0 R>>endobj
+558 0 obj<</S/URI/URI(http://bioserve.latrobe.edu.au/samba)>>endobj
+559 0 obj<</Subtype/Link/Rect[179.7 470.2 342.3 483.2]/Border[0 0 0]/A 558 0 R>>endobj
+560 0 obj<</S/URI/URI(http://samba.org/cifs/)>>endobj
+561 0 obj<</Subtype/Link/Rect[282.1 457.0 378.7 470.0]/Border[0 0 0]/A 560 0 R>>endobj
+562 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/ntdom/)>>endobj
+563 0 obj<</Subtype/Link/Rect[241.5 443.8 408.5 456.8]/Border[0 0 0]/A 562 0 R>>endobj
+564 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/developr/drg/CIFS/)>>endobj
+565 0 obj<</Subtype/Link/Rect[277.5 430.6 469.1 443.6]/Border[0 0 0]/A 564 0 R>>endobj
+566 0 obj<</S/URI/URI(http://samba.org)>>endobj
+567 0 obj<</Subtype/Link/Rect[358.2 377.8 432.8 390.8]/Border[0 0 0]/A 566 0 R>>endobj
+568 0 obj<</S/URI/URI(http://www.samba-tng.org/)>>endobj
+569 0 obj<</Subtype/Link/Rect[298.4 338.2 422.8 351.2]/Border[0 0 0]/A 568 0 R>>endobj
+570 0 obj[555 0 R
557 0 R
-558 0 R
559 0 R
-560 0 R
-561 0 R]endobj
-563 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-564 0 obj<</Subtype/Link/Rect[153.2 599.8 225.8 612.8]/Border[0 0 0]/A 563 0 R>>endobj
-565 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-566 0 obj<</Subtype/Link/Rect[303.1 599.8 389.9 612.8]/Border[0 0 0]/A 565 0 R>>endobj
-567 0 obj<</S/Launch/F(UNIX_INSTALL.html)>>endobj
-568 0 obj<</Subtype/Link/Rect[333.5 442.5 438.0 455.5]/Border[0 0 0]/A 567 0 R>>endobj
-569 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-570 0 obj<</Subtype/Link/Rect[440.4 429.3 541.8 442.3]/Border[0 0 0]/A 569 0 R>>endobj
-571 0 obj[564 0 R
-566 0 R
-568 0 R
-570 0 R]endobj
-572 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-573 0 obj<</Subtype/Link/Rect[465.5 659.0 546.8 672.0]/Border[0 0 0]/A 572 0 R>>endobj
-574 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-575 0 obj<</Subtype/Link/Rect[72.0 645.8 92.8 658.8]/Border[0 0 0]/A 574 0 R>>endobj
-576 0 obj<</S/Launch/F(#NETBIOSNAME)>>endobj
-577 0 obj<</Subtype/Link/Rect[93.6 573.4 158.4 584.4]/Border[0 0 0]/A 576 0 R>>endobj
-578 0 obj<</S/Launch/F(#WORKGROUP)>>endobj
-579 0 obj<</Subtype/Link/Rect[93.6 562.6 142.2 573.6]/Border[0 0 0]/A 578 0 R>>endobj
-580 0 obj<</S/Launch/F(#OSLEVEL)>>endobj
-581 0 obj<</Subtype/Link/Rect[93.6 530.2 136.8 541.2]/Border[0 0 0]/A 580 0 R>>endobj
-582 0 obj<</S/Launch/F(#PERFERREDMASTER)>>endobj
-583 0 obj<</Subtype/Link/Rect[93.6 519.4 180.0 530.4]/Border[0 0 0]/A 582 0 R>>endobj
-584 0 obj<</S/Launch/F(#DOMAINMASTER)>>endobj
-585 0 obj<</Subtype/Link/Rect[93.6 508.6 163.8 519.6]/Border[0 0 0]/A 584 0 R>>endobj
-586 0 obj<</S/Launch/F(#LOCALMASTER)>>endobj
-587 0 obj<</Subtype/Link/Rect[93.6 497.8 158.4 508.8]/Border[0 0 0]/A 586 0 R>>endobj
-588 0 obj<</S/Launch/F(#SECURITYEQUALSUSER)>>endobj
-589 0 obj<</Subtype/Link/Rect[93.6 465.4 136.8 476.4]/Border[0 0 0]/A 588 0 R>>endobj
-590 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-591 0 obj<</Subtype/Link/Rect[93.6 433.0 185.4 444.0]/Border[0 0 0]/A 590 0 R>>endobj
-592 0 obj<</S/Launch/F(#DOMAINLOGONS)>>endobj
-593 0 obj<</Subtype/Link/Rect[93.6 400.6 163.8 411.6]/Border[0 0 0]/A 592 0 R>>endobj
-594 0 obj<</S/Launch/F(#LOGONPATH)>>endobj
-595 0 obj<</Subtype/Link/Rect[93.6 368.2 147.6 379.2]/Border[0 0 0]/A 594 0 R>>endobj
-596 0 obj<</S/Launch/F(#LOGONDRIVE)>>endobj
-597 0 obj<</Subtype/Link/Rect[93.6 325.0 153.0 336.0]/Border[0 0 0]/A 596 0 R>>endobj
-598 0 obj<</S/Launch/F(#LOGONHOME)>>endobj
-599 0 obj<</Subtype/Link/Rect[93.6 314.2 147.6 325.2]/Border[0 0 0]/A 598 0 R>>endobj
-600 0 obj<</S/Launch/F(#LOGONSCRIPT)>>endobj
-601 0 obj<</Subtype/Link/Rect[93.6 271.0 158.4 282.0]/Border[0 0 0]/A 600 0 R>>endobj
-602 0 obj<</S/Launch/F(#PATH)>>endobj
-603 0 obj<</Subtype/Link/Rect[93.6 227.8 115.2 238.8]/Border[0 0 0]/A 602 0 R>>endobj
-604 0 obj<</S/Launch/F(#READONLY)>>endobj
-605 0 obj<</Subtype/Link/Rect[93.6 217.0 142.2 228.0]/Border[0 0 0]/A 604 0 R>>endobj
-606 0 obj<</S/Launch/F(#WRITELIST)>>endobj
-607 0 obj<</Subtype/Link/Rect[93.6 206.2 147.6 217.2]/Border[0 0 0]/A 606 0 R>>endobj
-608 0 obj<</S/Launch/F(#PATH)>>endobj
-609 0 obj<</Subtype/Link/Rect[93.6 163.0 115.2 174.0]/Border[0 0 0]/A 608 0 R>>endobj
-610 0 obj<</S/Launch/F(#READONLY)>>endobj
-611 0 obj<</Subtype/Link/Rect[93.6 152.2 142.2 163.2]/Border[0 0 0]/A 610 0 R>>endobj
-612 0 obj<</S/Launch/F(#CREATEMASK)>>endobj
-613 0 obj<</Subtype/Link/Rect[93.6 141.4 153.0 152.4]/Border[0 0 0]/A 612 0 R>>endobj
-614 0 obj<</S/Launch/F(#DIRECTORYMASK)>>endobj
-615 0 obj<</Subtype/Link/Rect[93.6 130.6 169.2 141.6]/Border[0 0 0]/A 614 0 R>>endobj
-616 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-617 0 obj<</Subtype/Link/Rect[108.0 65.0 200.6 78.0]/Border[0 0 0]/A 616 0 R>>endobj
-618 0 obj[573 0 R
-575 0 R
-577 0 R
-579 0 R
-581 0 R
-583 0 R
-585 0 R
-587 0 R
+561 0 R
+563 0 R
+565 0 R
+567 0 R
+569 0 R]endobj
+571 0 obj<</S/URI/URI(http://lists.samba.org/)>>endobj
+572 0 obj<</Subtype/Link/Rect[132.8 575.8 227.8 588.8]/Border[0 0 0]/A 571 0 R>>endobj
+573 0 obj<</S/URI/URI(http://lists.samba.org/mailman/roster/samba-ntdom)>>endobj
+574 0 obj<</Subtype/Link/Rect[306.3 562.6 328.0 575.6]/Border[0 0 0]/A 573 0 R>>endobj
+575 0 obj[572 0 R
+574 0 R]endobj
+576 0 obj<</S/Launch/F(Samba-PDC-HOWTO.html)>>endobj
+577 0 obj<</Subtype/Link/Rect[210.4 613.0 317.8 626.0]/Border[0 0 0]/A 576 0 R>>endobj
+578 0 obj[577 0 R]endobj
+579 0 obj<</S/Launch/F(smbpasswd.8.html)>>endobj
+580 0 obj<</Subtype/Link/Rect[218.7 452.2 284.9 465.2]/Border[0 0 0]/A 579 0 R>>endobj
+581 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+582 0 obj<</Subtype/Link/Rect[350.3 135.4 422.9 148.4]/Border[0 0 0]/A 581 0 R>>endobj
+583 0 obj<</S/Launch/F(#SECURITY)>>endobj
+584 0 obj<</Subtype/Link/Rect[169.1 95.8 235.1 108.8]/Border[0 0 0]/A 583 0 R>>endobj
+585 0 obj[580 0 R
+582 0 R
+584 0 R]endobj
+586 0 obj<</S/Launch/F(#WORKGROUP)>>endobj
+587 0 obj<</Subtype/Link/Rect[146.2 721.0 225.4 734.0]/Border[0 0 0]/A 586 0 R>>endobj
+588 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
+589 0 obj<</Subtype/Link/Rect[224.7 641.8 336.9 654.8]/Border[0 0 0]/A 588 0 R>>endobj
+590 0 obj<</S/Launch/F(#PASSWORDSERVER)>>endobj
+591 0 obj<</Subtype/Link/Rect[188.7 602.2 300.9 615.2]/Border[0 0 0]/A 590 0 R>>endobj
+592 0 obj<</S/Launch/F(#SECURITYEQUALSSERVER)>>endobj
+593 0 obj<</Subtype/Link/Rect[275.2 69.0 351.3 82.0]/Border[0 0 0]/A 592 0 R>>endobj
+594 0 obj[587 0 R
589 0 R
591 0 R
-593 0 R
-595 0 R
-597 0 R
-599 0 R
-601 0 R
+593 0 R]endobj
+595 0 obj<</S/Launch/F(winbind.html)>>endobj
+596 0 obj<</Subtype/Link/Rect[151.1 681.4 219.5 694.4]/Border[0 0 0]/A 595 0 R>>endobj
+597 0 obj<</S/URI/URI(http://www.linuxworld.com)>>endobj
+598 0 obj<</Subtype/Link/Rect[438.0 364.6 495.1 377.6]/Border[0 0 0]/A 597 0 R>>endobj
+599 0 obj<</S/URI/URI(http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html)>>endobj
+600 0 obj<</Subtype/Link/Rect[72.0 351.4 186.6 364.4]/Border[0 0 0]/A 599 0 R>>endobj
+601 0 obj[596 0 R
+598 0 R
+600 0 R]endobj
+602 0 obj<</Subtype/Link/Rect[72.0 631.0 278.9 644.0]/Border[0 0 0]/Dest[1260 0 R/XYZ 0 734 0]>>endobj
+603 0 obj<</Subtype/Link/Rect[72.0 617.8 341.5 630.8]/Border[0 0 0]/Dest[1282 0 R/XYZ 0 734 0]>>endobj
+604 0 obj<</Subtype/Link/Rect[72.0 604.6 385.2 617.6]/Border[0 0 0]/Dest[1292 0 R/XYZ 0 734 0]>>endobj
+605 0 obj<</Subtype/Link/Rect[72.0 591.4 333.5 604.4]/Border[0 0 0]/Dest[1298 0 R/XYZ 0 734 0]>>endobj
+606 0 obj<</Subtype/Link/Rect[72.0 578.2 146.3 591.2]/Border[0 0 0]/Dest[1302 0 R/XYZ 0 734 0]>>endobj
+607 0 obj<</Subtype/Link/Rect[72.0 565.0 352.5 578.0]/Border[0 0 0]/Dest[1324 0 R/XYZ 0 734 0]>>endobj
+608 0 obj<</Subtype/Link/Rect[72.0 551.8 171.0 564.8]/Border[0 0 0]/Dest[1350 0 R/XYZ 0 734 0]>>endobj
+609 0 obj<</Subtype/Link/Rect[72.0 538.6 159.4 551.6]/Border[0 0 0]/Dest[1354 0 R/XYZ 0 734 0]>>endobj
+610 0 obj<</Subtype/Link/Rect[72.0 525.4 175.9 538.4]/Border[0 0 0]/Dest[1356 0 R/XYZ 0 734 0]>>endobj
+611 0 obj<</Subtype/Link/Rect[72.0 512.2 403.7 525.2]/Border[0 0 0]/Dest[1362 0 R/XYZ 0 734 0]>>endobj
+612 0 obj<</Subtype/Link/Rect[72.0 499.0 270.6 512.0]/Border[0 0 0]/Dest[1376 0 R/XYZ 0 734 0]>>endobj
+613 0 obj<</Subtype/Link/Rect[72.0 485.8 183.8 498.8]/Border[0 0 0]/Dest[1380 0 R/XYZ 0 734 0]>>endobj
+614 0 obj<</Subtype/Link/Rect[72.0 472.6 189.9 485.6]/Border[0 0 0]/Dest[1382 0 R/XYZ 0 734 0]>>endobj
+615 0 obj[602 0 R
603 0 R
+604 0 R
605 0 R
+606 0 R
607 0 R
+608 0 R
609 0 R
+610 0 R
611 0 R
+612 0 R
613 0 R
-615 0 R
-617 0 R]endobj
-619 0 obj<</S/Launch/F(#DOMAINADMINGROUP)>>endobj
-620 0 obj<</Subtype/Link/Rect[494.2 641.8 530.0 654.8]/Border[0 0 0]/A 619 0 R>>endobj
-621 0 obj<</S/Launch/F(#DOMAINADMINGROUP)>>endobj
-622 0 obj<</Subtype/Link/Rect[72.0 628.6 127.9 641.6]/Border[0 0 0]/A 621 0 R>>endobj
-623 0 obj[620 0 R
-622 0 R]endobj
-624 0 obj<</S/Launch/F(smbpasswd.8.html)>>endobj
-625 0 obj<</Subtype/Link/Rect[72.0 512.2 138.6 525.2]/Border[0 0 0]/A 624 0 R>>endobj
-626 0 obj<</S/Launch/F(#ADDUSERSCRIPT)>>endobj
-627 0 obj<</Subtype/Link/Rect[420.0 223.7 486.9 236.7]/Border[0 0 0]/A 626 0 R>>endobj
-628 0 obj[625 0 R
-627 0 R]endobj
-629 0 obj<</S/URI/URI(http://www.microsoft.com/ntserver/management/deployment/planguide/prof_policies.asp)>>endobj
-630 0 obj<</Subtype/Link/Rect[139.8 721.0 387.6 734.0]/Border[0 0 0]/A 629 0 R>>endobj
-631 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE)>>endobj
-632 0 obj<</Subtype/Link/Rect[285.2 179.8 540.0 192.8]/Border[0 0 0]/A 631 0 R>>endobj
-633 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE)>>endobj
-634 0 obj<</Subtype/Link/Rect[230.8 140.2 505.8 153.2]/Border[0 0 0]/A 633 0 R>>endobj
-635 0 obj[630 0 R
-632 0 R
-634 0 R]endobj
-636 0 obj<</S/URI/URI(http://www.tcpdump.org/)>>endobj
-637 0 obj<</Subtype/Link/Rect[349.4 417.4 455.4 430.4]/Border[0 0 0]/A 636 0 R>>endobj
-638 0 obj<</S/URI/URI(http://www.ethereal.com/)>>endobj
-639 0 obj<</Subtype/Link/Rect[424.5 404.2 536.6 417.2]/Border[0 0 0]/A 638 0 R>>endobj
-640 0 obj[637 0 R
-639 0 R]endobj
-641 0 obj<</S/URI/URI(http://samba.org)>>endobj
-642 0 obj<</Subtype/Link/Rect[233.5 549.4 308.1 562.4]/Border[0 0 0]/A 641 0 R>>endobj
-643 0 obj<</S/URI/URI(http://www.skippy.net/linux/smb-howto.html)>>endobj
-644 0 obj<</Subtype/Link/Rect[144.0 496.6 346.1 509.6]/Border[0 0 0]/A 643 0 R>>endobj
-645 0 obj<</S/URI/URI(http://bioserve.latrobe.edu.au/samba)>>endobj
-646 0 obj<</Subtype/Link/Rect[179.7 470.2 342.3 483.2]/Border[0 0 0]/A 645 0 R>>endobj
-647 0 obj<</S/URI/URI(http://samba.org/cifs/)>>endobj
-648 0 obj<</Subtype/Link/Rect[282.1 457.0 378.7 470.0]/Border[0 0 0]/A 647 0 R>>endobj
-649 0 obj<</S/URI/URI(http://mailhost.cb1.com/~lkcl/ntdom/)>>endobj
-650 0 obj<</Subtype/Link/Rect[241.5 443.8 408.5 456.8]/Border[0 0 0]/A 649 0 R>>endobj
-651 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/developr/drg/CIFS/)>>endobj
-652 0 obj<</Subtype/Link/Rect[277.5 430.6 469.1 443.6]/Border[0 0 0]/A 651 0 R>>endobj
-653 0 obj<</S/URI/URI(http://samba.org)>>endobj
-654 0 obj<</Subtype/Link/Rect[358.2 377.8 432.8 390.8]/Border[0 0 0]/A 653 0 R>>endobj
-655 0 obj<</S/URI/URI(http://www.samba-tng.org/)>>endobj
-656 0 obj<</Subtype/Link/Rect[298.4 338.2 422.8 351.2]/Border[0 0 0]/A 655 0 R>>endobj
-657 0 obj[642 0 R
-644 0 R
-646 0 R
-648 0 R
-650 0 R
-652 0 R
-654 0 R
-656 0 R]endobj
-658 0 obj<</S/URI/URI(http://lists.samba.org/)>>endobj
-659 0 obj<</Subtype/Link/Rect[132.8 575.8 227.8 588.8]/Border[0 0 0]/A 658 0 R>>endobj
-660 0 obj<</S/URI/URI(http://lists.samba.org/mailman/roster/samba-ntdom)>>endobj
-661 0 obj<</Subtype/Link/Rect[306.3 562.6 328.0 575.6]/Border[0 0 0]/A 660 0 R>>endobj
-662 0 obj[659 0 R
-661 0 R]endobj
-663 0 obj<</S/Launch/F(Samba-PDC-HOWTO.html)>>endobj
-664 0 obj<</Subtype/Link/Rect[210.4 613.0 317.8 626.0]/Border[0 0 0]/A 663 0 R>>endobj
-665 0 obj[664 0 R]endobj
-666 0 obj<</S/Launch/F(smbpasswd.8.html)>>endobj
-667 0 obj<</Subtype/Link/Rect[218.7 452.2 284.9 465.2]/Border[0 0 0]/A 666 0 R>>endobj
+614 0 R]endobj
+616 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
+617 0 obj<</Subtype/Link/Rect[174.0 508.6 270.6 521.6]/Border[0 0 0]/A 616 0 R>>endobj
+618 0 obj<</S/Launch/F(#PASSWORDLEVEL)>>endobj
+619 0 obj<</Subtype/Link/Rect[73.4 245.2 154.4 256.2]/Border[0 0 0]/A 618 0 R>>endobj
+620 0 obj<</S/Launch/F(#USERNAMELEVEL)>>endobj
+621 0 obj<</Subtype/Link/Rect[73.4 234.4 149.0 245.4]/Border[0 0 0]/A 620 0 R>>endobj
+622 0 obj[617 0 R
+619 0 R
+621 0 R]endobj
+623 0 obj<</S/Launch/F(winbind.html)>>endobj
+624 0 obj<</Subtype/Link/Rect[503.4 113.7 544.6 126.7]/Border[0 0 0]/A 623 0 R>>endobj
+625 0 obj<</S/Launch/F(winbind.html)>>endobj
+626 0 obj<</Subtype/Link/Rect[72.0 100.5 115.4 113.5]/Border[0 0 0]/A 625 0 R>>endobj
+627 0 obj[624 0 R
+626 0 R]endobj
+628 0 obj<</S/Launch/F(#NTACLSUPPORT)>>endobj
+629 0 obj<</Subtype/Link/Rect[339.9 526.6 438.9 539.6]/Border[0 0 0]/A 628 0 R>>endobj
+630 0 obj[629 0 R]endobj
+631 0 obj<</S/Launch/F(#SECURITYMASK)>>endobj
+632 0 obj<</Subtype/Link/Rect[493.0 707.8 545.8 720.8]/Border[0 0 0]/A 631 0 R>>endobj
+633 0 obj<</S/Launch/F(#SECURITYMASK)>>endobj
+634 0 obj<</Subtype/Link/Rect[72.0 694.6 98.4 707.6]/Border[0 0 0]/A 633 0 R>>endobj
+635 0 obj<</S/Launch/F(#CREATEMASK)>>endobj
+636 0 obj<</Subtype/Link/Rect[356.1 615.4 428.7 628.4]/Border[0 0 0]/A 635 0 R>>endobj
+637 0 obj<</S/Launch/F(#FORCESECURITYMODE)>>endobj
+638 0 obj<</Subtype/Link/Rect[424.3 562.6 549.7 575.6]/Border[0 0 0]/A 637 0 R>>endobj
+639 0 obj<</S/Launch/F(#FORCECREATEMODE)>>endobj
+640 0 obj<</Subtype/Link/Rect[356.1 483.4 468.3 496.4]/Border[0 0 0]/A 639 0 R>>endobj
+641 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+642 0 obj<</Subtype/Link/Rect[72.0 206.2 144.6 219.2]/Border[0 0 0]/A 641 0 R>>endobj
+643 0 obj[632 0 R
+634 0 R
+636 0 R
+638 0 R
+640 0 R
+642 0 R]endobj
+644 0 obj<</S/URI/URI(http://rsync.samba.org/)>>endobj
+645 0 obj<</Subtype/Link/Rect[118.1 67.2 222.3 80.2]/Border[0 0 0]/A 644 0 R>>endobj
+646 0 obj[645 0 R]endobj
+647 0 obj<</S/Launch/F(#OBEYPAMRESTRICTIONS)>>endobj
+648 0 obj<</Subtype/Link/Rect[235.4 632.6 332.9 645.6]/Border[0 0 0]/A 647 0 R>>endobj
+649 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
+650 0 obj<</Subtype/Link/Rect[338.7 553.4 449.4 566.4]/Border[0 0 0]/A 649 0 R>>endobj
+651 0 obj[648 0 R
+650 0 R]endobj
+652 0 obj<</S/URI/URI(http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp)>>endobj
+653 0 obj<</Subtype/Link/Rect[72.0 586.6 183.5 599.6]/Border[0 0 0]/A 652 0 R>>endobj
+654 0 obj<</S/Launch/F(#HOSTMSDFS)>>endobj
+655 0 obj<</Subtype/Link/Rect[345.1 507.4 417.7 520.4]/Border[0 0 0]/A 654 0 R>>endobj
+656 0 obj<</S/Launch/F(#MSDFSROOT)>>endobj
+657 0 obj<</Subtype/Link/Rect[380.8 494.2 453.4 507.2]/Border[0 0 0]/A 656 0 R>>endobj
+658 0 obj[653 0 R
+655 0 R
+657 0 R]endobj
+659 0 obj<</S/URI/URI(http://imprints.sourceforge.net)>>endobj
+660 0 obj<</Subtype/Link/Rect[143.7 544.6 280.3 557.6]/Border[0 0 0]/A 659 0 R>>endobj
+661 0 obj<</S/URI/URI(http://msdn.microsoft.com/)>>endobj
+662 0 obj<</Subtype/Link/Rect[218.6 518.2 341.1 531.2]/Border[0 0 0]/A 661 0 R>>endobj
+663 0 obj<</S/URI/URI(http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP)>>endobj
+664 0 obj<</Subtype/Link/Rect[72.0 333.4 355.9 346.4]/Border[0 0 0]/A 663 0 R>>endobj
+665 0 obj[660 0 R
+662 0 R
+664 0 R]endobj
+666 0 obj<</S/Launch/F(#WRITELIST)>>endobj
+667 0 obj<</Subtype/Link/Rect[91.9 468.5 157.9 481.5]/Border[0 0 0]/A 666 0 R>>endobj
668 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-669 0 obj<</Subtype/Link/Rect[350.3 135.4 422.9 148.4]/Border[0 0 0]/A 668 0 R>>endobj
-670 0 obj<</S/Launch/F(#SECURITY)>>endobj
-671 0 obj<</Subtype/Link/Rect[169.1 95.8 235.1 108.8]/Border[0 0 0]/A 670 0 R>>endobj
-672 0 obj[667 0 R
+669 0 obj<</Subtype/Link/Rect[184.4 455.3 285.8 468.3]/Border[0 0 0]/A 668 0 R>>endobj
+670 0 obj<</S/Launch/F(#GUESTOK)>>endobj
+671 0 obj<</Subtype/Link/Rect[160.6 428.9 228.6 441.9]/Border[0 0 0]/A 670 0 R>>endobj
+672 0 obj<</S/Launch/F(#MAPTOGUEST)>>endobj
+673 0 obj<</Subtype/Link/Rect[501.3 319.0 536.7 332.0]/Border[0 0 0]/A 672 0 R>>endobj
+674 0 obj<</S/Launch/F(#MAPTOGUEST)>>endobj
+675 0 obj<</Subtype/Link/Rect[94.2 305.8 174.1 318.8]/Border[0 0 0]/A 674 0 R>>endobj
+676 0 obj[667 0 R
669 0 R
-671 0 R]endobj
-673 0 obj<</S/Launch/F(#WORKGROUP)>>endobj
-674 0 obj<</Subtype/Link/Rect[146.2 721.0 225.4 734.0]/Border[0 0 0]/A 673 0 R>>endobj
-675 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-676 0 obj<</Subtype/Link/Rect[224.7 641.8 336.9 654.8]/Border[0 0 0]/A 675 0 R>>endobj
-677 0 obj<</S/Launch/F(#PASSWORDSERVER)>>endobj
-678 0 obj<</Subtype/Link/Rect[188.7 602.2 300.9 615.2]/Border[0 0 0]/A 677 0 R>>endobj
-679 0 obj<</S/Launch/F(#SECURITYEQUALSSERVER)>>endobj
-680 0 obj<</Subtype/Link/Rect[275.2 69.0 351.3 82.0]/Border[0 0 0]/A 679 0 R>>endobj
-681 0 obj[674 0 R
-676 0 R
-678 0 R
+671 0 R
+673 0 R
+675 0 R]endobj
+677 0 obj<</S/Launch/F(#PRINTERADMIN)>>endobj
+678 0 obj<</Subtype/Link/Rect[451.3 719.6 537.1 732.6]/Border[0 0 0]/A 677 0 R>>endobj
+679 0 obj<</S/Launch/F(rpcclient.1.html)>>endobj
+680 0 obj<</Subtype/Link/Rect[233.6 99.7 379.3 112.7]/Border[0 0 0]/A 679 0 R>>endobj
+681 0 obj[678 0 R
680 0 R]endobj
-682 0 obj<</S/Launch/F(winbind.html)>>endobj
-683 0 obj<</Subtype/Link/Rect[151.1 681.4 219.5 694.4]/Border[0 0 0]/A 682 0 R>>endobj
-684 0 obj<</S/URI/URI(http://www.linuxworld.com)>>endobj
-685 0 obj<</Subtype/Link/Rect[438.0 364.6 495.1 377.6]/Border[0 0 0]/A 684 0 R>>endobj
-686 0 obj<</S/URI/URI(http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html)>>endobj
-687 0 obj<</Subtype/Link/Rect[72.0 351.4 186.6 364.4]/Border[0 0 0]/A 686 0 R>>endobj
-688 0 obj[683 0 R
+682 0 obj<</S/Launch/F(#SHOWADDPRINTERWIZARD)>>endobj
+683 0 obj<</Subtype/Link/Rect[108.0 347.7 299.4 360.7]/Border[0 0 0]/A 682 0 R>>endobj
+684 0 obj<</S/Launch/F(#ADDPRINTERCOMMAND)>>endobj
+685 0 obj<</Subtype/Link/Rect[453.9 321.3 526.5 334.3]/Border[0 0 0]/A 684 0 R>>endobj
+686 0 obj<</S/Launch/F(#ADDPRINTERCOMMAND)>>endobj
+687 0 obj<</Subtype/Link/Rect[72.0 308.1 118.2 321.1]/Border[0 0 0]/A 686 0 R>>endobj
+688 0 obj<</S/Launch/F(#DELETEPRINTERCOMMAND)>>endobj
+689 0 obj<</Subtype/Link/Rect[189.3 202.5 334.5 215.5]/Border[0 0 0]/A 688 0 R>>endobj
+690 0 obj<</S/Launch/F(#ADDPRINTERCOMMAN)>>endobj
+691 0 obj<</Subtype/Link/Rect[200.6 176.1 326.0 189.1]/Border[0 0 0]/A 690 0 R>>endobj
+692 0 obj[683 0 R
685 0 R
-687 0 R]endobj
-689 0 obj<</Subtype/Link/Rect[85.8 631.0 295.4 644.0]/Border[0 0 0]/Dest[1512 0 R/XYZ 0 734 0]>>endobj
-690 0 obj<</Subtype/Link/Rect[130.0 617.8 166.4 630.8]/Border[0 0 0]/Dest[1512 0 R/XYZ 0 672 0]>>endobj
-691 0 obj<</Subtype/Link/Rect[130.0 604.6 331.4 617.6]/Border[0 0 0]/Dest[1512 0 R/XYZ 0 439 0]>>endobj
-692 0 obj<</Subtype/Link/Rect[177.0 591.4 243.0 604.4]/Border[0 0 0]/Dest[1512 0 R/XYZ 0 311 0]>>endobj
-693 0 obj<</Subtype/Link/Rect[177.0 578.2 282.6 591.2]/Border[0 0 0]/Dest[1514 0 R/XYZ 0 441 0]>>endobj
-694 0 obj<</Subtype/Link/Rect[177.0 565.0 269.4 578.0]/Border[0 0 0]/Dest[1514 0 R/XYZ 0 303 0]>>endobj
-695 0 obj<</Subtype/Link/Rect[177.0 551.8 295.8 564.8]/Border[0 0 0]/Dest[1514 0 R/XYZ 0 157 0]>>endobj
-696 0 obj<</Subtype/Link/Rect[130.0 538.6 384.2 551.6]/Border[0 0 0]/Dest[1516 0 R/XYZ 0 339 0]>>endobj
-697 0 obj<</Subtype/Link/Rect[174.2 525.4 294.6 538.4]/Border[0 0 0]/Dest[1518 0 R/XYZ 0 266 0]>>endobj
-698 0 obj<</Subtype/Link/Rect[174.2 512.2 261.3 525.2]/Border[0 0 0]/Dest[1520 0 R/XYZ 0 734 0]>>endobj
-699 0 obj<</Subtype/Link/Rect[174.2 499.0 226.8 512.0]/Border[0 0 0]/Dest[1522 0 R/XYZ 0 459 0]>>endobj
-700 0 obj<</Subtype/Link/Rect[174.2 485.8 233.5 498.8]/Border[0 0 0]/Dest[1522 0 R/XYZ 0 361 0]>>endobj
-701 0 obj<</Subtype/Link/Rect[174.2 472.6 238.4 485.6]/Border[0 0 0]/Dest[1522 0 R/XYZ 0 224 0]>>endobj
-702 0 obj<</Subtype/Link/Rect[130.0 459.4 528.8 472.4]/Border[0 0 0]/Dest[1524 0 R/XYZ 0 670 0]>>endobj
-703 0 obj<</Subtype/Link/Rect[130.0 446.2 500.9 459.2]/Border[0 0 0]/Dest[1524 0 R/XYZ 0 126 0]>>endobj
-704 0 obj<</Subtype/Link/Rect[174.2 433.0 393.6 446.0]/Border[0 0 0]/Dest[1528 0 R/XYZ 0 734 0]>>endobj
-705 0 obj<</Subtype/Link/Rect[174.2 419.8 455.6 432.8]/Border[0 0 0]/Dest[1528 0 R/XYZ 0 484 0]>>endobj
-706 0 obj<</Subtype/Link/Rect[174.2 406.6 377.1 419.6]/Border[0 0 0]/Dest[1528 0 R/XYZ 0 132 0]>>endobj
-707 0 obj<</Subtype/Link/Rect[130.0 393.4 187.1 406.4]/Border[0 0 0]/Dest[1530 0 R/XYZ 0 263 0]>>endobj
-708 0 obj<</Subtype/Link/Rect[85.8 380.2 358.0 393.2]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 734 0]>>endobj
-709 0 obj<</Subtype/Link/Rect[130.0 367.0 447.2 380.0]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 672 0]>>endobj
-710 0 obj<</Subtype/Link/Rect[130.0 353.8 324.0 366.8]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 497 0]>>endobj
-711 0 obj<</Subtype/Link/Rect[130.0 340.6 234.2 353.6]/Border[0 0 0]/Dest[1532 0 R/XYZ 0 330 0]>>endobj
-712 0 obj<</Subtype/Link/Rect[130.0 327.4 296.5 340.4]/Border[0 0 0]/Dest[1534 0 R/XYZ 0 665 0]>>endobj
-713 0 obj<</Subtype/Link/Rect[174.2 314.2 251.2 327.2]/Border[0 0 0]/Dest[1534 0 R/XYZ 0 432 0]>>endobj
-714 0 obj<</Subtype/Link/Rect[174.2 301.0 276.3 314.0]/Border[0 0 0]/Dest[1534 0 R/XYZ 0 189 0]>>endobj
-715 0 obj<</Subtype/Link/Rect[130.0 287.8 305.7 300.8]/Border[0 0 0]/Dest[1536 0 R/XYZ 0 692 0]>>endobj
-716 0 obj<</Subtype/Link/Rect[130.0 274.6 402.5 287.6]/Border[0 0 0]/Dest[1536 0 R/XYZ 0 260 0]>>endobj
-717 0 obj<</Subtype/Link/Rect[130.0 261.4 392.8 274.4]/Border[0 0 0]/Dest[1540 0 R/XYZ 0 599 0]>>endobj
-718 0 obj<</Subtype/Link/Rect[85.8 248.2 401.7 261.2]/Border[0 0 0]/Dest[1542 0 R/XYZ 0 734 0]>>endobj
-719 0 obj<</Subtype/Link/Rect[130.0 235.0 207.3 248.0]/Border[0 0 0]/Dest[1542 0 R/XYZ 0 672 0]>>endobj
-720 0 obj<</Subtype/Link/Rect[130.0 221.8 250.4 234.8]/Border[0 0 0]/Dest[1544 0 R/XYZ 0 148 0]>>endobj
-721 0 obj<</Subtype/Link/Rect[130.0 208.6 273.9 221.6]/Border[0 0 0]/Dest[1546 0 R/XYZ 0 705 0]>>endobj
-722 0 obj<</Subtype/Link/Rect[85.8 195.4 350.0 208.4]/Border[0 0 0]/Dest[1548 0 R/XYZ 0 734 0]>>endobj
-723 0 obj<</Subtype/Link/Rect[130.0 182.2 185.3 195.2]/Border[0 0 0]/Dest[1548 0 R/XYZ 0 672 0]>>endobj
-724 0 obj<</Subtype/Link/Rect[174.2 169.0 202.1 182.0]/Border[0 0 0]/Dest[1550 0 R/XYZ 0 652 0]>>endobj
-725 0 obj<</Subtype/Link/Rect[85.8 155.8 162.8 168.8]/Border[0 0 0]/Dest[1552 0 R/XYZ 0 734 0]>>endobj
-726 0 obj<</Subtype/Link/Rect[130.0 142.6 187.8 155.6]/Border[0 0 0]/Dest[1552 0 R/XYZ 0 696 0]>>endobj
-727 0 obj<</Subtype/Link/Rect[130.0 129.4 195.1 142.4]/Border[0 0 0]/Dest[1552 0 R/XYZ 0 317 0]>>endobj
-728 0 obj<</Subtype/Link/Rect[174.2 116.2 254.3 129.2]/Border[0 0 0]/Dest[1552 0 R/XYZ 0 131 0]>>endobj
-729 0 obj<</Subtype/Link/Rect[174.2 103.0 337.1 116.0]/Border[0 0 0]/Dest[1556 0 R/XYZ 0 583 0]>>endobj
-730 0 obj<</Subtype/Link/Rect[174.2 89.8 331.3 102.8]/Border[0 0 0]/Dest[1556 0 R/XYZ 0 169 0]>>endobj
-731 0 obj<</Subtype/Link/Rect[174.2 76.6 386.9 89.6]/Border[0 0 0]/Dest[1558 0 R/XYZ 0 470 0]>>endobj
-732 0 obj<</Subtype/Link/Rect[174.2 63.4 287.3 76.4]/Border[0 0 0]/Dest[1560 0 R/XYZ 0 297 0]>>endobj
-733 0 obj[689 0 R
-690 0 R
-691 0 R
-692 0 R
-693 0 R
-694 0 R
-695 0 R
-696 0 R
-697 0 R
-698 0 R
-699 0 R
-700 0 R
-701 0 R
-702 0 R
-703 0 R
-704 0 R
-705 0 R
-706 0 R
-707 0 R
-708 0 R
-709 0 R
+687 0 R
+689 0 R
+691 0 R]endobj
+693 0 obj<</S/Launch/F(#ENUMPORTSCOMMAND)>>endobj
+694 0 obj<</Subtype/Link/Rect[451.4 135.3 510.8 148.3]/Border[0 0 0]/A 693 0 R>>endobj
+695 0 obj<</S/Launch/F(#ENUMPORTSCOMMAND)>>endobj
+696 0 obj<</Subtype/Link/Rect[72.0 122.1 118.2 135.1]/Border[0 0 0]/A 695 0 R>>endobj
+697 0 obj[694 0 R
+696 0 R]endobj
+698 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
+699 0 obj<</Subtype/Link/Rect[297.8 674.2 437.4 687.2]/Border[0 0 0]/A 698 0 R>>endobj
+700 0 obj[699 0 R]endobj
+701 0 obj<</S/URI/URI(mailto:jtrostel@snapserver.com)>>endobj
+702 0 obj<</Subtype/Link/Rect[197.9 304.6 310.1 317.6]/Border[0 0 0]/A 701 0 R>>endobj
+703 0 obj[702 0 R]endobj
+704 0 obj<</S/URI/URI(http://samba.org/)>>endobj
+705 0 obj<</Subtype/Link/Rect[151.1 438.2 262.3 451.2]/Border[0 0 0]/A 704 0 R>>endobj
+706 0 obj[705 0 R]endobj
+707 0 obj<</S/Launch/F(winbindd.8.html)>>endobj
+708 0 obj<</Subtype/Link/Rect[306.3 232.9 363.4 245.9]/Border[0 0 0]/A 707 0 R>>endobj
+709 0 obj<</S/Launch/F(#WINBINDSEPARATOR)>>endobj
+710 0 obj<</Subtype/Link/Rect[100.4 161.5 192.2 172.5]/Border[0 0 0]/A 709 0 R>>endobj
+711 0 obj<</S/Launch/F(#WINBINDUID)>>endobj
+712 0 obj<</Subtype/Link/Rect[100.4 139.9 159.8 150.9]/Border[0 0 0]/A 711 0 R>>endobj
+713 0 obj<</S/Launch/F(#WINBINDGID)>>endobj
+714 0 obj<</Subtype/Link/Rect[100.4 118.3 159.8 129.3]/Border[0 0 0]/A 713 0 R>>endobj
+715 0 obj<</S/Launch/F(#WINBINDENUMUSERS)>>endobj
+716 0 obj<</Subtype/Link/Rect[100.4 96.7 197.6 107.7]/Border[0 0 0]/A 715 0 R>>endobj
+717 0 obj<</S/Launch/F(#WINBINDENUMGROUP)>>endobj
+718 0 obj<</Subtype/Link/Rect[100.4 85.9 203.0 96.9]/Border[0 0 0]/A 717 0 R>>endobj
+719 0 obj<</S/Launch/F(#TEMPLATEHOMEDIR)>>endobj
+720 0 obj<</Subtype/Link/Rect[100.4 64.3 186.8 75.3]/Border[0 0 0]/A 719 0 R>>endobj
+721 0 obj[708 0 R
710 0 R
-711 0 R
712 0 R
-713 0 R
714 0 R
-715 0 R
716 0 R
-717 0 R
718 0 R
-719 0 R
-720 0 R
-721 0 R
-722 0 R
-723 0 R
-724 0 R
-725 0 R
-726 0 R
-727 0 R
-728 0 R
-729 0 R
-730 0 R
-731 0 R
-732 0 R]endobj
-734 0 obj<</Subtype/Link/Rect[130.0 721.0 224.4 734.0]/Border[0 0 0]/Dest[1562 0 R/XYZ 0 734 0]>>endobj
-735 0 obj<</Subtype/Link/Rect[174.2 707.8 255.8 720.8]/Border[0 0 0]/Dest[1562 0 R/XYZ 0 632 0]>>endobj
-736 0 obj<</Subtype/Link/Rect[174.2 694.6 327.6 707.6]/Border[0 0 0]/Dest[1562 0 R/XYZ 0 507 0]>>endobj
-737 0 obj<</Subtype/Link/Rect[174.2 681.4 263.8 694.4]/Border[0 0 0]/Dest[1562 0 R/XYZ 0 423 0]>>endobj
-738 0 obj<</Subtype/Link/Rect[174.2 668.2 276.6 681.2]/Border[0 0 0]/Dest[1562 0 R/XYZ 0 325 0]>>endobj
-739 0 obj<</Subtype/Link/Rect[130.0 655.0 177.4 668.0]/Border[0 0 0]/Dest[1564 0 R/XYZ 0 440 0]>>endobj
-740 0 obj<</Subtype/Link/Rect[174.2 641.8 232.0 654.8]/Border[0 0 0]/Dest[1564 0 R/XYZ 0 406 0]>>endobj
-741 0 obj<</Subtype/Link/Rect[174.2 628.6 302.9 641.6]/Border[0 0 0]/Dest[1566 0 R/XYZ 0 479 0]>>endobj
-742 0 obj<</Subtype/Link/Rect[174.2 615.4 287.0 628.4]/Border[0 0 0]/Dest[1568 0 R/XYZ 0 692 0]>>endobj
-743 0 obj<</Subtype/Link/Rect[174.2 602.2 339.2 615.2]/Border[0 0 0]/Dest[1568 0 R/XYZ 0 511 0]>>endobj
-744 0 obj<</Subtype/Link/Rect[174.2 589.0 260.7 602.0]/Border[0 0 0]/Dest[1570 0 R/XYZ 0 734 0]>>endobj
-745 0 obj<</Subtype/Link/Rect[174.2 575.8 282.7 588.8]/Border[0 0 0]/Dest[1570 0 R/XYZ 0 394 0]>>endobj
-746 0 obj<</Subtype/Link/Rect[174.2 562.6 279.7 575.6]/Border[0 0 0]/Dest[1572 0 R/XYZ 0 718 0]>>endobj
-747 0 obj<</Subtype/Link/Rect[174.2 549.4 259.8 562.4]/Border[0 0 0]/Dest[1572 0 R/XYZ 0 633 0]>>endobj
-748 0 obj<</Subtype/Link/Rect[174.2 536.2 246.4 549.2]/Border[0 0 0]/Dest[1572 0 R/XYZ 0 535 0]>>endobj
-749 0 obj<</Subtype/Link/Rect[85.8 523.0 152.3 536.0]/Border[0 0 0]/Dest[1574 0 R/XYZ 0 734 0]>>endobj
-750 0 obj<</Subtype/Link/Rect[130.0 509.8 187.8 522.8]/Border[0 0 0]/Dest[1574 0 R/XYZ 0 696 0]>>endobj
-751 0 obj<</Subtype/Link/Rect[130.0 496.6 328.0 509.6]/Border[0 0 0]/Dest[1574 0 R/XYZ 0 467 0]>>endobj
-752 0 obj<</Subtype/Link/Rect[85.8 483.4 369.0 496.4]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 734 0]>>endobj
-753 0 obj<</Subtype/Link/Rect[130.0 470.2 170.0 483.2]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 672 0]>>endobj
-754 0 obj<</Subtype/Link/Rect[130.0 457.0 187.8 470.0]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 544 0]>>endobj
-755 0 obj<</Subtype/Link/Rect[130.0 443.8 237.9 456.8]/Border[0 0 0]/Dest[1578 0 R/XYZ 0 231 0]>>endobj
-756 0 obj<</Subtype/Link/Rect[174.2 430.6 230.5 443.6]/Border[0 0 0]/Dest[1580 0 R/XYZ 0 560 0]>>endobj
-757 0 obj<</Subtype/Link/Rect[130.0 417.4 224.4 430.4]/Border[0 0 0]/Dest[1580 0 R/XYZ 0 409 0]>>endobj
-758 0 obj<</Subtype/Link/Rect[174.2 404.2 330.7 417.2]/Border[0 0 0]/Dest[1580 0 R/XYZ 0 294 0]>>endobj
-759 0 obj<</Subtype/Link/Rect[174.2 391.0 269.9 404.0]/Border[0 0 0]/Dest[1582 0 R/XYZ 0 734 0]>>endobj
-760 0 obj<</Subtype/Link/Rect[174.2 377.8 330.4 390.8]/Border[0 0 0]/Dest[1582 0 R/XYZ 0 292 0]>>endobj
-761 0 obj<</Subtype/Link/Rect[174.2 364.6 312.0 377.6]/Border[0 0 0]/Dest[1584 0 R/XYZ 0 665 0]>>endobj
-762 0 obj<</Subtype/Link/Rect[174.2 351.4 244.5 364.4]/Border[0 0 0]/Dest[1584 0 R/XYZ 0 488 0]>>endobj
-763 0 obj<</Subtype/Link/Rect[130.0 338.2 267.8 351.2]/Border[0 0 0]/Dest[1584 0 R/XYZ 0 351 0]>>endobj
-764 0 obj<</Subtype/Link/Rect[174.2 325.0 232.0 338.0]/Border[0 0 0]/Dest[1584 0 R/XYZ 0 209 0]>>endobj
-765 0 obj<</Subtype/Link/Rect[174.2 311.8 237.5 324.8]/Border[0 0 0]/Dest[1586 0 R/XYZ 0 599 0]>>endobj
-766 0 obj<</Subtype/Link/Rect[174.2 298.6 261.3 311.6]/Border[0 0 0]/Dest[1586 0 R/XYZ 0 330 0]>>endobj
-767 0 obj<</Subtype/Link/Rect[130.0 285.4 182.9 298.4]/Border[0 0 0]/Dest[1600 0 R/XYZ 0 296 0]>>endobj
-768 0 obj<</Subtype/Link/Rect[130.0 272.2 182.9 285.2]/Border[0 0 0]/Dest[1602 0 R/XYZ 0 734 0]>>endobj
-769 0 obj<</Subtype/Link/Rect[85.8 259.0 187.5 272.0]/Border[0 0 0]/Dest[1604 0 R/XYZ 0 734 0]>>endobj
-770 0 obj<</Subtype/Link/Rect[130.0 245.8 170.6 258.8]/Border[0 0 0]/Dest[1604 0 R/XYZ 0 696 0]>>endobj
-771 0 obj<</Subtype/Link/Rect[130.0 232.6 186.5 245.6]/Border[0 0 0]/Dest[1604 0 R/XYZ 0 595 0]>>endobj
-772 0 obj<</Subtype/Link/Rect[130.0 219.4 353.1 232.4]/Border[0 0 0]/Dest[1606 0 R/XYZ 0 568 0]>>endobj
-773 0 obj<</Subtype/Link/Rect[130.0 206.2 311.6 219.2]/Border[0 0 0]/Dest[1606 0 R/XYZ 0 414 0]>>endobj
-774 0 obj<</Subtype/Link/Rect[85.8 193.0 175.9 206.0]/Border[0 0 0]/Dest[1608 0 R/XYZ 0 734 0]>>endobj
-775 0 obj<</Subtype/Link/Rect[130.0 179.8 170.6 192.8]/Border[0 0 0]/Dest[1608 0 R/XYZ 0 696 0]>>endobj
-776 0 obj<</Subtype/Link/Rect[130.0 166.6 160.9 179.6]/Border[0 0 0]/Dest[1608 0 R/XYZ 0 608 0]>>endobj
-777 0 obj<</Subtype/Link/Rect[85.8 153.4 420.2 166.4]/Border[0 0 0]/Dest[1610 0 R/XYZ 0 734 0]>>endobj
-778 0 obj<</Subtype/Link/Rect[130.0 140.2 169.4 153.2]/Border[0 0 0]/Dest[1610 0 R/XYZ 0 672 0]>>endobj
-779 0 obj<</Subtype/Link/Rect[130.0 127.0 187.8 140.0]/Border[0 0 0]/Dest[1610 0 R/XYZ 0 412 0]>>endobj
-780 0 obj<</Subtype/Link/Rect[130.0 113.8 244.0 126.8]/Border[0 0 0]/Dest[1612 0 R/XYZ 0 573 0]>>endobj
-781 0 obj<</Subtype/Link/Rect[130.0 100.6 382.4 113.6]/Border[0 0 0]/Dest[1612 0 R/XYZ 0 471 0]>>endobj
-782 0 obj<</Subtype/Link/Rect[130.0 87.4 271.2 100.4]/Border[0 0 0]/Dest[1614 0 R/XYZ 0 734 0]>>endobj
-783 0 obj<</Subtype/Link/Rect[174.2 74.2 291.0 87.2]/Border[0 0 0]/Dest[1614 0 R/XYZ 0 700 0]>>endobj
-784 0 obj<</Subtype/Link/Rect[174.2 61.0 263.5 74.0]/Border[0 0 0]/Dest[1614 0 R/XYZ 0 143 0]>>endobj
-785 0 obj[734 0 R
-735 0 R
+720 0 R]endobj
+722 0 obj<</S/Launch/F(#TEMPLATESHELL)>>endobj
+723 0 obj<</Subtype/Link/Rect[100.4 721.6 176.0 732.6]/Border[0 0 0]/A 722 0 R>>endobj
+724 0 obj[723 0 R]endobj
+725 0 obj<</S/URI/URI(http://www.css.tayloru.edu/~elorimer/databasefs/index.php)>>endobj
+726 0 obj<</Subtype/Link/Rect[97.1 272.5 360.6 285.5]/Border[0 0 0]/A 725 0 R>>endobj
+727 0 obj<</S/URI/URI(mailto:elorimer@css.tayloru.edu)>>endobj
+728 0 obj<</Subtype/Link/Rect[84.8 246.1 144.7 259.1]/Border[0 0 0]/A 727 0 R>>endobj
+729 0 obj[726 0 R
+728 0 R]endobj
+730 0 obj<</S/URI/URI(http://www.openantivirus.org/)>>endobj
+731 0 obj<</Subtype/Link/Rect[97.1 691.0 233.0 704.0]/Border[0 0 0]/A 730 0 R>>endobj
+732 0 obj[731 0 R]endobj
+733 0 obj<</S/URI/URI(http://www.openldap.org/)>>endobj
+734 0 obj<</Subtype/Link/Rect[169.5 560.2 285.9 573.2]/Border[0 0 0]/A 733 0 R>>endobj
+735 0 obj<</S/URI/URI(http://iplanet.netscape.com/directory)>>endobj
+736 0 obj<</Subtype/Link/Rect[223.9 547.0 387.9 560.0]/Border[0 0 0]/A 735 0 R>>endobj
+737 0 obj<</S/URI/URI(http://www.ora.com/)>>endobj
+738 0 obj<</Subtype/Link/Rect[112.6 520.6 202.0 533.6]/Border[0 0 0]/A 737 0 R>>endobj
+739 0 obj<</S/URI/URI(http://www.unav.es/cti/ldap-smb/ldap-smb-3-howto.html)>>endobj
+740 0 obj<</Subtype/Link/Rect[125.1 454.6 267.5 467.6]/Border[0 0 0]/A 739 0 R>>endobj
+741 0 obj<</S/URI/URI(http://samba.idealx.org/)>>endobj
+742 0 obj<</Subtype/Link/Rect[243.7 441.4 287.3 454.4]/Border[0 0 0]/A 741 0 R>>endobj
+743 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
+744 0 obj<</Subtype/Link/Rect[212.8 366.2 332.5 379.2]/Border[0 0 0]/A 743 0 R>>endobj
+745 0 obj[734 0 R
736 0 R
-737 0 R
738 0 R
-739 0 R
740 0 R
-741 0 R
742 0 R
-743 0 R
-744 0 R
-745 0 R
-746 0 R
-747 0 R
-748 0 R
+744 0 R]endobj
+746 0 obj<</S/URI/URI(http://www.padl.com/)>>endobj
+747 0 obj<</Subtype/Link/Rect[284.3 602.2 380.9 615.2]/Border[0 0 0]/A 746 0 R>>endobj
+748 0 obj<</S/Launch/F(samba-patches@samba.org)>>endobj
+749 0 obj<</Subtype/Link/Rect[332.3 487.4 458.0 500.4]/Border[0 0 0]/A 748 0 R>>endobj
+750 0 obj<</S/Launch/F(jerry@samba.org)>>endobj
+751 0 obj<</Subtype/Link/Rect[476.6 487.4 555.8 500.4]/Border[0 0 0]/A 750 0 R>>endobj
+752 0 obj<</S/Launch/F(jerry@samba.org)>>endobj
+753 0 obj<</Subtype/Link/Rect[271.2 254.5 350.4 267.5]/Border[0 0 0]/A 752 0 R>>endobj
+754 0 obj[747 0 R
749 0 R
-750 0 R
751 0 R
-752 0 R
-753 0 R
-754 0 R
-755 0 R
-756 0 R
-757 0 R
+753 0 R]endobj
+755 0 obj<</S/Launch/F(#LDAPSSL)>>endobj
+756 0 obj<</Subtype/Link/Rect[108.0 721.0 141.3 734.0]/Border[0 0 0]/A 755 0 R>>endobj
+757 0 obj<</S/Launch/F(#LDAPSERVER)>>endobj
+758 0 obj<</Subtype/Link/Rect[108.0 707.8 156.6 720.8]/Border[0 0 0]/A 757 0 R>>endobj
+759 0 obj<</S/Launch/F(#LDAPADMINDN)>>endobj
+760 0 obj<</Subtype/Link/Rect[108.0 694.6 170.9 707.6]/Border[0 0 0]/A 759 0 R>>endobj
+761 0 obj<</S/Launch/F(#LDAPSUFFIX)>>endobj
+762 0 obj<</Subtype/Link/Rect[108.0 681.4 155.4 694.4]/Border[0 0 0]/A 761 0 R>>endobj
+763 0 obj<</S/Launch/F(#LDAPFILTER)>>endobj
+764 0 obj<</Subtype/Link/Rect[108.0 668.2 151.1 681.2]/Border[0 0 0]/A 763 0 R>>endobj
+765 0 obj<</S/Launch/F(#LDAPPORT)>>endobj
+766 0 obj<</Subtype/Link/Rect[108.0 655.0 147.4 668.0]/Border[0 0 0]/A 765 0 R>>endobj
+767 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+768 0 obj<</Subtype/Link/Rect[186.9 628.6 243.1 641.6]/Border[0 0 0]/A 767 0 R>>endobj
+769 0 obj[756 0 R
758 0 R
-759 0 R
760 0 R
-761 0 R
762 0 R
-763 0 R
764 0 R
-765 0 R
766 0 R
-767 0 R
-768 0 R
-769 0 R
-770 0 R
-771 0 R
-772 0 R
-773 0 R
-774 0 R
-775 0 R
-776 0 R
-777 0 R
-778 0 R
-779 0 R
-780 0 R
-781 0 R
+768 0 R]endobj
+770 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
+771 0 obj<</Subtype/Link/Rect[72.0 553.4 176.8 566.4]/Border[0 0 0]/A 770 0 R>>endobj
+772 0 obj[771 0 R]endobj
+773 0 obj<</S/Launch/F(Samba-PDC-HOWTO.html)>>endobj
+774 0 obj<</Subtype/Link/Rect[72.0 509.8 176.7 522.8]/Border[0 0 0]/A 773 0 R>>endobj
+775 0 obj[774 0 R]endobj
+776 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
+777 0 obj<</Subtype/Link/Rect[302.7 431.7 381.8 444.7]/Border[0 0 0]/A 776 0 R>>endobj
+778 0 obj[777 0 R]endobj
+779 0 obj<</S/URI/URI(http://samba.org/samba/cvs.html)>>endobj
+780 0 obj<</Subtype/Link/Rect[354.3 597.4 500.7 610.4]/Border[0 0 0]/A 779 0 R>>endobj
+781 0 obj<</S/URI/URI(http://samba.org/cgi-bin/cvsweb)>>endobj
+782 0 obj<</Subtype/Link/Rect[135.9 397.8 283.2 410.8]/Border[0 0 0]/A 781 0 R>>endobj
+783 0 obj<</S/URI/URI(http://www.cyclic.com/)>>endobj
+784 0 obj<</Subtype/Link/Rect[391.6 286.6 498.2 299.6]/Border[0 0 0]/A 783 0 R>>endobj
+785 0 obj[780 0 R
782 0 R
-783 0 R
784 0 R]endobj
-786 0 obj<</Subtype/Link/Rect[130.0 721.0 287.0 734.0]/Border[0 0 0]/Dest[1616 0 R/XYZ 0 243 0]>>endobj
-787 0 obj<</Subtype/Link/Rect[130.0 707.8 255.6 720.8]/Border[0 0 0]/Dest[1618 0 R/XYZ 0 718 0]>>endobj
-788 0 obj<</Subtype/Link/Rect[130.0 694.6 330.8 707.6]/Border[0 0 0]/Dest[1618 0 R/XYZ 0 336 0]>>endobj
-789 0 obj<</Subtype/Link/Rect[130.0 681.4 324.3 694.4]/Border[0 0 0]/Dest[1620 0 R/XYZ 0 322 0]>>endobj
-790 0 obj<</Subtype/Link/Rect[135.5 668.2 184.7 681.2]/Border[0 0 0]/Dest[1622 0 R/XYZ 0 492 0]>>endobj
-791 0 obj<</Subtype/Link/Rect[85.8 655.0 287.1 668.0]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 734 0]>>endobj
-792 0 obj<</Subtype/Link/Rect[130.0 641.8 187.8 654.8]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 672 0]>>endobj
-793 0 obj<</Subtype/Link/Rect[130.0 628.6 245.8 641.6]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 557 0]>>endobj
-794 0 obj<</Subtype/Link/Rect[174.2 615.4 263.2 628.4]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 469 0]>>endobj
-795 0 obj<</Subtype/Link/Rect[174.2 602.2 239.9 615.2]/Border[0 0 0]/Dest[1624 0 R/XYZ 0 358 0]>>endobj
-796 0 obj<</Subtype/Link/Rect[85.8 589.0 200.3 602.0]/Border[0 0 0]/Dest[1628 0 R/XYZ 0 734 0]>>endobj
-797 0 obj<</Subtype/Link/Rect[85.8 575.8 206.4 588.8]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 734 0]>>endobj
-798 0 obj<</Subtype/Link/Rect[130.0 562.6 191.4 575.6]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 696 0]>>endobj
-799 0 obj<</Subtype/Link/Rect[130.0 549.4 168.8 562.4]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 449 0]>>endobj
-800 0 obj<</Subtype/Link/Rect[174.2 536.2 219.2 549.2]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 416 0]>>endobj
-801 0 obj<</Subtype/Link/Rect[174.2 523.0 245.1 536.0]/Border[0 0 0]/Dest[1630 0 R/XYZ 0 146 0]>>endobj
-802 0 obj<</Subtype/Link/Rect[174.2 509.8 348.3 522.8]/Border[0 0 0]/Dest[1632 0 R/XYZ 0 652 0]>>endobj
-803 0 obj<</Subtype/Link/Rect[130.0 496.6 196.6 509.6]/Border[0 0 0]/Dest[1632 0 R/XYZ 0 515 0]>>endobj
-804 0 obj<</Subtype/Link/Rect[130.0 483.4 174.6 496.4]/Border[0 0 0]/Dest[1632 0 R/XYZ 0 255 0]>>endobj
-805 0 obj<</Subtype/Link/Rect[130.0 470.2 174.0 483.2]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 718 0]>>endobj
-806 0 obj<</Subtype/Link/Rect[130.0 457.0 168.2 470.0]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 537 0]>>endobj
-807 0 obj<</Subtype/Link/Rect[130.0 443.8 189.3 456.8]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 409 0]>>endobj
-808 0 obj<</Subtype/Link/Rect[130.0 430.6 173.4 443.6]/Border[0 0 0]/Dest[1634 0 R/XYZ 0 189 0]>>endobj
-809 0 obj<</Subtype/Link/Rect[130.0 417.4 178.9 430.4]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 734 0]>>endobj
-810 0 obj<</Subtype/Link/Rect[135.5 404.2 180.7 417.2]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 645 0]>>endobj
-811 0 obj<</Subtype/Link/Rect[135.5 391.0 182.6 404.0]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 477 0]>>endobj
-812 0 obj<</Subtype/Link/Rect[135.5 377.8 208.8 390.8]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 349 0]>>endobj
-813 0 obj<</Subtype/Link/Rect[135.5 364.6 216.2 377.6]/Border[0 0 0]/Dest[1636 0 R/XYZ 0 129 0]>>endobj
-814 0 obj<</Subtype/Link/Rect[135.5 351.4 193.6 364.4]/Border[0 0 0]/Dest[1638 0 R/XYZ 0 639 0]>>endobj
-815 0 obj<</Subtype/Link/Rect[135.5 338.2 192.3 351.2]/Border[0 0 0]/Dest[1638 0 R/XYZ 0 511 0]>>endobj
-816 0 obj<</Subtype/Link/Rect[135.5 325.0 196.0 338.0]/Border[0 0 0]/Dest[1638 0 R/XYZ 0 436 0]>>endobj
-817 0 obj<</Subtype/Link/Rect[135.5 311.8 186.8 324.8]/Border[0 0 0]/Dest[1640 0 R/XYZ 0 388 0]>>endobj
-818 0 obj[786 0 R
+786 0 obj<</Subtype/Link/Rect[72.0 670.6 119.7 683.6]/Border[0 0 0]/Dest[1392 0 R/XYZ 0 734 0]>>endobj
+787 0 obj<</Subtype/Link/Rect[72.0 657.4 204.6 670.4]/Border[0 0 0]/Dest[1398 0 R/XYZ 0 734 0]>>endobj
+788 0 obj<</Subtype/Link/Rect[72.0 644.2 140.8 657.2]/Border[0 0 0]/Dest[1406 0 R/XYZ 0 734 0]>>endobj
+789 0 obj<</Subtype/Link/Rect[72.0 631.0 208.0 644.0]/Border[0 0 0]/Dest[1410 0 R/XYZ 0 734 0]>>endobj
+790 0 obj[786 0 R
787 0 R
788 0 R
-789 0 R
-790 0 R
-791 0 R
-792 0 R
-793 0 R
+789 0 R]endobj
+791 0 obj<</S/URI/URI(http://www.thursby.com/)>>endobj
+792 0 obj<</Subtype/Link/Rect[91.9 621.8 131.3 634.8]/Border[0 0 0]/A 791 0 R>>endobj
+793 0 obj<</S/URI/URI(http://www.umich.edu/~rsug/netatalk/)>>endobj
+794 0 obj<</Subtype/Link/Rect[72.0 503.0 109.3 516.0]/Border[0 0 0]/A 793 0 R>>endobj
+795 0 obj<</S/URI/URI(http://www.cs.mu.oz.au/appletalk/atalk.html)>>endobj
+796 0 obj<</Subtype/Link/Rect[130.7 503.0 154.8 516.0]/Border[0 0 0]/A 795 0 R>>endobj
+797 0 obj<</S/URI/URI(http://www.eats.com/linux_mac_win.html)>>endobj
+798 0 obj<</Subtype/Link/Rect[72.0 476.6 258.1 489.6]/Border[0 0 0]/A 797 0 R>>endobj
+799 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/warp.html)>>endobj
+800 0 obj<</Subtype/Link/Rect[325.6 367.8 544.5 380.8]/Border[0 0 0]/A 799 0 R>>endobj
+801 0 obj[792 0 R
794 0 R
-795 0 R
796 0 R
-797 0 R
798 0 R
-799 0 R
-800 0 R
-801 0 R
-802 0 R
-803 0 R
-804 0 R
+800 0 R]endobj
+802 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/)>>endobj
+803 0 obj<</Subtype/Link/Rect[72.0 661.0 319.2 674.0]/Border[0 0 0]/A 802 0 R>>endobj
+804 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/lanman.html)>>endobj
+805 0 obj<</Subtype/Link/Rect[340.6 661.0 538.7 674.0]/Border[0 0 0]/A 804 0 R>>endobj
+806 0 obj<</S/URI/URI(ftp://ftp.cdrom.com/pub/os2/network/ndis/)>>endobj
+807 0 obj<</Subtype/Link/Rect[173.1 535.7 363.5 548.7]/Border[0 0 0]/A 806 0 R>>endobj
+808 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/fix.html)>>endobj
+809 0 obj<</Subtype/Link/Rect[220.2 464.1 429.3 477.1]/Border[0 0 0]/A 808 0 R>>endobj
+810 0 obj[803 0 R
805 0 R
-806 0 R
807 0 R
-808 0 R
-809 0 R
-810 0 R
-811 0 R
-812 0 R
-813 0 R
-814 0 R
-815 0 R
-816 0 R
-817 0 R]endobj
-819 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-820 0 obj<</Subtype/Link/Rect[174.0 562.6 270.6 575.6]/Border[0 0 0]/A 819 0 R>>endobj
-821 0 obj<</S/Launch/F(#PASSWORDLEVEL)>>endobj
-822 0 obj<</Subtype/Link/Rect[72.0 300.6 153.0 311.6]/Border[0 0 0]/A 821 0 R>>endobj
-823 0 obj<</S/Launch/F(#USERNAMELEVEL)>>endobj
-824 0 obj<</Subtype/Link/Rect[72.0 289.8 147.6 300.8]/Border[0 0 0]/A 823 0 R>>endobj
-825 0 obj[820 0 R
+809 0 R]endobj
+811 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+812 0 obj<</Subtype/Link/Rect[218.7 347.8 275.0 360.8]/Border[0 0 0]/A 811 0 R>>endobj
+813 0 obj[812 0 R]endobj
+814 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
+815 0 obj<</Subtype/Link/Rect[493.6 595.0 549.8 608.0]/Border[0 0 0]/A 814 0 R>>endobj
+816 0 obj[815 0 R]endobj
+817 0 obj<</S/Launch/F(samba@samba.org)>>endobj
+818 0 obj<</Subtype/Link/Rect[311.8 650.2 398.3 663.2]/Border[0 0 0]/A 817 0 R>>endobj
+819 0 obj<</S/URI/URI(mailto:samba-technical@samba.org)>>endobj
+820 0 obj<</Subtype/Link/Rect[126.4 637.0 258.8 650.0]/Border[0 0 0]/A 819 0 R>>endobj
+821 0 obj<</S/URI/URI(http://samba.org/samba/)>>endobj
+822 0 obj<</Subtype/Link/Rect[161.5 439.0 270.3 452.0]/Border[0 0 0]/A 821 0 R>>endobj
+823 0 obj<</S/Launch/F(Diagnosis.html)>>endobj
+824 0 obj<</Subtype/Link/Rect[185.0 337.4 229.3 350.4]/Border[0 0 0]/A 823 0 R>>endobj
+825 0 obj[818 0 R
+820 0 R
822 0 R
824 0 R]endobj
-826 0 obj<</S/Launch/F(winbind.html)>>endobj
-827 0 obj<</Subtype/Link/Rect[503.4 161.0 544.6 174.0]/Border[0 0 0]/A 826 0 R>>endobj
-828 0 obj<</S/Launch/F(winbind.html)>>endobj
-829 0 obj<</Subtype/Link/Rect[72.0 147.8 115.4 160.8]/Border[0 0 0]/A 828 0 R>>endobj
+826 0 obj<</S/URI/URI(mailto:samba@samba.org)>>endobj
+827 0 obj<</Subtype/Link/Rect[164.2 180.2 250.8 193.2]/Border[0 0 0]/A 826 0 R>>endobj
+828 0 obj<</S/URI/URI(http://samba.org/samba)>>endobj
+829 0 obj<</Subtype/Link/Rect[233.0 167.0 338.7 180.0]/Border[0 0 0]/A 828 0 R>>endobj
830 0 obj[827 0 R
829 0 R]endobj
-831 0 obj<</S/Launch/F(#NTACLSUPPORT)>>endobj
-832 0 obj<</Subtype/Link/Rect[339.9 526.6 438.9 539.6]/Border[0 0 0]/A 831 0 R>>endobj
-833 0 obj[832 0 R]endobj
-834 0 obj<</S/Launch/F(#SECURITYMASK)>>endobj
-835 0 obj<</Subtype/Link/Rect[493.0 707.8 545.8 720.8]/Border[0 0 0]/A 834 0 R>>endobj
-836 0 obj<</S/Launch/F(#SECURITYMASK)>>endobj
-837 0 obj<</Subtype/Link/Rect[72.0 694.6 98.4 707.6]/Border[0 0 0]/A 836 0 R>>endobj
-838 0 obj<</S/Launch/F(#CREATEMASK)>>endobj
-839 0 obj<</Subtype/Link/Rect[356.1 615.4 428.7 628.4]/Border[0 0 0]/A 838 0 R>>endobj
-840 0 obj<</S/Launch/F(#FORCESECURITYMODE)>>endobj
-841 0 obj<</Subtype/Link/Rect[424.3 562.6 549.7 575.6]/Border[0 0 0]/A 840 0 R>>endobj
-842 0 obj<</S/Launch/F(#FORCECREATEMODE)>>endobj
-843 0 obj<</Subtype/Link/Rect[356.1 483.4 468.3 496.4]/Border[0 0 0]/A 842 0 R>>endobj
-844 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-845 0 obj<</Subtype/Link/Rect[72.0 206.2 144.6 219.2]/Border[0 0 0]/A 844 0 R>>endobj
-846 0 obj[835 0 R
-837 0 R
-839 0 R
-841 0 R
-843 0 R
-845 0 R]endobj
-847 0 obj<</S/URI/URI(http://rsync.samba.org/)>>endobj
-848 0 obj<</Subtype/Link/Rect[118.1 89.0 222.3 102.0]/Border[0 0 0]/A 847 0 R>>endobj
-849 0 obj[848 0 R]endobj
-850 0 obj<</S/Launch/F(#OBEYPAMRESTRICTIONS)>>endobj
-851 0 obj<</Subtype/Link/Rect[235.4 659.0 332.9 672.0]/Border[0 0 0]/A 850 0 R>>endobj
-852 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-853 0 obj<</Subtype/Link/Rect[338.7 579.8 449.4 592.8]/Border[0 0 0]/A 852 0 R>>endobj
-854 0 obj[851 0 R
-853 0 R]endobj
-855 0 obj<</S/URI/URI(http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp)>>endobj
-856 0 obj<</Subtype/Link/Rect[72.0 586.6 183.5 599.6]/Border[0 0 0]/A 855 0 R>>endobj
-857 0 obj<</S/Launch/F(#HOSTMSDFS)>>endobj
-858 0 obj<</Subtype/Link/Rect[345.1 507.4 417.7 520.4]/Border[0 0 0]/A 857 0 R>>endobj
-859 0 obj<</S/Launch/F(#MSDFSROOT)>>endobj
-860 0 obj<</Subtype/Link/Rect[380.8 494.2 453.4 507.2]/Border[0 0 0]/A 859 0 R>>endobj
-861 0 obj[856 0 R
-858 0 R
-860 0 R]endobj
-862 0 obj<</S/URI/URI(http://imprints.sourceforge.net)>>endobj
-863 0 obj<</Subtype/Link/Rect[143.7 544.6 280.3 557.6]/Border[0 0 0]/A 862 0 R>>endobj
-864 0 obj<</S/URI/URI(http://msdn.microsoft.com/)>>endobj
-865 0 obj<</Subtype/Link/Rect[218.6 518.2 341.1 531.2]/Border[0 0 0]/A 864 0 R>>endobj
-866 0 obj<</S/URI/URI(http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP)>>endobj
-867 0 obj<</Subtype/Link/Rect[72.0 333.4 355.9 346.4]/Border[0 0 0]/A 866 0 R>>endobj
-868 0 obj[863 0 R
-865 0 R
-867 0 R]endobj
-869 0 obj<</S/Launch/F(#WRITELIST)>>endobj
-870 0 obj<</Subtype/Link/Rect[91.9 471.4 157.9 484.4]/Border[0 0 0]/A 869 0 R>>endobj
-871 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-872 0 obj<</Subtype/Link/Rect[184.4 458.2 285.8 471.2]/Border[0 0 0]/A 871 0 R>>endobj
-873 0 obj<</S/Launch/F(#GUESTOK)>>endobj
-874 0 obj<</Subtype/Link/Rect[160.6 431.8 228.6 444.8]/Border[0 0 0]/A 873 0 R>>endobj
-875 0 obj<</S/Launch/F(#MAPTOGUEST)>>endobj
-876 0 obj<</Subtype/Link/Rect[501.3 321.9 536.7 334.9]/Border[0 0 0]/A 875 0 R>>endobj
-877 0 obj<</S/Launch/F(#MAPTOGUEST)>>endobj
-878 0 obj<</Subtype/Link/Rect[94.2 308.7 174.1 321.7]/Border[0 0 0]/A 877 0 R>>endobj
-879 0 obj[870 0 R
-872 0 R
-874 0 R
-876 0 R
-878 0 R]endobj
-880 0 obj<</S/Launch/F(#PRINTERADMIN)>>endobj
-881 0 obj<</Subtype/Link/Rect[451.3 719.6 537.1 732.6]/Border[0 0 0]/A 880 0 R>>endobj
-882 0 obj<</S/Launch/F(rpcclient.1.html)>>endobj
-883 0 obj<</Subtype/Link/Rect[233.6 99.7 379.3 112.7]/Border[0 0 0]/A 882 0 R>>endobj
-884 0 obj[881 0 R
-883 0 R]endobj
-885 0 obj<</S/Launch/F(#SHOWADDPRINTERWIZARD)>>endobj
-886 0 obj<</Subtype/Link/Rect[108.0 361.4 299.4 374.4]/Border[0 0 0]/A 885 0 R>>endobj
-887 0 obj<</S/Launch/F(#ADDPRINTERCOMMAND)>>endobj
-888 0 obj<</Subtype/Link/Rect[453.9 335.0 526.5 348.0]/Border[0 0 0]/A 887 0 R>>endobj
-889 0 obj<</S/Launch/F(#ADDPRINTERCOMMAND)>>endobj
-890 0 obj<</Subtype/Link/Rect[72.0 321.8 118.2 334.8]/Border[0 0 0]/A 889 0 R>>endobj
-891 0 obj<</S/Launch/F(#DELETEPRINTERCOMMAND)>>endobj
-892 0 obj<</Subtype/Link/Rect[189.3 216.2 334.5 229.2]/Border[0 0 0]/A 891 0 R>>endobj
-893 0 obj<</S/Launch/F(#ADDPRINTERCOMMAN)>>endobj
-894 0 obj<</Subtype/Link/Rect[200.6 189.8 326.0 202.8]/Border[0 0 0]/A 893 0 R>>endobj
-895 0 obj[886 0 R
-888 0 R
-890 0 R
-892 0 R
-894 0 R]endobj
-896 0 obj<</S/Launch/F(#ENUMPORTSCOMMAND)>>endobj
-897 0 obj<</Subtype/Link/Rect[451.4 149.0 510.8 162.0]/Border[0 0 0]/A 896 0 R>>endobj
-898 0 obj<</S/Launch/F(#ENUMPORTSCOMMAND)>>endobj
-899 0 obj<</Subtype/Link/Rect[72.0 135.8 118.2 148.8]/Border[0 0 0]/A 898 0 R>>endobj
-900 0 obj[897 0 R
-899 0 R]endobj
-901 0 obj<</S/URI/URI(http://imprints.sourceforge.net/)>>endobj
-902 0 obj<</Subtype/Link/Rect[297.8 674.2 437.4 687.2]/Border[0 0 0]/A 901 0 R>>endobj
-903 0 obj[902 0 R]endobj
-904 0 obj<</S/Launch/F(#SECURITY)>>endobj
-905 0 obj<</Subtype/Link/Rect[72.0 615.0 115.2 626.0]/Border[0 0 0]/A 904 0 R>>endobj
-906 0 obj<</S/Launch/F(DOMAIN_MEMBER.html)>>endobj
-907 0 obj<</Subtype/Link/Rect[430.0 589.0 554.1 602.0]/Border[0 0 0]/A 906 0 R>>endobj
-908 0 obj<</S/Launch/F(ADS-HOWTO.html)>>endobj
-909 0 obj<</Subtype/Link/Rect[223.0 562.6 317.8 575.6]/Border[0 0 0]/A 908 0 R>>endobj
-910 0 obj[905 0 R
-907 0 R
-909 0 R]endobj
-911 0 obj<</S/URI/URI(mailto:jtrostel@snapserver.com)>>endobj
-912 0 obj<</Subtype/Link/Rect[197.9 304.6 310.1 317.6]/Border[0 0 0]/A 911 0 R>>endobj
-913 0 obj[912 0 R]endobj
-914 0 obj<</S/URI/URI(http://samba.org/)>>endobj
-915 0 obj<</Subtype/Link/Rect[151.1 438.2 262.3 451.2]/Border[0 0 0]/A 914 0 R>>endobj
-916 0 obj[915 0 R]endobj
-917 0 obj<</S/Launch/F(winbindd.8.html)>>endobj
-918 0 obj<</Subtype/Link/Rect[306.3 235.8 363.4 248.8]/Border[0 0 0]/A 917 0 R>>endobj
-919 0 obj<</S/Launch/F(#WINBINDSEPARATOR)>>endobj
-920 0 obj<</Subtype/Link/Rect[99.0 165.8 190.8 176.8]/Border[0 0 0]/A 919 0 R>>endobj
-921 0 obj<</S/Launch/F(#WINBINDUID)>>endobj
-922 0 obj<</Subtype/Link/Rect[99.0 144.2 158.4 155.2]/Border[0 0 0]/A 921 0 R>>endobj
-923 0 obj<</S/Launch/F(#WINBINDGID)>>endobj
-924 0 obj<</Subtype/Link/Rect[99.0 122.6 158.4 133.6]/Border[0 0 0]/A 923 0 R>>endobj
-925 0 obj<</S/Launch/F(#WINBINDENUMUSERS)>>endobj
-926 0 obj<</Subtype/Link/Rect[99.0 101.0 196.2 112.0]/Border[0 0 0]/A 925 0 R>>endobj
-927 0 obj<</S/Launch/F(#WINBINDENUMGROUP)>>endobj
-928 0 obj<</Subtype/Link/Rect[99.0 90.2 201.6 101.2]/Border[0 0 0]/A 927 0 R>>endobj
-929 0 obj<</S/Launch/F(#TEMPLATEHOMEDIR)>>endobj
-930 0 obj<</Subtype/Link/Rect[99.0 68.6 185.4 79.6]/Border[0 0 0]/A 929 0 R>>endobj
-931 0 obj<</S/Launch/F(#TEMPLATESHELL)>>endobj
-932 0 obj<</Subtype/Link/Rect[99.0 57.8 174.6 68.8]/Border[0 0 0]/A 931 0 R>>endobj
-933 0 obj[918 0 R
-920 0 R
-922 0 R
-924 0 R
-926 0 R
-928 0 R
-930 0 R
-932 0 R]endobj
-934 0 obj<</S/URI/URI(http://www.openldap.org/)>>endobj
-935 0 obj<</Subtype/Link/Rect[169.5 560.2 285.9 573.2]/Border[0 0 0]/A 934 0 R>>endobj
-936 0 obj<</S/URI/URI(http://iplanet.netscape.com/directory)>>endobj
-937 0 obj<</Subtype/Link/Rect[223.9 547.0 387.9 560.0]/Border[0 0 0]/A 936 0 R>>endobj
-938 0 obj<</S/URI/URI(http://www.ora.com/)>>endobj
-939 0 obj<</Subtype/Link/Rect[112.6 520.6 202.0 533.6]/Border[0 0 0]/A 938 0 R>>endobj
-940 0 obj<</S/URI/URI(http://www.unav.es/cti/ldap-smb/ldap-smb-2_2-howto.html)>>endobj
-941 0 obj<</Subtype/Link/Rect[125.1 454.6 267.5 467.6]/Border[0 0 0]/A 940 0 R>>endobj
-942 0 obj<</S/URI/URI(http://samba.idealx.org/)>>endobj
-943 0 obj<</Subtype/Link/Rect[243.7 441.4 287.3 454.4]/Border[0 0 0]/A 942 0 R>>endobj
-944 0 obj<</S/Launch/F(#ENCRYPTPASSWORDS)>>endobj
-945 0 obj<</Subtype/Link/Rect[212.8 366.2 332.5 379.2]/Border[0 0 0]/A 944 0 R>>endobj
-946 0 obj[935 0 R
-937 0 R
-939 0 R
-941 0 R
-943 0 R
-945 0 R]endobj
-947 0 obj<</S/URI/URI(http://www.padl.com/)>>endobj
-948 0 obj<</Subtype/Link/Rect[284.3 602.2 380.9 615.2]/Border[0 0 0]/A 947 0 R>>endobj
-949 0 obj<</S/Launch/F(samba-patches@samba.org)>>endobj
-950 0 obj<</Subtype/Link/Rect[332.3 487.4 458.0 500.4]/Border[0 0 0]/A 949 0 R>>endobj
-951 0 obj<</S/Launch/F(jerry@samba.org)>>endobj
-952 0 obj<</Subtype/Link/Rect[476.6 487.4 555.8 500.4]/Border[0 0 0]/A 951 0 R>>endobj
-953 0 obj<</S/Launch/F(jerry@samba.org)>>endobj
-954 0 obj<</Subtype/Link/Rect[271.2 237.0 350.4 250.0]/Border[0 0 0]/A 953 0 R>>endobj
-955 0 obj[948 0 R
-950 0 R
-952 0 R
-954 0 R]endobj
-956 0 obj<</S/Launch/F(#LDAPSSL)>>endobj
-957 0 obj<</Subtype/Link/Rect[108.0 61.4 141.3 74.4]/Border[0 0 0]/A 956 0 R>>endobj
-958 0 obj[957 0 R]endobj
-959 0 obj<</S/Launch/F(#LDAPSERVER)>>endobj
-960 0 obj<</Subtype/Link/Rect[108.0 721.0 156.6 734.0]/Border[0 0 0]/A 959 0 R>>endobj
-961 0 obj<</S/Launch/F(#LDAPADMINDN)>>endobj
-962 0 obj<</Subtype/Link/Rect[108.0 707.8 170.9 720.8]/Border[0 0 0]/A 961 0 R>>endobj
-963 0 obj<</S/Launch/F(#LDAPSUFFIX)>>endobj
-964 0 obj<</Subtype/Link/Rect[108.0 694.6 155.4 707.6]/Border[0 0 0]/A 963 0 R>>endobj
-965 0 obj<</S/Launch/F(#LDAPFILTER)>>endobj
-966 0 obj<</Subtype/Link/Rect[108.0 681.4 151.1 694.4]/Border[0 0 0]/A 965 0 R>>endobj
-967 0 obj<</S/Launch/F(#LDAPPORT)>>endobj
-968 0 obj<</Subtype/Link/Rect[108.0 668.2 147.4 681.2]/Border[0 0 0]/A 967 0 R>>endobj
-969 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-970 0 obj<</Subtype/Link/Rect[186.9 641.8 243.1 654.8]/Border[0 0 0]/A 969 0 R>>endobj
-971 0 obj[960 0 R
-962 0 R
-964 0 R
-966 0 R
-968 0 R
-970 0 R]endobj
-972 0 obj<</S/Launch/F(ENCRYPTION.html)>>endobj
-973 0 obj<</Subtype/Link/Rect[72.0 566.6 176.8 579.6]/Border[0 0 0]/A 972 0 R>>endobj
-974 0 obj[973 0 R]endobj
-975 0 obj<</S/Launch/F(Samba-PDC-HOWTO.html)>>endobj
-976 0 obj<</Subtype/Link/Rect[72.0 523.0 176.7 536.0]/Border[0 0 0]/A 975 0 R>>endobj
-977 0 obj[976 0 R]endobj
-978 0 obj<</S/URI/URI(mailto:jerry@samba.org)>>endobj
-979 0 obj<</Subtype/Link/Rect[302.7 445.4 381.8 458.4]/Border[0 0 0]/A 978 0 R>>endobj
-980 0 obj[979 0 R]endobj
-981 0 obj<</S/URI/URI(http://samba.org/samba/cvs.html)>>endobj
-982 0 obj<</Subtype/Link/Rect[354.3 573.4 500.7 586.4]/Border[0 0 0]/A 981 0 R>>endobj
-983 0 obj<</S/URI/URI(http://samba.org/cgi-bin/cvsweb)>>endobj
-984 0 obj<</Subtype/Link/Rect[135.9 373.8 283.2 386.8]/Border[0 0 0]/A 983 0 R>>endobj
-985 0 obj<</S/URI/URI(http://www.cyclic.com/)>>endobj
-986 0 obj<</Subtype/Link/Rect[391.6 262.6 498.2 275.6]/Border[0 0 0]/A 985 0 R>>endobj
-987 0 obj[982 0 R
-984 0 R
-986 0 R]endobj
-988 0 obj<</Subtype/Link/Rect[85.8 670.6 136.2 683.6]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 734 0]>>endobj
-989 0 obj<</Subtype/Link/Rect[130.0 657.4 162.1 670.4]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 655 0]>>endobj
-990 0 obj<</Subtype/Link/Rect[130.0 644.2 177.7 657.2]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 408 0]>>endobj
-991 0 obj<</Subtype/Link/Rect[130.0 631.0 158.4 644.0]/Border[0 0 0]/Dest[1644 0 R/XYZ 0 293 0]>>endobj
-992 0 obj<</Subtype/Link/Rect[130.0 617.8 260.5 630.8]/Border[0 0 0]/Dest[1646 0 R/XYZ 0 228 0]>>endobj
-993 0 obj<</Subtype/Link/Rect[85.8 604.6 221.1 617.6]/Border[0 0 0]/Dest[1648 0 R/XYZ 0 734 0]>>endobj
-994 0 obj<</Subtype/Link/Rect[130.0 591.4 216.2 604.4]/Border[0 0 0]/Dest[1648 0 R/XYZ 0 668 0]>>endobj
-995 0 obj<</Subtype/Link/Rect[130.0 578.2 181.3 591.2]/Border[0 0 0]/Dest[1648 0 R/XYZ 0 461 0]>>endobj
-996 0 obj<</Subtype/Link/Rect[174.2 565.0 533.6 578.0]/Border[0 0 0]/Dest[1648 0 R/XYZ 0 427 0]>>endobj
-997 0 obj<</Subtype/Link/Rect[174.2 551.8 536.9 564.8]/Border[0 0 0]/Dest[1650 0 R/XYZ 0 734 0]>>endobj
-998 0 obj<</Subtype/Link/Rect[174.2 538.6 490.2 551.6]/Border[0 0 0]/Dest[1650 0 R/XYZ 0 523 0]>>endobj
-999 0 obj<</Subtype/Link/Rect[174.2 525.4 459.3 538.4]/Border[0 0 0]/Dest[1650 0 R/XYZ 0 408 0]>>endobj
-1000 0 obj<</Subtype/Link/Rect[130.0 512.2 245.8 525.2]/Border[0 0 0]/Dest[1650 0 R/XYZ 0 151 0]>>endobj
-1001 0 obj<</Subtype/Link/Rect[174.2 499.0 351.5 512.0]/Border[0 0 0]/Dest[1650 0 R/XYZ 0 118 0]>>endobj
-1002 0 obj<</Subtype/Link/Rect[174.2 485.8 351.2 498.8]/Border[0 0 0]/Dest[1652 0 R/XYZ 0 626 0]>>endobj
-1003 0 obj<</Subtype/Link/Rect[174.2 472.6 332.5 485.6]/Border[0 0 0]/Dest[1652 0 R/XYZ 0 475 0]>>endobj
-1004 0 obj<</Subtype/Link/Rect[174.2 459.4 301.4 472.4]/Border[0 0 0]/Dest[1652 0 R/XYZ 0 377 0]>>endobj
-1005 0 obj<</Subtype/Link/Rect[130.0 446.2 205.6 459.2]/Border[0 0 0]/Dest[1652 0 R/XYZ 0 292 0]>>endobj
-1006 0 obj<</Subtype/Link/Rect[130.0 433.0 265.9 446.0]/Border[0 0 0]/Dest[1654 0 R/XYZ 0 718 0]>>endobj
-1007 0 obj<</Subtype/Link/Rect[85.8 419.8 157.2 432.8]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 734 0]>>endobj
-1008 0 obj<</Subtype/Link/Rect[130.0 406.6 187.8 419.6]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 696 0]>>endobj
-1009 0 obj<</Subtype/Link/Rect[130.0 393.4 188.7 406.4]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 423 0]>>endobj
-1010 0 obj<</Subtype/Link/Rect[130.0 380.2 189.9 393.2]/Border[0 0 0]/Dest[1656 0 R/XYZ 0 282 0]>>endobj
-1011 0 obj<</Subtype/Link/Rect[130.0 367.0 198.4 380.0]/Border[0 0 0]/Dest[1658 0 R/XYZ 0 613 0]>>endobj
-1012 0 obj<</Subtype/Link/Rect[130.0 353.8 269.0 366.8]/Border[0 0 0]/Dest[1658 0 R/XYZ 0 260 0]>>endobj
-1013 0 obj<</Subtype/Link/Rect[130.0 340.6 167.6 353.6]/Border[0 0 0]/Dest[1658 0 R/XYZ 0 159 0]>>endobj
-1014 0 obj<</Subtype/Link/Rect[85.8 327.4 224.5 340.4]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 734 0]>>endobj
-1015 0 obj<</Subtype/Link/Rect[130.0 314.2 187.8 327.2]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 696 0]>>endobj
-1016 0 obj<</Subtype/Link/Rect[130.0 301.0 188.4 314.0]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 529 0]>>endobj
-1017 0 obj<</Subtype/Link/Rect[130.0 287.8 155.4 300.8]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 199 0]>>endobj
-1018 0 obj<</Subtype/Link/Rect[174.2 274.6 203.6 287.6]/Border[0 0 0]/Dest[1660 0 R/XYZ 0 165 0]>>endobj
-1019 0 obj<</Subtype/Link/Rect[174.2 261.4 203.6 274.4]/Border[0 0 0]/Dest[1662 0 R/XYZ 0 734 0]>>endobj
-1020 0 obj<</Subtype/Link/Rect[174.2 248.2 203.6 261.2]/Border[0 0 0]/Dest[1662 0 R/XYZ 0 530 0]>>endobj
-1021 0 obj<</Subtype/Link/Rect[174.2 235.0 203.6 248.0]/Border[0 0 0]/Dest[1664 0 R/XYZ 0 626 0]>>endobj
-1022 0 obj<</Subtype/Link/Rect[174.2 221.8 203.6 234.8]/Border[0 0 0]/Dest[1664 0 R/XYZ 0 475 0]>>endobj
-1023 0 obj<</Subtype/Link/Rect[174.2 208.6 203.6 221.6]/Border[0 0 0]/Dest[1664 0 R/XYZ 0 351 0]>>endobj
-1024 0 obj<</Subtype/Link/Rect[174.2 195.4 203.6 208.4]/Border[0 0 0]/Dest[1666 0 R/XYZ 0 734 0]>>endobj
-1025 0 obj<</Subtype/Link/Rect[174.2 182.2 203.6 195.2]/Border[0 0 0]/Dest[1666 0 R/XYZ 0 371 0]>>endobj
-1026 0 obj<</Subtype/Link/Rect[174.2 169.0 203.6 182.0]/Border[0 0 0]/Dest[1668 0 R/XYZ 0 705 0]>>endobj
-1027 0 obj<</Subtype/Link/Rect[179.8 155.8 214.6 168.8]/Border[0 0 0]/Dest[1668 0 R/XYZ 0 515 0]>>endobj
-1028 0 obj<</Subtype/Link/Rect[179.8 142.6 214.6 155.6]/Border[0 0 0]/Dest[1668 0 R/XYZ 0 377 0]>>endobj
-1029 0 obj<</Subtype/Link/Rect[130.0 129.4 227.5 142.4]/Border[0 0 0]/Dest[1668 0 R/XYZ 0 239 0]>>endobj
-1030 0 obj[988 0 R
-989 0 R
-990 0 R
-991 0 R
-992 0 R
-993 0 R
-994 0 R
-995 0 R
-996 0 R
-997 0 R
-998 0 R
-999 0 R
-1000 0 R
-1001 0 R
-1002 0 R
-1003 0 R
-1004 0 R
-1005 0 R
-1006 0 R
-1007 0 R
-1008 0 R
-1009 0 R
-1010 0 R
-1011 0 R
-1012 0 R
-1013 0 R
-1014 0 R
-1015 0 R
-1016 0 R
-1017 0 R
-1018 0 R
-1019 0 R
-1020 0 R
-1021 0 R
-1022 0 R
-1023 0 R
-1024 0 R
-1025 0 R
-1026 0 R
-1027 0 R
-1028 0 R
-1029 0 R]endobj
-1031 0 obj<</S/URI/URI(http://www.thursby.com/)>>endobj
-1032 0 obj<</Subtype/Link/Rect[91.9 621.8 131.3 634.8]/Border[0 0 0]/A 1031 0 R>>endobj
-1033 0 obj<</S/URI/URI(http://www.umich.edu/~rsug/netatalk/)>>endobj
-1034 0 obj<</Subtype/Link/Rect[72.0 503.0 109.3 516.0]/Border[0 0 0]/A 1033 0 R>>endobj
-1035 0 obj<</S/URI/URI(http://www.cs.mu.oz.au/appletalk/atalk.html)>>endobj
-1036 0 obj<</Subtype/Link/Rect[130.7 503.0 154.8 516.0]/Border[0 0 0]/A 1035 0 R>>endobj
-1037 0 obj<</S/URI/URI(http://www.eats.com/linux_mac_win.html)>>endobj
-1038 0 obj<</Subtype/Link/Rect[72.0 476.6 258.1 489.6]/Border[0 0 0]/A 1037 0 R>>endobj
-1039 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/warp.html)>>endobj
-1040 0 obj<</Subtype/Link/Rect[325.6 367.8 544.5 380.8]/Border[0 0 0]/A 1039 0 R>>endobj
-1041 0 obj[1032 0 R
-1034 0 R
-1036 0 R
-1038 0 R
-1040 0 R]endobj
-1042 0 obj<</S/URI/URI(ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/)>>endobj
-1043 0 obj<</Subtype/Link/Rect[72.0 661.0 319.2 674.0]/Border[0 0 0]/A 1042 0 R>>endobj
-1044 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/lanman.html)>>endobj
-1045 0 obj<</Subtype/Link/Rect[340.6 661.0 538.7 674.0]/Border[0 0 0]/A 1044 0 R>>endobj
-1046 0 obj<</S/URI/URI(ftp://ftp.cdrom.com/pub/os2/network/ndis/)>>endobj
-1047 0 obj<</Subtype/Link/Rect[173.1 538.6 363.5 551.6]/Border[0 0 0]/A 1046 0 R>>endobj
-1048 0 obj<</S/URI/URI(http://carol.wins.uva.nl/~leeuw/samba/fix.html)>>endobj
-1049 0 obj<</Subtype/Link/Rect[220.2 450.2 429.3 463.2]/Border[0 0 0]/A 1048 0 R>>endobj
-1050 0 obj[1043 0 R
-1045 0 R
-1047 0 R
-1049 0 R]endobj
-1051 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-1052 0 obj<</Subtype/Link/Rect[218.7 321.4 275.0 334.4]/Border[0 0 0]/A 1051 0 R>>endobj
-1053 0 obj[1052 0 R]endobj
-1054 0 obj<</S/Launch/F(smb.conf.5.html)>>endobj
-1055 0 obj<</Subtype/Link/Rect[493.6 579.8 549.8 592.8]/Border[0 0 0]/A 1054 0 R>>endobj
-1056 0 obj[1055 0 R]endobj
-1057 0 obj<</S/Launch/F(samba@samba.org)>>endobj
-1058 0 obj<</Subtype/Link/Rect[311.8 650.2 398.3 663.2]/Border[0 0 0]/A 1057 0 R>>endobj
-1059 0 obj<</S/URI/URI(mailto:samba-technical@samba.org)>>endobj
-1060 0 obj<</Subtype/Link/Rect[126.4 637.0 258.8 650.0]/Border[0 0 0]/A 1059 0 R>>endobj
-1061 0 obj<</S/URI/URI(http://samba.org/samba/)>>endobj
-1062 0 obj<</Subtype/Link/Rect[161.5 439.0 270.3 452.0]/Border[0 0 0]/A 1061 0 R>>endobj
-1063 0 obj<</S/Launch/F(Diagnosis.html)>>endobj
-1064 0 obj<</Subtype/Link/Rect[185.0 337.4 229.3 350.4]/Border[0 0 0]/A 1063 0 R>>endobj
-1065 0 obj[1058 0 R
-1060 0 R
-1062 0 R
-1064 0 R]endobj
-1066 0 obj<</S/URI/URI(mailto:samba@samba.org)>>endobj
-1067 0 obj<</Subtype/Link/Rect[164.2 180.2 250.8 193.2]/Border[0 0 0]/A 1066 0 R>>endobj
-1068 0 obj<</S/URI/URI(http://samba.org/samba)>>endobj
-1069 0 obj<</Subtype/Link/Rect[233.0 167.0 338.7 180.0]/Border[0 0 0]/A 1068 0 R>>endobj
-1070 0 obj[1067 0 R
-1069 0 R]endobj
-1071 0 obj<</Dests 1072 0 R>>endobj
-1072 0 obj<</Kids[1073 0 R]>>endobj
-1073 0 obj<</Limits[(10)(winbind)]/Names[(10)1074 0 R(11)1075 0 R(16)1076 0 R(17)1077 0 R(3)1078 0 R(31)1079 0 R(4)1080 0 R(ads)1081 0 R(aen1005)1082 0 R(aen1013)1083 0 R(aen1020)1084 0 R(aen1056)1085 0 R(aen1069)1086 0 R(aen1072)1087 0 R(aen1082)1088 0 R(aen1118)1089 0 R(aen1122)1090 0 R(aen1130)1091 0 R(aen1133)1092 0 R(aen1136)1093 0 R(aen1139)1094 0 R(aen1143)1095 0 R(aen1160)1096 0 R(aen1178)1097 0 R(aen1184)1098 0 R(aen1193)1099 0 R(aen1205)1100 0 R(aen1215)1101 0 R(aen1219)1102 0 R(aen1231)1103 0 R(aen1236)1104 0 R(aen1239)1105 0 R(aen1261)1106 0 R(aen128)1107 0 R(aen1325)1108 0 R(aen1330)1109 0 R(aen1346)1110 0 R(aen1348)1111 0 R(aen1362)1112 0 R(aen1384)1113 0 R(aen1400)1114 0 R(aen1416)1115 0 R(aen1427)1116 0 R(aen1435)1117 0 R(aen144)1118 0 R(aen1447)1119 0 R(aen1459)1120 0 R(aen1464)1121 0 R(aen1472)1122 0 R(aen1477)1123 0 R(aen1480)1124 0 R(aen1492)1125 0 R(aen1502)1126 0 R(aen153)1127 0 R(aen1530)1128 0 R(aen1538)1129 0 R(aen1555)1130 0 R(aen1562)1131 0 R(aen1567)1132 0 R(aen1572)1133 0 R(aen1593)1134 0 R(aen1602)1135 0 R(aen1613)1136 0 R(aen1633)1137 0 R(aen1648)1138 0 R(aen1662)1139 0 R(aen1669)1140 0 R(aen169)1141 0 R(aen1691)1142 0 R(aen1755)1143 0 R(aen1776)1144 0 R(aen18)1145 0 R(aen1820)1146 0 R(aen1827)1147 0 R(aen183)1148 0 R(aen1847)1149 0 R(aen188)1150 0 R(aen1882)1151 0 R(aen1908)1152 0 R(aen192)1153 0 R(aen1930)1154 0 R(aen1938)1155 0 R(aen195)1156 0 R(aen1973)1157 0 R(aen1989)1158 0 R(aen20)1159 0 R(aen2000)1160 0 R(aen2030)1161 0 R(aen2038)1162 0 R(aen204)1163 0 R(aen2042)1164 0 R(aen2052)1165 0 R(aen2055)1166 0 R(aen2059)1167 0 R(aen2081)1168 0 R(aen2083)1169 0 R(aen209)1170 0 R(aen2099)1171 0 R(aen2108)1172 0 R(aen2116)1173 0 R(aen2144)1174 0 R(aen2155)1175 0 R(aen2167)1176 0 R(aen2170)1177 0 R(aen2173)1178 0 R(aen218)1179 0 R(aen2186)1180 0 R(aen2197)1181 0 R(aen2249)1182 0 R(aen2253)1183 0 R(aen2266)1184 0 R(aen2273)1185 0 R(aen2277)1186 0 R(aen228)1187 0 R(aen2282)1188 0 R(aen2286)1189 0 R(aen2302)1190 0 R(aen2310)1191 0 R(aen2314)1192 0 R(aen2317)1193 0 R(aen232)1194 0 R(aen2324)1195 0 R(aen2337)1196 0 R(aen2351)1197 0 R(aen2362)1198 0 R(aen2381)1199 0 R(aen241)1200 0 R(aen2414)1201 0 R(aen2430)1202 0 R(aen2441)1203 0 R(aen2477)1204 0 R(aen2479)1205 0 R(aen248)1206 0 R(aen2496)1207 0 R(aen25)1208 0 R(aen2503)1209 0 R(aen2509)1210 0 R(aen2526)1211 0 R(aen253)1212 0 R(aen2559)1213 0 R(aen2566)1214 0 R(aen2576)1215 0 R(aen2590)1216 0 R(aen2596)1217 0 R(aen2611)1218 0 R(aen2616)1219 0 R(aen2635)1220 0 R(aen2641)1221 0 R(aen2664)1222 0 R(aen2684)1223 0 R(aen2713)1224 0 R(aen2718)1225 0 R(aen2730)1226 0 R(aen2732)1227 0 R(aen2749)1228 0 R(aen2777)1229 0 R(aen2782)1230 0 R(aen2802)1231 0 R(aen2872)1232 0 R(aen288)1233 0 R(aen2880)1234 0 R(aen2891)1235 0 R(aen2896)1236 0 R(aen2899)1237 0 R(aen2904)1238 0 R(aen2982)1239 0 R(aen2988)1240 0 R(aen2990)1241 0 R(aen2998)1242 0 R(aen3004)1243 0 R(aen3008)1244 0 R(aen3015)1245 0 R(aen3020)1246 0 R(aen3025)1247 0 R(aen3029)1248 0 R(aen3034)1249 0 R(aen3037)1250 0 R(aen3040)1251 0 R(aen3045)1252 0 R(aen3049)1253 0 R(aen3056)1254 0 R(aen3061)1255 0 R(aen3065)1256 0 R(aen3068)1257 0 R(aen307)1258 0 R(aen3100)1259 0 R(aen3106)1260 0 R(aen3115)1261 0 R(aen3121)1262 0 R(aen3125)1263 0 R(aen3154)1264 0 R(aen3175)1265 0 R(aen3184)1266 0 R(aen3186)1267 0 R(aen3201)1268 0 R(aen3210)1269 0 R(aen3214)1270 0 R(aen3224)1271 0 R(aen3226)1272 0 R(aen3231)1273 0 R(aen3236)1274 0 R(aen3240)1275 0 R(aen3245)1276 0 R(aen325)1277 0 R(aen3261)1278 0 R(aen3285)1279 0 R(aen3295)1280 0 R(aen3301)1281 0 R(aen3318)1282 0 R(aen3328)1283 0 R(aen3331)1284 0 R(aen335)1285 0 R(aen3354)1286 0 R(aen3359)1287 0 R(aen3369)1288 0 R(aen3371)1289 0 R(aen3377)1290 0 R(aen3383)1291 0 R(aen3398)1292 0 R(aen3403)1293 0 R(aen3409)1294 0 R(aen3417)1295 0 R(aen344)1296 0 R(aen3443)1297 0 R(aen3460)1298 0 R(aen3468)1299 0 R(aen3474)1300 0 R(aen3479)1301 0 R(aen35)1302 0 R(aen362)1303 0 R(aen365)1304 0 R(aen377)1305 0 R(aen392)1306 0 R(aen4)1307 0 R(aen400)1308 0 R(aen414)1309 0 R(aen419)1310 0 R(aen430)1311 0 R(aen436)1312 0 R(aen472)1313 0 R(aen477)1314 0 R(aen496)1315 0 R(aen503)1316 0 R(aen512)1317 0 R(aen544)1318 0 R(aen546)1319 0 R(aen566)1320 0 R(aen572)1321 0 R(aen611)1322 0 R(aen63)1323 0 R(aen654)1324 0 R(aen67)1325 0 R(aen673)1326 0 R(aen714)1327 0 R(aen723)1328 0 R(aen738)1329 0 R(aen786)1330 0 R(aen8)1331 0 R(aen81)1332 0 R(aen830)1333 0 R(aen89)1334 0 R(aen944)1335 0 R(aen970)1336 0 R(aen989)1337 0 R(aen99)1338 0 R(aen997)1339 0 R(browsing-quick)1340 0 R(bugreport)1341 0 R(cvs-access)1342 0 R(diagnosis)1343 0 R(domain-security)1344 0 R(groupmapping)1345 0 R(improved-browsing)1346 0 R(install)1347 0 R(integrate-ms-networks)1348 0 R(msdfs)1349 0 R(oplocks)1350 0 R(other-clients)1351 0 R(pam)1352 0 R(pdb-mysql)1353 0 R(pdb-xml)1354 0 R(portability)1355 0 R(printing)1356 0 R(pwencrypt)1357 0 R(samba-bdc)1358 0 R(samba-howto-collection)1359 0 R(samba-howto-collection.html)1360 0 R(samba-ldap-howto)1361 0 R(samba-pdc)1362 0 R(securitylevels)1363 0 R(speed)1364 0 R(unix-permissions)1365 0 R(winbind)1366 0 R]>>endobj
-1074 0 obj<</D[1448 0 R/XYZ 0 734 0]>>endobj
-1075 0 obj<</D[1450 0 R/XYZ 0 734 0]>>endobj
-1076 0 obj<</D[1504 0 R/XYZ 0 734 0]>>endobj
-1077 0 obj<</D[1506 0 R/XYZ 0 734 0]>>endobj
-1078 0 obj<</D[1394 0 R/XYZ 0 734 0]>>endobj
-1079 0 obj<</D[1642 0 R/XYZ 0 734 0]>>endobj
-1080 0 obj<</D[1396 0 R/XYZ 0 734 0]>>endobj
-1081 0 obj<</D[1492 0 R/XYZ 0 734 0]>>endobj
-1082 0 obj<</D[1474 0 R/XYZ 0 366 0]>>endobj
-1083 0 obj<</D[1474 0 R/XYZ 0 142 0]>>endobj
-1084 0 obj<</D[1476 0 R/XYZ 0 678 0]>>endobj
-1085 0 obj<</D[1478 0 R/XYZ 0 362 0]>>endobj
-1086 0 obj<</D[1480 0 R/XYZ 0 451 0]>>endobj
-1087 0 obj<</D[1480 0 R/XYZ 0 370 0]>>endobj
-1088 0 obj<</D[1482 0 R/XYZ 0 718 0]>>endobj
-1089 0 obj<</D[1486 0 R/XYZ 0 672 0]>>endobj
-1090 0 obj<</D[1486 0 R/XYZ 0 597 0]>>endobj
-1091 0 obj<</D[1486 0 R/XYZ 0 225 0]>>endobj
-1092 0 obj<</D[1488 0 R/XYZ 0 734 0]>>endobj
-1093 0 obj<</D[1488 0 R/XYZ 0 609 0]>>endobj
-1094 0 obj<</D[1488 0 R/XYZ 0 524 0]>>endobj
-1095 0 obj<</D[1488 0 R/XYZ 0 383 0]>>endobj
-1096 0 obj<</D[1490 0 R/XYZ 0 620 0]>>endobj
-1097 0 obj<</D[1492 0 R/XYZ 0 524 0]>>endobj
-1098 0 obj<</D[1492 0 R/XYZ 0 417 0]>>endobj
-1099 0 obj<</D[1492 0 R/XYZ 0 241 0]>>endobj
-1100 0 obj<</D[1494 0 R/XYZ 0 556 0]>>endobj
-1101 0 obj<</D[1494 0 R/XYZ 0 240 0]>>endobj
-1102 0 obj<</D[1494 0 R/XYZ 0 151 0]>>endobj
-1103 0 obj<</D[1496 0 R/XYZ 0 692 0]>>endobj
-1104 0 obj<</D[1496 0 R/XYZ 0 603 0]>>endobj
-1105 0 obj<</D[1496 0 R/XYZ 0 528 0]>>endobj
-1106 0 obj<</D[1498 0 R/XYZ 0 696 0]>>endobj
-1107 0 obj<</D[1404 0 R/XYZ 0 247 0]>>endobj
-1108 0 obj<</D[1500 0 R/XYZ 0 362 0]>>endobj
-1109 0 obj<</D[1500 0 R/XYZ 0 155 0]>>endobj
-1110 0 obj<</D[1502 0 R/XYZ 0 337 0]>>endobj
-1111 0 obj<</D[1504 0 R/XYZ 0 696 0]>>endobj
-1112 0 obj<</D[1512 0 R/XYZ 0 672 0]>>endobj
-1113 0 obj<</D[1512 0 R/XYZ 0 439 0]>>endobj
-1114 0 obj<</D[1512 0 R/XYZ 0 311 0]>>endobj
-1115 0 obj<</D[1514 0 R/XYZ 0 441 0]>>endobj
-1116 0 obj<</D[1514 0 R/XYZ 0 303 0]>>endobj
-1117 0 obj<</D[1514 0 R/XYZ 0 157 0]>>endobj
-1118 0 obj<</D[1406 0 R/XYZ 0 665 0]>>endobj
-1119 0 obj<</D[1516 0 R/XYZ 0 339 0]>>endobj
-1120 0 obj<</D[1518 0 R/XYZ 0 266 0]>>endobj
-1121 0 obj<</D[1520 0 R/XYZ 0 734 0]>>endobj
-1122 0 obj<</D[1522 0 R/XYZ 0 459 0]>>endobj
-1123 0 obj<</D[1522 0 R/XYZ 0 361 0]>>endobj
-1124 0 obj<</D[1522 0 R/XYZ 0 224 0]>>endobj
-1125 0 obj<</D[1524 0 R/XYZ 0 670 0]>>endobj
-1126 0 obj<</D[1524 0 R/XYZ 0 126 0]>>endobj
-1127 0 obj<</D[1406 0 R/XYZ 0 498 0]>>endobj
-1128 0 obj<</D[1528 0 R/XYZ 0 734 0]>>endobj
-1129 0 obj<</D[1528 0 R/XYZ 0 484 0]>>endobj
-1130 0 obj<</D[1528 0 R/XYZ 0 132 0]>>endobj
-1131 0 obj<</D[1530 0 R/XYZ 0 523 0]>>endobj
-1132 0 obj<</D[1530 0 R/XYZ 0 377 0]>>endobj
-1133 0 obj<</D[1530 0 R/XYZ 0 263 0]>>endobj
-1134 0 obj<</D[1532 0 R/XYZ 0 672 0]>>endobj
-1135 0 obj<</D[1532 0 R/XYZ 0 497 0]>>endobj
-1136 0 obj<</D[1532 0 R/XYZ 0 330 0]>>endobj
-1137 0 obj<</D[1534 0 R/XYZ 0 665 0]>>endobj
-1138 0 obj<</D[1534 0 R/XYZ 0 432 0]>>endobj
-1139 0 obj<</D[1534 0 R/XYZ 0 189 0]>>endobj
-1140 0 obj<</D[1536 0 R/XYZ 0 692 0]>>endobj
-1141 0 obj<</D[1406 0 R/XYZ 0 330 0]>>endobj
-1142 0 obj<</D[1536 0 R/XYZ 0 260 0]>>endobj
-1143 0 obj<</D[1540 0 R/XYZ 0 599 0]>>endobj
-1144 0 obj<</D[1542 0 R/XYZ 0 672 0]>>endobj
-1145 0 obj<</D[1392 0 R/XYZ 0 258 0]>>endobj
-1146 0 obj<</D[1544 0 R/XYZ 0 148 0]>>endobj
-1147 0 obj<</D[1546 0 R/XYZ 0 705 0]>>endobj
-1148 0 obj<</D[1408 0 R/XYZ 0 734 0]>>endobj
-1149 0 obj<</D[1548 0 R/XYZ 0 672 0]>>endobj
-1150 0 obj<</D[1408 0 R/XYZ 0 553 0]>>endobj
-1151 0 obj<</D[1550 0 R/XYZ 0 652 0]>>endobj
-1152 0 obj<</D[1552 0 R/XYZ 0 696 0]>>endobj
-1153 0 obj<</D[1408 0 R/XYZ 0 494 0]>>endobj
-1154 0 obj<</D[1552 0 R/XYZ 0 317 0]>>endobj
-1155 0 obj<</D[1552 0 R/XYZ 0 131 0]>>endobj
-1156 0 obj<</D[1408 0 R/XYZ 0 409 0]>>endobj
-1157 0 obj<</D[1556 0 R/XYZ 0 583 0]>>endobj
-1158 0 obj<</D[1556 0 R/XYZ 0 169 0]>>endobj
-1159 0 obj<</D[1394 0 R/XYZ 0 696 0]>>endobj
-1160 0 obj<</D[1558 0 R/XYZ 0 470 0]>>endobj
-1161 0 obj<</D[1560 0 R/XYZ 0 297 0]>>endobj
-1162 0 obj<</D[1562 0 R/XYZ 0 734 0]>>endobj
-1163 0 obj<</D[1410 0 R/XYZ 0 734 0]>>endobj
-1164 0 obj<</D[1562 0 R/XYZ 0 632 0]>>endobj
-1165 0 obj<</D[1562 0 R/XYZ 0 507 0]>>endobj
-1166 0 obj<</D[1562 0 R/XYZ 0 423 0]>>endobj
-1167 0 obj<</D[1562 0 R/XYZ 0 325 0]>>endobj
-1168 0 obj<</D[1564 0 R/XYZ 0 440 0]>>endobj
-1169 0 obj<</D[1564 0 R/XYZ 0 406 0]>>endobj
-1170 0 obj<</D[1410 0 R/XYZ 0 583 0]>>endobj
-1171 0 obj<</D[1566 0 R/XYZ 0 479 0]>>endobj
-1172 0 obj<</D[1568 0 R/XYZ 0 692 0]>>endobj
-1173 0 obj<</D[1568 0 R/XYZ 0 511 0]>>endobj
-1174 0 obj<</D[1570 0 R/XYZ 0 734 0]>>endobj
-1175 0 obj<</D[1570 0 R/XYZ 0 394 0]>>endobj
-1176 0 obj<</D[1572 0 R/XYZ 0 718 0]>>endobj
-1177 0 obj<</D[1572 0 R/XYZ 0 633 0]>>endobj
-1178 0 obj<</D[1572 0 R/XYZ 0 535 0]>>endobj
-1179 0 obj<</D[1410 0 R/XYZ 0 128 0]>>endobj
-1180 0 obj<</D[1574 0 R/XYZ 0 696 0]>>endobj
-1181 0 obj<</D[1574 0 R/XYZ 0 467 0]>>endobj
-1182 0 obj<</D[1578 0 R/XYZ 0 672 0]>>endobj
-1183 0 obj<</D[1578 0 R/XYZ 0 544 0]>>endobj
-1184 0 obj<</D[1578 0 R/XYZ 0 231 0]>>endobj
-1185 0 obj<</D[1580 0 R/XYZ 0 560 0]>>endobj
-1186 0 obj<</D[1580 0 R/XYZ 0 409 0]>>endobj
-1187 0 obj<</D[1414 0 R/XYZ 0 696 0]>>endobj
-1188 0 obj<</D[1580 0 R/XYZ 0 294 0]>>endobj
-1189 0 obj<</D[1582 0 R/XYZ 0 734 0]>>endobj
-1190 0 obj<</D[1582 0 R/XYZ 0 292 0]>>endobj
-1191 0 obj<</D[1584 0 R/XYZ 0 665 0]>>endobj
-1192 0 obj<</D[1584 0 R/XYZ 0 488 0]>>endobj
-1193 0 obj<</D[1584 0 R/XYZ 0 351 0]>>endobj
-1194 0 obj<</D[1414 0 R/XYZ 0 515 0]>>endobj
-1195 0 obj<</D[1584 0 R/XYZ 0 209 0]>>endobj
-1196 0 obj<</D[1586 0 R/XYZ 0 599 0]>>endobj
-1197 0 obj<</D[1586 0 R/XYZ 0 330 0]>>endobj
-1198 0 obj<</D[1586 0 R/XYZ 0 192 0]>>endobj
-1199 0 obj<</D[1588 0 R/XYZ 0 692 0]>>endobj
-1200 0 obj<</D[1414 0 R/XYZ 0 137 0]>>endobj
-1201 0 obj<</D[1588 0 R/XYZ 0 288 0]>>endobj
-1202 0 obj<</D[1590 0 R/XYZ 0 718 0]>>endobj
-1203 0 obj<</D[1590 0 R/XYZ 0 571 0]>>endobj
-1204 0 obj<</D[1592 0 R/XYZ 0 527 0]>>endobj
-1205 0 obj<</D[1592 0 R/XYZ 0 501 0]>>endobj
-1206 0 obj<</D[1416 0 R/XYZ 0 533 0]>>endobj
-1207 0 obj<</D[1594 0 R/XYZ 0 600 0]>>endobj
-1208 0 obj<</D[1400 0 R/XYZ 0 696 0]>>endobj
-1209 0 obj<</D[1596 0 R/XYZ 0 686 0]>>endobj
-1210 0 obj<</D[1596 0 R/XYZ 0 620 0]>>endobj
-1211 0 obj<</D[1596 0 R/XYZ 0 381 0]>>endobj
-1212 0 obj<</D[1416 0 R/XYZ 0 273 0]>>endobj
-1213 0 obj<</D[1598 0 R/XYZ 0 429 0]>>endobj
-1214 0 obj<</D[1600 0 R/XYZ 0 296 0]>>endobj
-1215 0 obj<</D[1602 0 R/XYZ 0 734 0]>>endobj
-1216 0 obj<</D[1604 0 R/XYZ 0 696 0]>>endobj
-1217 0 obj<</D[1604 0 R/XYZ 0 595 0]>>endobj
-1218 0 obj<</D[1606 0 R/XYZ 0 568 0]>>endobj
-1219 0 obj<</D[1606 0 R/XYZ 0 414 0]>>endobj
-1220 0 obj<</D[1608 0 R/XYZ 0 696 0]>>endobj
-1221 0 obj<</D[1608 0 R/XYZ 0 608 0]>>endobj
-1222 0 obj<</D[1610 0 R/XYZ 0 672 0]>>endobj
-1223 0 obj<</D[1610 0 R/XYZ 0 412 0]>>endobj
-1224 0 obj<</D[1612 0 R/XYZ 0 573 0]>>endobj
-1225 0 obj<</D[1612 0 R/XYZ 0 471 0]>>endobj
-1226 0 obj<</D[1614 0 R/XYZ 0 734 0]>>endobj
-1227 0 obj<</D[1614 0 R/XYZ 0 700 0]>>endobj
-1228 0 obj<</D[1614 0 R/XYZ 0 143 0]>>endobj
-1229 0 obj<</D[1616 0 R/XYZ 0 243 0]>>endobj
-1230 0 obj<</D[1618 0 R/XYZ 0 718 0]>>endobj
-1231 0 obj<</D[1618 0 R/XYZ 0 336 0]>>endobj
-1232 0 obj<</D[1620 0 R/XYZ 0 322 0]>>endobj
-1233 0 obj<</D[1422 0 R/XYZ 0 560 0]>>endobj
-1234 0 obj<</D[1622 0 R/XYZ 0 492 0]>>endobj
-1235 0 obj<</D[1624 0 R/XYZ 0 672 0]>>endobj
-1236 0 obj<</D[1624 0 R/XYZ 0 557 0]>>endobj
-1237 0 obj<</D[1624 0 R/XYZ 0 469 0]>>endobj
-1238 0 obj<</D[1624 0 R/XYZ 0 358 0]>>endobj
-1239 0 obj<</D[1630 0 R/XYZ 0 696 0]>>endobj
-1240 0 obj<</D[1630 0 R/XYZ 0 449 0]>>endobj
-1241 0 obj<</D[1630 0 R/XYZ 0 416 0]>>endobj
-1242 0 obj<</D[1630 0 R/XYZ 0 146 0]>>endobj
-1243 0 obj<</D[1632 0 R/XYZ 0 652 0]>>endobj
-1244 0 obj<</D[1632 0 R/XYZ 0 515 0]>>endobj
-1245 0 obj<</D[1632 0 R/XYZ 0 255 0]>>endobj
-1246 0 obj<</D[1634 0 R/XYZ 0 718 0]>>endobj
-1247 0 obj<</D[1634 0 R/XYZ 0 537 0]>>endobj
-1248 0 obj<</D[1634 0 R/XYZ 0 409 0]>>endobj
-1249 0 obj<</D[1634 0 R/XYZ 0 189 0]>>endobj
-1250 0 obj<</D[1636 0 R/XYZ 0 734 0]>>endobj
-1251 0 obj<</D[1636 0 R/XYZ 0 645 0]>>endobj
-1252 0 obj<</D[1636 0 R/XYZ 0 477 0]>>endobj
-1253 0 obj<</D[1636 0 R/XYZ 0 349 0]>>endobj
-1254 0 obj<</D[1636 0 R/XYZ 0 129 0]>>endobj
-1255 0 obj<</D[1638 0 R/XYZ 0 639 0]>>endobj
-1256 0 obj<</D[1638 0 R/XYZ 0 511 0]>>endobj
-1257 0 obj<</D[1638 0 R/XYZ 0 436 0]>>endobj
-1258 0 obj<</D[1424 0 R/XYZ 0 613 0]>>endobj
-1259 0 obj<</D[1640 0 R/XYZ 0 388 0]>>endobj
-1260 0 obj<</D[1640 0 R/XYZ 0 170 0]>>endobj
-1261 0 obj<</D[1644 0 R/XYZ 0 655 0]>>endobj
-1262 0 obj<</D[1644 0 R/XYZ 0 408 0]>>endobj
-1263 0 obj<</D[1644 0 R/XYZ 0 293 0]>>endobj
-1264 0 obj<</D[1646 0 R/XYZ 0 228 0]>>endobj
-1265 0 obj<</D[1648 0 R/XYZ 0 668 0]>>endobj
-1266 0 obj<</D[1648 0 R/XYZ 0 461 0]>>endobj
-1267 0 obj<</D[1648 0 R/XYZ 0 427 0]>>endobj
-1268 0 obj<</D[1650 0 R/XYZ 0 734 0]>>endobj
-1269 0 obj<</D[1650 0 R/XYZ 0 523 0]>>endobj
-1270 0 obj<</D[1650 0 R/XYZ 0 408 0]>>endobj
-1271 0 obj<</D[1650 0 R/XYZ 0 151 0]>>endobj
-1272 0 obj<</D[1650 0 R/XYZ 0 118 0]>>endobj
-1273 0 obj<</D[1652 0 R/XYZ 0 626 0]>>endobj
-1274 0 obj<</D[1652 0 R/XYZ 0 475 0]>>endobj
-1275 0 obj<</D[1652 0 R/XYZ 0 377 0]>>endobj
-1276 0 obj<</D[1652 0 R/XYZ 0 292 0]>>endobj
-1277 0 obj<</D[1426 0 R/XYZ 0 622 0]>>endobj
-1278 0 obj<</D[1654 0 R/XYZ 0 718 0]>>endobj
-1279 0 obj<</D[1656 0 R/XYZ 0 696 0]>>endobj
-1280 0 obj<</D[1656 0 R/XYZ 0 423 0]>>endobj
-1281 0 obj<</D[1656 0 R/XYZ 0 282 0]>>endobj
-1282 0 obj<</D[1658 0 R/XYZ 0 613 0]>>endobj
-1283 0 obj<</D[1658 0 R/XYZ 0 260 0]>>endobj
-1284 0 obj<</D[1658 0 R/XYZ 0 159 0]>>endobj
-1285 0 obj<</D[1426 0 R/XYZ 0 266 0]>>endobj
-1286 0 obj<</D[1660 0 R/XYZ 0 696 0]>>endobj
-1287 0 obj<</D[1660 0 R/XYZ 0 529 0]>>endobj
-1288 0 obj<</D[1660 0 R/XYZ 0 199 0]>>endobj
-1289 0 obj<</D[1660 0 R/XYZ 0 165 0]>>endobj
-1290 0 obj<</D[1662 0 R/XYZ 0 734 0]>>endobj
-1291 0 obj<</D[1662 0 R/XYZ 0 530 0]>>endobj
-1292 0 obj<</D[1664 0 R/XYZ 0 626 0]>>endobj
-1293 0 obj<</D[1664 0 R/XYZ 0 475 0]>>endobj
-1294 0 obj<</D[1664 0 R/XYZ 0 351 0]>>endobj
-1295 0 obj<</D[1666 0 R/XYZ 0 734 0]>>endobj
-1296 0 obj<</D[1428 0 R/XYZ 0 520 0]>>endobj
-1297 0 obj<</D[1666 0 R/XYZ 0 371 0]>>endobj
-1298 0 obj<</D[1668 0 R/XYZ 0 705 0]>>endobj
-1299 0 obj<</D[1668 0 R/XYZ 0 515 0]>>endobj
-1300 0 obj<</D[1668 0 R/XYZ 0 377 0]>>endobj
-1301 0 obj<</D[1668 0 R/XYZ 0 239 0]>>endobj
-1302 0 obj<</D[1400 0 R/XYZ 0 568 0]>>endobj
-1303 0 obj<</D[1430 0 R/XYZ 0 734 0]>>endobj
-1304 0 obj<</D[1430 0 R/XYZ 0 645 0]>>endobj
-1305 0 obj<</D[1432 0 R/XYZ 0 696 0]>>endobj
-1306 0 obj<</D[1434 0 R/XYZ 0 604 0]>>endobj
-1307 0 obj<</D[1384 0 R/XYZ 0 696 0]>>endobj
-1308 0 obj<</D[1434 0 R/XYZ 0 159 0]>>endobj
-1309 0 obj<</D[1436 0 R/XYZ 0 483 0]>>endobj
-1310 0 obj<</D[1436 0 R/XYZ 0 305 0]>>endobj
-1311 0 obj<</D[1438 0 R/XYZ 0 467 0]>>endobj
-1312 0 obj<</D[1438 0 R/XYZ 0 187 0]>>endobj
-1313 0 obj<</D[1442 0 R/XYZ 0 672 0]>>endobj
-1314 0 obj<</D[1442 0 R/XYZ 0 531 0]>>endobj
-1315 0 obj<</D[1444 0 R/XYZ 0 734 0]>>endobj
-1316 0 obj<</D[1444 0 R/XYZ 0 609 0]>>endobj
-1317 0 obj<</D[1444 0 R/XYZ 0 511 0]>>endobj
-1318 0 obj<</D[1446 0 R/XYZ 0 681 0]>>endobj
-1319 0 obj<</D[1448 0 R/XYZ 0 696 0]>>endobj
-1320 0 obj<</D[1452 0 R/XYZ 0 672 0]>>endobj
-1321 0 obj<</D[1452 0 R/XYZ 0 584 0]>>endobj
-1322 0 obj<</D[1454 0 R/XYZ 0 718 0]>>endobj
-1323 0 obj<</D[1400 0 R/XYZ 0 163 0]>>endobj
-1324 0 obj<</D[1456 0 R/XYZ 0 613 0]>>endobj
-1325 0 obj<</D[1402 0 R/XYZ 0 734 0]>>endobj
-1326 0 obj<</D[1456 0 R/XYZ 0 227 0]>>endobj
-1327 0 obj<</D[1458 0 R/XYZ 0 319 0]>>endobj
-1328 0 obj<</D[1460 0 R/XYZ 0 734 0]>>endobj
-1329 0 obj<</D[1460 0 R/XYZ 0 385 0]>>endobj
-1330 0 obj<</D[1462 0 R/XYZ 0 129 0]>>endobj
-1331 0 obj<</D[1386 0 R/XYZ 0 734 0]>>endobj
-1332 0 obj<</D[1402 0 R/XYZ 0 385 0]>>endobj
-1333 0 obj<</D[1464 0 R/XYZ 0 124 0]>>endobj
-1334 0 obj<</D[1402 0 R/XYZ 0 257 0]>>endobj
-1335 0 obj<</D[1470 0 R/XYZ 0 507 0]>>endobj
-1336 0 obj<</D[1472 0 R/XYZ 0 520 0]>>endobj
-1337 0 obj<</D[1474 0 R/XYZ 0 734 0]>>endobj
-1338 0 obj<</D[1404 0 R/XYZ 0 734 0]>>endobj
-1339 0 obj<</D[1474 0 R/XYZ 0 540 0]>>endobj
-1340 0 obj<</D[1434 0 R/XYZ 0 734 0]>>endobj
-1341 0 obj<</D[1656 0 R/XYZ 0 734 0]>>endobj
-1342 0 obj<</D[1624 0 R/XYZ 0 734 0]>>endobj
-1343 0 obj<</D[1660 0 R/XYZ 0 734 0]>>endobj
-1344 0 obj<</D[1498 0 R/XYZ 0 734 0]>>endobj
-1345 0 obj<</D[1628 0 R/XYZ 0 734 0]>>endobj
-1346 0 obj<</D[1414 0 R/XYZ 0 734 0]>>endobj
-1347 0 obj<</D[1400 0 R/XYZ 0 734 0]>>endobj
-1348 0 obj<</D[1512 0 R/XYZ 0 734 0]>>endobj
-1349 0 obj<</D[1548 0 R/XYZ 0 734 0]>>endobj
-1350 0 obj<</D[1432 0 R/XYZ 0 734 0]>>endobj
-1351 0 obj<</D[1648 0 R/XYZ 0 734 0]>>endobj
-1352 0 obj<</D[1542 0 R/XYZ 0 734 0]>>endobj
-1353 0 obj<</D[1604 0 R/XYZ 0 734 0]>>endobj
-1354 0 obj<</D[1608 0 R/XYZ 0 734 0]>>endobj
-1355 0 obj<</D[1644 0 R/XYZ 0 734 0]>>endobj
-1356 0 obj<</D[1552 0 R/XYZ 0 734 0]>>endobj
-1357 0 obj<</D[1442 0 R/XYZ 0 734 0]>>endobj
-1358 0 obj<</D[1486 0 R/XYZ 0 734 0]>>endobj
-1359 0 obj<</D[1384 0 R/XYZ 0 734 0]>>endobj
-1360 0 obj<</D[1384 0 R/XYZ 0 734 0]>>endobj
-1361 0 obj<</D[1610 0 R/XYZ 0 734 0]>>endobj
-1362 0 obj<</D[1452 0 R/XYZ 0 734 0]>>endobj
-1363 0 obj<</D[1574 0 R/XYZ 0 734 0]>>endobj
-1364 0 obj<</D[1630 0 R/XYZ 0 734 0]>>endobj
-1365 0 obj<</D[1532 0 R/XYZ 0 734 0]>>endobj
-1366 0 obj<</D[1578 0 R/XYZ 0 734 0]>>endobj
-1367 0 obj<</Type/Pages/Count 151/Kids[1368 0 R
+831 0 obj<</Dests 832 0 R>>endobj
+832 0 obj<</Kids[833 0 R]>>endobj
+833 0 obj<</Limits[(16)(winbind)]/Names[(16)834 0 R(3)835 0 R(31)836 0 R(9)837 0 R(ads)838 0 R(aen100)839 0 R(aen1006)840 0 R(aen1014)841 0 R(aen1022)842 0 R(aen1029)843 0 R(aen1065)844 0 R(aen1078)845 0 R(aen1081)846 0 R(aen1091)847 0 R(aen1127)848 0 R(aen1131)849 0 R(aen1139)850 0 R(aen1142)851 0 R(aen1145)852 0 R(aen1148)853 0 R(aen1152)854 0 R(aen1169)855 0 R(aen1187)856 0 R(aen1193)857 0 R(aen1202)858 0 R(aen1217)859 0 R(aen1227)860 0 R(aen1231)861 0 R(aen1243)862 0 R(aen1248)863 0 R(aen1251)864 0 R(aen1273)865 0 R(aen129)866 0 R(aen1337)867 0 R(aen1342)868 0 R(aen1360)869 0 R(aen1374)870 0 R(aen1396)871 0 R(aen1412)872 0 R(aen1428)873 0 R(aen1439)874 0 R(aen1447)875 0 R(aen145)876 0 R(aen1459)877 0 R(aen1471)878 0 R(aen1476)879 0 R(aen1484)880 0 R(aen1489)881 0 R(aen1492)882 0 R(aen1504)883 0 R(aen1514)884 0 R(aen154)885 0 R(aen1542)886 0 R(aen1550)887 0 R(aen1567)888 0 R(aen1574)889 0 R(aen1579)890 0 R(aen1584)891 0 R(aen1605)892 0 R(aen1614)893 0 R(aen1625)894 0 R(aen1645)895 0 R(aen1660)896 0 R(aen1674)897 0 R(aen1681)898 0 R(aen170)899 0 R(aen1703)900 0 R(aen1767)901 0 R(aen1788)902 0 R(aen1832)903 0 R(aen1839)904 0 R(aen184)905 0 R(aen1859)906 0 R(aen189)907 0 R(aen1894)908 0 R(aen1920)909 0 R(aen193)910 0 R(aen1942)911 0 R(aen1950)912 0 R(aen196)913 0 R(aen1985)914 0 R(aen2001)915 0 R(aen2012)916 0 R(aen2042)917 0 R(aen205)918 0 R(aen2050)919 0 R(aen2054)920 0 R(aen2064)921 0 R(aen2067)922 0 R(aen2071)923 0 R(aen2093)924 0 R(aen2095)925 0 R(aen21)926 0 R(aen210)927 0 R(aen2111)928 0 R(aen2120)929 0 R(aen2128)930 0 R(aen2156)931 0 R(aen2167)932 0 R(aen2179)933 0 R(aen2182)934 0 R(aen2185)935 0 R(aen219)936 0 R(aen2225)937 0 R(aen2229)938 0 R(aen2242)939 0 R(aen2249)940 0 R(aen2253)941 0 R(aen2258)942 0 R(aen2262)943 0 R(aen2278)944 0 R(aen2286)945 0 R(aen229)946 0 R(aen2290)947 0 R(aen2293)948 0 R(aen2300)949 0 R(aen2313)950 0 R(aen2327)951 0 R(aen233)952 0 R(aen2338)953 0 R(aen2357)954 0 R(aen2390)955 0 R(aen2406)956 0 R(aen2417)957 0 R(aen242)958 0 R(aen2453)959 0 R(aen2455)960 0 R(aen2472)961 0 R(aen2479)962 0 R(aen2485)963 0 R(aen249)964 0 R(aen2502)965 0 R(aen2535)966 0 R(aen254)967 0 R(aen2542)968 0 R(aen2552)969 0 R(aen2566)970 0 R(aen2572)971 0 R(aen2589)972 0 R(aen2594)973 0 R(aen26)974 0 R(aen2613)975 0 R(aen2619)976 0 R(aen2640)977 0 R(aen2649)978 0 R(aen2651)979 0 R(aen2659)980 0 R(aen2696)981 0 R(aen2703)982 0 R(aen2707)983 0 R(aen2715)984 0 R(aen2737)985 0 R(aen2757)986 0 R(aen2786)987 0 R(aen2791)988 0 R(aen2803)989 0 R(aen2805)990 0 R(aen2822)991 0 R(aen2850)992 0 R(aen2855)993 0 R(aen2875)994 0 R(aen289)995 0 R(aen2945)996 0 R(aen2953)997 0 R(aen2964)998 0 R(aen2969)999 0 R(aen2972)1000 0 R(aen2977)1001 0 R(aen3055)1002 0 R(aen3061)1003 0 R(aen3068)1004 0 R(aen3073)1005 0 R(aen3078)1006 0 R(aen308)1007 0 R(aen3081)1008 0 R(aen3086)1009 0 R(aen3090)1010 0 R(aen3094)1011 0 R(aen3097)1012 0 R(aen3139)1013 0 R(aen3145)1014 0 R(aen3149)1015 0 R(aen3178)1016 0 R(aen3199)1017 0 R(aen3208)1018 0 R(aen3210)1019 0 R(aen3225)1020 0 R(aen3234)1021 0 R(aen3238)1022 0 R(aen3248)1023 0 R(aen3250)1024 0 R(aen3255)1025 0 R(aen326)1026 0 R(aen3260)1027 0 R(aen3264)1028 0 R(aen3269)1029 0 R(aen3285)1030 0 R(aen3309)1031 0 R(aen3319)1032 0 R(aen3325)1033 0 R(aen3342)1034 0 R(aen3352)1035 0 R(aen3355)1036 0 R(aen336)1037 0 R(aen3378)1038 0 R(aen3383)1039 0 R(aen3393)1040 0 R(aen3395)1041 0 R(aen3401)1042 0 R(aen3407)1043 0 R(aen3422)1044 0 R(aen3427)1045 0 R(aen3433)1046 0 R(aen3441)1047 0 R(aen345)1048 0 R(aen3467)1049 0 R(aen3484)1050 0 R(aen3492)1051 0 R(aen3498)1052 0 R(aen3503)1053 0 R(aen36)1054 0 R(aen363)1055 0 R(aen366)1056 0 R(aen377)1057 0 R(aen385)1058 0 R(aen399)1059 0 R(aen4)1060 0 R(aen404)1061 0 R(aen415)1062 0 R(aen421)1063 0 R(aen457)1064 0 R(aen462)1065 0 R(aen481)1066 0 R(aen488)1067 0 R(aen497)1068 0 R(aen531)1069 0 R(aen575)1070 0 R(aen581)1071 0 R(aen620)1072 0 R(aen64)1073 0 R(aen663)1074 0 R(aen68)1075 0 R(aen682)1076 0 R(aen723)1077 0 R(aen732)1078 0 R(aen747)1079 0 R(aen795)1080 0 R(aen8)1081 0 R(aen82)1082 0 R(aen839)1083 0 R(aen90)1084 0 R(aen953)1085 0 R(aen979)1086 0 R(aen998)1087 0 R(appendixes)1088 0 R(browsing-quick)1089 0 R(bugreport)1090 0 R(cvs-access)1091 0 R(diagnosis)1092 0 R(domain-security)1093 0 R(groupmapping)1094 0 R(improved-browsing)1095 0 R(install)1096 0 R(integrate-ms-networks)1097 0 R(introduction)1098 0 R(msdfs)1099 0 R(optional)1100 0 R(other-clients)1101 0 R(pam)1102 0 R(pdb-mysql)1103 0 R(pdb-xml)1104 0 R(portability)1105 0 R(printing)1106 0 R(pwencrypt)1107 0 R(samba-bdc)1108 0 R(samba-howto-collection)1109 0 R(samba-howto-collection.html)1110 0 R(samba-ldap-howto)1111 0 R(samba-pdc)1112 0 R(securitylevels)1113 0 R(speed)1114 0 R(type)1115 0 R(unix-permissions)1116 0 R(vfs)1117 0 R(winbind)1118 0 R]>>endobj
+834 0 obj<</D[1256 0 R/XYZ 0 734 0]>>endobj
+835 0 obj<</D[1146 0 R/XYZ 0 734 0]>>endobj
+836 0 obj<</D[1390 0 R/XYZ 0 734 0]>>endobj
+837 0 obj<</D[1196 0 R/XYZ 0 734 0]>>endobj
+838 0 obj<</D[1244 0 R/XYZ 0 734 0]>>endobj
+839 0 obj<</D[1154 0 R/XYZ 0 734 0]>>endobj
+840 0 obj<</D[1226 0 R/XYZ 0 540 0]>>endobj
+841 0 obj<</D[1226 0 R/XYZ 0 363 0]>>endobj
+842 0 obj<</D[1226 0 R/XYZ 0 136 0]>>endobj
+843 0 obj<</D[1228 0 R/XYZ 0 665 0]>>endobj
+844 0 obj<</D[1230 0 R/XYZ 0 335 0]>>endobj
+845 0 obj<</D[1232 0 R/XYZ 0 425 0]>>endobj
+846 0 obj<</D[1232 0 R/XYZ 0 344 0]>>endobj
+847 0 obj<</D[1234 0 R/XYZ 0 702 0]>>endobj
+848 0 obj<</D[1238 0 R/XYZ 0 672 0]>>endobj
+849 0 obj<</D[1238 0 R/XYZ 0 597 0]>>endobj
+850 0 obj<</D[1238 0 R/XYZ 0 223 0]>>endobj
+851 0 obj<</D[1240 0 R/XYZ 0 734 0]>>endobj
+852 0 obj<</D[1240 0 R/XYZ 0 609 0]>>endobj
+853 0 obj<</D[1240 0 R/XYZ 0 524 0]>>endobj
+854 0 obj<</D[1240 0 R/XYZ 0 383 0]>>endobj
+855 0 obj<</D[1242 0 R/XYZ 0 617 0]>>endobj
+856 0 obj<</D[1244 0 R/XYZ 0 551 0]>>endobj
+857 0 obj<</D[1244 0 R/XYZ 0 444 0]>>endobj
+858 0 obj<</D[1244 0 R/XYZ 0 267 0]>>endobj
+859 0 obj<</D[1246 0 R/XYZ 0 564 0]>>endobj
+860 0 obj<</D[1246 0 R/XYZ 0 245 0]>>endobj
+861 0 obj<</D[1246 0 R/XYZ 0 156 0]>>endobj
+862 0 obj<</D[1248 0 R/XYZ 0 692 0]>>endobj
+863 0 obj<</D[1248 0 R/XYZ 0 603 0]>>endobj
+864 0 obj<</D[1248 0 R/XYZ 0 528 0]>>endobj
+865 0 obj<</D[1250 0 R/XYZ 0 696 0]>>endobj
+866 0 obj<</D[1154 0 R/XYZ 0 244 0]>>endobj
+867 0 obj<</D[1252 0 R/XYZ 0 362 0]>>endobj
+868 0 obj<</D[1252 0 R/XYZ 0 155 0]>>endobj
+869 0 obj<</D[1256 0 R/XYZ 0 696 0]>>endobj
+870 0 obj<</D[1260 0 R/XYZ 0 696 0]>>endobj
+871 0 obj<</D[1260 0 R/XYZ 0 463 0]>>endobj
+872 0 obj<</D[1260 0 R/XYZ 0 335 0]>>endobj
+873 0 obj<</D[1262 0 R/XYZ 0 454 0]>>endobj
+874 0 obj<</D[1262 0 R/XYZ 0 317 0]>>endobj
+875 0 obj<</D[1262 0 R/XYZ 0 168 0]>>endobj
+876 0 obj<</D[1156 0 R/XYZ 0 665 0]>>endobj
+877 0 obj<</D[1264 0 R/XYZ 0 347 0]>>endobj
+878 0 obj<</D[1266 0 R/XYZ 0 295 0]>>endobj
+879 0 obj<</D[1268 0 R/XYZ 0 734 0]>>endobj
+880 0 obj<</D[1270 0 R/XYZ 0 456 0]>>endobj
+881 0 obj<</D[1270 0 R/XYZ 0 358 0]>>endobj
+882 0 obj<</D[1270 0 R/XYZ 0 221 0]>>endobj
+883 0 obj<</D[1272 0 R/XYZ 0 667 0]>>endobj
+884 0 obj<</D[1274 0 R/XYZ 0 734 0]>>endobj
+885 0 obj<</D[1156 0 R/XYZ 0 498 0]>>endobj
+886 0 obj<</D[1276 0 R/XYZ 0 692 0]>>endobj
+887 0 obj<</D[1276 0 R/XYZ 0 440 0]>>endobj
+888 0 obj<</D[1278 0 R/XYZ 0 734 0]>>endobj
+889 0 obj<</D[1278 0 R/XYZ 0 437 0]>>endobj
+890 0 obj<</D[1278 0 R/XYZ 0 288 0]>>endobj
+891 0 obj<</D[1278 0 R/XYZ 0 172 0]>>endobj
+892 0 obj<</D[1282 0 R/XYZ 0 672 0]>>endobj
+893 0 obj<</D[1282 0 R/XYZ 0 497 0]>>endobj
+894 0 obj<</D[1282 0 R/XYZ 0 330 0]>>endobj
+895 0 obj<</D[1284 0 R/XYZ 0 665 0]>>endobj
+896 0 obj<</D[1284 0 R/XYZ 0 432 0]>>endobj
+897 0 obj<</D[1284 0 R/XYZ 0 189 0]>>endobj
+898 0 obj<</D[1286 0 R/XYZ 0 692 0]>>endobj
+899 0 obj<</D[1156 0 R/XYZ 0 330 0]>>endobj
+900 0 obj<</D[1286 0 R/XYZ 0 260 0]>>endobj
+901 0 obj<</D[1290 0 R/XYZ 0 599 0]>>endobj
+902 0 obj<</D[1292 0 R/XYZ 0 672 0]>>endobj
+903 0 obj<</D[1294 0 R/XYZ 0 127 0]>>endobj
+904 0 obj<</D[1296 0 R/XYZ 0 679 0]>>endobj
+905 0 obj<</D[1158 0 R/XYZ 0 734 0]>>endobj
+906 0 obj<</D[1298 0 R/XYZ 0 672 0]>>endobj
+907 0 obj<</D[1158 0 R/XYZ 0 553 0]>>endobj
+908 0 obj<</D[1300 0 R/XYZ 0 652 0]>>endobj
+909 0 obj<</D[1302 0 R/XYZ 0 696 0]>>endobj
+910 0 obj<</D[1158 0 R/XYZ 0 494 0]>>endobj
+911 0 obj<</D[1302 0 R/XYZ 0 317 0]>>endobj
+912 0 obj<</D[1302 0 R/XYZ 0 131 0]>>endobj
+913 0 obj<</D[1158 0 R/XYZ 0 409 0]>>endobj
+914 0 obj<</D[1306 0 R/XYZ 0 583 0]>>endobj
+915 0 obj<</D[1306 0 R/XYZ 0 169 0]>>endobj
+916 0 obj<</D[1308 0 R/XYZ 0 456 0]>>endobj
+917 0 obj<</D[1310 0 R/XYZ 0 283 0]>>endobj
+918 0 obj<</D[1160 0 R/XYZ 0 734 0]>>endobj
+919 0 obj<</D[1312 0 R/XYZ 0 734 0]>>endobj
+920 0 obj<</D[1312 0 R/XYZ 0 632 0]>>endobj
+921 0 obj<</D[1312 0 R/XYZ 0 507 0]>>endobj
+922 0 obj<</D[1312 0 R/XYZ 0 423 0]>>endobj
+923 0 obj<</D[1312 0 R/XYZ 0 325 0]>>endobj
+924 0 obj<</D[1314 0 R/XYZ 0 426 0]>>endobj
+925 0 obj<</D[1314 0 R/XYZ 0 393 0]>>endobj
+926 0 obj<</D[1146 0 R/XYZ 0 696 0]>>endobj
+927 0 obj<</D[1160 0 R/XYZ 0 583 0]>>endobj
+928 0 obj<</D[1316 0 R/XYZ 0 450 0]>>endobj
+929 0 obj<</D[1318 0 R/XYZ 0 665 0]>>endobj
+930 0 obj<</D[1318 0 R/XYZ 0 479 0]>>endobj
+931 0 obj<</D[1320 0 R/XYZ 0 718 0]>>endobj
+932 0 obj<</D[1320 0 R/XYZ 0 373 0]>>endobj
+933 0 obj<</D[1322 0 R/XYZ 0 679 0]>>endobj
+934 0 obj<</D[1322 0 R/XYZ 0 594 0]>>endobj
+935 0 obj<</D[1322 0 R/XYZ 0 496 0]>>endobj
+936 0 obj<</D[1160 0 R/XYZ 0 128 0]>>endobj
+937 0 obj<</D[1324 0 R/XYZ 0 672 0]>>endobj
+938 0 obj<</D[1324 0 R/XYZ 0 544 0]>>endobj
+939 0 obj<</D[1324 0 R/XYZ 0 231 0]>>endobj
+940 0 obj<</D[1326 0 R/XYZ 0 560 0]>>endobj
+941 0 obj<</D[1326 0 R/XYZ 0 409 0]>>endobj
+942 0 obj<</D[1326 0 R/XYZ 0 294 0]>>endobj
+943 0 obj<</D[1328 0 R/XYZ 0 734 0]>>endobj
+944 0 obj<</D[1328 0 R/XYZ 0 292 0]>>endobj
+945 0 obj<</D[1330 0 R/XYZ 0 665 0]>>endobj
+946 0 obj<</D[1164 0 R/XYZ 0 696 0]>>endobj
+947 0 obj<</D[1330 0 R/XYZ 0 488 0]>>endobj
+948 0 obj<</D[1330 0 R/XYZ 0 351 0]>>endobj
+949 0 obj<</D[1330 0 R/XYZ 0 209 0]>>endobj
+950 0 obj<</D[1332 0 R/XYZ 0 599 0]>>endobj
+951 0 obj<</D[1332 0 R/XYZ 0 330 0]>>endobj
+952 0 obj<</D[1164 0 R/XYZ 0 515 0]>>endobj
+953 0 obj<</D[1332 0 R/XYZ 0 192 0]>>endobj
+954 0 obj<</D[1334 0 R/XYZ 0 692 0]>>endobj
+955 0 obj<</D[1334 0 R/XYZ 0 285 0]>>endobj
+956 0 obj<</D[1336 0 R/XYZ 0 705 0]>>endobj
+957 0 obj<</D[1336 0 R/XYZ 0 557 0]>>endobj
+958 0 obj<</D[1164 0 R/XYZ 0 137 0]>>endobj
+959 0 obj<</D[1338 0 R/XYZ 0 503 0]>>endobj
+960 0 obj<</D[1338 0 R/XYZ 0 477 0]>>endobj
+961 0 obj<</D[1340 0 R/XYZ 0 564 0]>>endobj
+962 0 obj<</D[1342 0 R/XYZ 0 640 0]>>endobj
+963 0 obj<</D[1342 0 R/XYZ 0 574 0]>>endobj
+964 0 obj<</D[1166 0 R/XYZ 0 533 0]>>endobj
+965 0 obj<</D[1342 0 R/XYZ 0 335 0]>>endobj
+966 0 obj<</D[1344 0 R/XYZ 0 357 0]>>endobj
+967 0 obj<</D[1166 0 R/XYZ 0 273 0]>>endobj
+968 0 obj<</D[1346 0 R/XYZ 0 217 0]>>endobj
+969 0 obj<</D[1348 0 R/XYZ 0 679 0]>>endobj
+970 0 obj<</D[1350 0 R/XYZ 0 696 0]>>endobj
+971 0 obj<</D[1350 0 R/XYZ 0 595 0]>>endobj
+972 0 obj<</D[1352 0 R/XYZ 0 511 0]>>endobj
+973 0 obj<</D[1352 0 R/XYZ 0 357 0]>>endobj
+974 0 obj<</D[1150 0 R/XYZ 0 696 0]>>endobj
+975 0 obj<</D[1354 0 R/XYZ 0 696 0]>>endobj
+976 0 obj<</D[1354 0 R/XYZ 0 608 0]>>endobj
+977 0 obj<</D[1356 0 R/XYZ 0 696 0]>>endobj
+978 0 obj<</D[1356 0 R/XYZ 0 382 0]>>endobj
+979 0 obj<</D[1356 0 R/XYZ 0 348 0]>>endobj
+980 0 obj<</D[1356 0 R/XYZ 0 212 0]>>endobj
+981 0 obj<</D[1358 0 R/XYZ 0 560 0]>>endobj
+982 0 obj<</D[1358 0 R/XYZ 0 430 0]>>endobj
+983 0 obj<</D[1358 0 R/XYZ 0 315 0]>>endobj
+984 0 obj<</D[1360 0 R/XYZ 0 734 0]>>endobj
+985 0 obj<</D[1362 0 R/XYZ 0 672 0]>>endobj
+986 0 obj<</D[1362 0 R/XYZ 0 412 0]>>endobj
+987 0 obj<</D[1364 0 R/XYZ 0 573 0]>>endobj
+988 0 obj<</D[1364 0 R/XYZ 0 471 0]>>endobj
+989 0 obj<</D[1366 0 R/XYZ 0 734 0]>>endobj
+990 0 obj<</D[1366 0 R/XYZ 0 700 0]>>endobj
+991 0 obj<</D[1366 0 R/XYZ 0 138 0]>>endobj
+992 0 obj<</D[1368 0 R/XYZ 0 227 0]>>endobj
+993 0 obj<</D[1370 0 R/XYZ 0 705 0]>>endobj
+994 0 obj<</D[1370 0 R/XYZ 0 320 0]>>endobj
+995 0 obj<</D[1172 0 R/XYZ 0 511 0]>>endobj
+996 0 obj<</D[1372 0 R/XYZ 0 309 0]>>endobj
+997 0 obj<</D[1374 0 R/XYZ 0 478 0]>>endobj
+998 0 obj<</D[1376 0 R/XYZ 0 696 0]>>endobj
+999 0 obj<</D[1376 0 R/XYZ 0 581 0]>>endobj
+1000 0 obj<</D[1376 0 R/XYZ 0 493 0]>>endobj
+1001 0 obj<</D[1376 0 R/XYZ 0 382 0]>>endobj
+1002 0 obj<</D[1382 0 R/XYZ 0 696 0]>>endobj
+1003 0 obj<</D[1382 0 R/XYZ 0 449 0]>>endobj
+1004 0 obj<</D[1382 0 R/XYZ 0 189 0]>>endobj
+1005 0 obj<</D[1384 0 R/XYZ 0 639 0]>>endobj
+1006 0 obj<</D[1384 0 R/XYZ 0 458 0]>>endobj
+1007 0 obj<</D[1174 0 R/XYZ 0 560 0]>>endobj
+1008 0 obj<</D[1384 0 R/XYZ 0 383 0]>>endobj
+1009 0 obj<</D[1384 0 R/XYZ 0 215 0]>>endobj
+1010 0 obj<</D[1386 0 R/XYZ 0 734 0]>>endobj
+1011 0 obj<</D[1386 0 R/XYZ 0 605 0]>>endobj
+1012 0 obj<</D[1386 0 R/XYZ 0 530 0]>>endobj
+1013 0 obj<</D[1392 0 R/XYZ 0 655 0]>>endobj
+1014 0 obj<</D[1392 0 R/XYZ 0 408 0]>>endobj
+1015 0 obj<</D[1392 0 R/XYZ 0 293 0]>>endobj
+1016 0 obj<</D[1394 0 R/XYZ 0 216 0]>>endobj
+1017 0 obj<</D[1398 0 R/XYZ 0 668 0]>>endobj
+1018 0 obj<</D[1398 0 R/XYZ 0 461 0]>>endobj
+1019 0 obj<</D[1398 0 R/XYZ 0 427 0]>>endobj
+1020 0 obj<</D[1400 0 R/XYZ 0 734 0]>>endobj
+1021 0 obj<</D[1400 0 R/XYZ 0 520 0]>>endobj
+1022 0 obj<</D[1400 0 R/XYZ 0 422 0]>>endobj
+1023 0 obj<</D[1400 0 R/XYZ 0 165 0]>>endobj
+1024 0 obj<</D[1400 0 R/XYZ 0 132 0]>>endobj
+1025 0 obj<</D[1402 0 R/XYZ 0 652 0]>>endobj
+1026 0 obj<</D[1176 0 R/XYZ 0 567 0]>>endobj
+1027 0 obj<</D[1402 0 R/XYZ 0 501 0]>>endobj
+1028 0 obj<</D[1402 0 R/XYZ 0 403 0]>>endobj
+1029 0 obj<</D[1402 0 R/XYZ 0 319 0]>>endobj
+1030 0 obj<</D[1404 0 R/XYZ 0 734 0]>>endobj
+1031 0 obj<</D[1406 0 R/XYZ 0 696 0]>>endobj
+1032 0 obj<</D[1406 0 R/XYZ 0 423 0]>>endobj
+1033 0 obj<</D[1406 0 R/XYZ 0 282 0]>>endobj
+1034 0 obj<</D[1408 0 R/XYZ 0 613 0]>>endobj
+1035 0 obj<</D[1408 0 R/XYZ 0 260 0]>>endobj
+1036 0 obj<</D[1408 0 R/XYZ 0 159 0]>>endobj
+1037 0 obj<</D[1176 0 R/XYZ 0 208 0]>>endobj
+1038 0 obj<</D[1410 0 R/XYZ 0 696 0]>>endobj
+1039 0 obj<</D[1410 0 R/XYZ 0 529 0]>>endobj
+1040 0 obj<</D[1410 0 R/XYZ 0 196 0]>>endobj
+1041 0 obj<</D[1410 0 R/XYZ 0 163 0]>>endobj
+1042 0 obj<</D[1412 0 R/XYZ 0 734 0]>>endobj
+1043 0 obj<</D[1412 0 R/XYZ 0 530 0]>>endobj
+1044 0 obj<</D[1414 0 R/XYZ 0 599 0]>>endobj
+1045 0 obj<</D[1414 0 R/XYZ 0 449 0]>>endobj
+1046 0 obj<</D[1414 0 R/XYZ 0 324 0]>>endobj
+1047 0 obj<</D[1416 0 R/XYZ 0 734 0]>>endobj
+1048 0 obj<</D[1178 0 R/XYZ 0 454 0]>>endobj
+1049 0 obj<</D[1416 0 R/XYZ 0 371 0]>>endobj
+1050 0 obj<</D[1418 0 R/XYZ 0 705 0]>>endobj
+1051 0 obj<</D[1418 0 R/XYZ 0 515 0]>>endobj
+1052 0 obj<</D[1418 0 R/XYZ 0 377 0]>>endobj
+1053 0 obj<</D[1418 0 R/XYZ 0 239 0]>>endobj
+1054 0 obj<</D[1150 0 R/XYZ 0 568 0]>>endobj
+1055 0 obj<</D[1180 0 R/XYZ 0 679 0]>>endobj
+1056 0 obj<</D[1180 0 R/XYZ 0 590 0]>>endobj
+1057 0 obj<</D[1182 0 R/XYZ 0 604 0]>>endobj
+1058 0 obj<</D[1182 0 R/XYZ 0 159 0]>>endobj
+1059 0 obj<</D[1184 0 R/XYZ 0 520 0]>>endobj
+1060 0 obj<</D[1136 0 R/XYZ 0 696 0]>>endobj
+1061 0 obj<</D[1184 0 R/XYZ 0 339 0]>>endobj
+1062 0 obj<</D[1186 0 R/XYZ 0 494 0]>>endobj
+1063 0 obj<</D[1186 0 R/XYZ 0 213 0]>>endobj
+1064 0 obj<</D[1190 0 R/XYZ 0 696 0]>>endobj
+1065 0 obj<</D[1190 0 R/XYZ 0 555 0]>>endobj
+1066 0 obj<</D[1192 0 R/XYZ 0 734 0]>>endobj
+1067 0 obj<</D[1192 0 R/XYZ 0 609 0]>>endobj
+1068 0 obj<</D[1192 0 R/XYZ 0 511 0]>>endobj
+1069 0 obj<</D[1196 0 R/XYZ 0 696 0]>>endobj
+1070 0 obj<</D[1204 0 R/XYZ 0 672 0]>>endobj
+1071 0 obj<</D[1204 0 R/XYZ 0 584 0]>>endobj
+1072 0 obj<</D[1206 0 R/XYZ 0 718 0]>>endobj
+1073 0 obj<</D[1150 0 R/XYZ 0 163 0]>>endobj
+1074 0 obj<</D[1208 0 R/XYZ 0 613 0]>>endobj
+1075 0 obj<</D[1152 0 R/XYZ 0 734 0]>>endobj
+1076 0 obj<</D[1208 0 R/XYZ 0 227 0]>>endobj
+1077 0 obj<</D[1210 0 R/XYZ 0 316 0]>>endobj
+1078 0 obj<</D[1212 0 R/XYZ 0 734 0]>>endobj
+1079 0 obj<</D[1212 0 R/XYZ 0 385 0]>>endobj
+1080 0 obj<</D[1214 0 R/XYZ 0 126 0]>>endobj
+1081 0 obj<</D[1138 0 R/XYZ 0 734 0]>>endobj
+1082 0 obj<</D[1152 0 R/XYZ 0 382 0]>>endobj
+1083 0 obj<</D[1216 0 R/XYZ 0 124 0]>>endobj
+1084 0 obj<</D[1152 0 R/XYZ 0 254 0]>>endobj
+1085 0 obj<</D[1222 0 R/XYZ 0 507 0]>>endobj
+1086 0 obj<</D[1224 0 R/XYZ 0 520 0]>>endobj
+1087 0 obj<</D[1226 0 R/XYZ 0 734 0]>>endobj
+1088 0 obj<</D[1388 0 R/XYZ 0 450 0]>>endobj
+1089 0 obj<</D[1182 0 R/XYZ 0 734 0]>>endobj
+1090 0 obj<</D[1406 0 R/XYZ 0 734 0]>>endobj
+1091 0 obj<</D[1376 0 R/XYZ 0 734 0]>>endobj
+1092 0 obj<</D[1410 0 R/XYZ 0 734 0]>>endobj
+1093 0 obj<</D[1250 0 R/XYZ 0 734 0]>>endobj
+1094 0 obj<</D[1380 0 R/XYZ 0 734 0]>>endobj
+1095 0 obj<</D[1164 0 R/XYZ 0 734 0]>>endobj
+1096 0 obj<</D[1150 0 R/XYZ 0 734 0]>>endobj
+1097 0 obj<</D[1260 0 R/XYZ 0 734 0]>>endobj
+1098 0 obj<</D[1144 0 R/XYZ 0 364 0]>>endobj
+1099 0 obj<</D[1298 0 R/XYZ 0 734 0]>>endobj
+1100 0 obj<</D[1254 0 R/XYZ 0 337 0]>>endobj
+1101 0 obj<</D[1398 0 R/XYZ 0 734 0]>>endobj
+1102 0 obj<</D[1292 0 R/XYZ 0 734 0]>>endobj
+1103 0 obj<</D[1350 0 R/XYZ 0 734 0]>>endobj
+1104 0 obj<</D[1354 0 R/XYZ 0 734 0]>>endobj
+1105 0 obj<</D[1392 0 R/XYZ 0 734 0]>>endobj
+1106 0 obj<</D[1302 0 R/XYZ 0 734 0]>>endobj
+1107 0 obj<</D[1190 0 R/XYZ 0 734 0]>>endobj
+1108 0 obj<</D[1238 0 R/XYZ 0 734 0]>>endobj
+1109 0 obj<</D[1136 0 R/XYZ 0 734 0]>>endobj
+1110 0 obj<</D[1136 0 R/XYZ 0 734 0]>>endobj
+1111 0 obj<</D[1362 0 R/XYZ 0 734 0]>>endobj
+1112 0 obj<</D[1204 0 R/XYZ 0 734 0]>>endobj
+1113 0 obj<</D[1200 0 R/XYZ 0 734 0]>>endobj
+1114 0 obj<</D[1382 0 R/XYZ 0 734 0]>>endobj
+1115 0 obj<</D[1194 0 R/XYZ 0 681 0]>>endobj
+1116 0 obj<</D[1282 0 R/XYZ 0 734 0]>>endobj
+1117 0 obj<</D[1356 0 R/XYZ 0 734 0]>>endobj
+1118 0 obj<</D[1324 0 R/XYZ 0 734 0]>>endobj
+1119 0 obj<</Type/Pages/Count 150/Kids[1120 0 R
+1122 0 R
+1124 0 R
+1126 0 R
+1128 0 R
+1130 0 R
+1132 0 R
+1134 0 R
+1136 0 R
+1138 0 R
+1140 0 R
+1142 0 R
+1144 0 R
+1146 0 R
+1148 0 R
+1150 0 R
+1152 0 R
+1154 0 R
+1156 0 R
+1158 0 R
+1160 0 R
+1162 0 R
+1164 0 R
+1166 0 R
+1168 0 R
+1170 0 R
+1172 0 R
+1174 0 R
+1176 0 R
+1178 0 R
+1180 0 R
+1182 0 R
+1184 0 R
+1186 0 R
+1188 0 R
+1190 0 R
+1192 0 R
+1194 0 R
+1196 0 R
+1198 0 R
+1200 0 R
+1202 0 R
+1204 0 R
+1206 0 R
+1208 0 R
+1210 0 R
+1212 0 R
+1214 0 R
+1216 0 R
+1218 0 R
+1220 0 R
+1222 0 R
+1224 0 R
+1226 0 R
+1228 0 R
+1230 0 R
+1232 0 R
+1234 0 R
+1236 0 R
+1238 0 R
+1240 0 R
+1242 0 R
+1244 0 R
+1246 0 R
+1248 0 R
+1250 0 R
+1252 0 R
+1254 0 R
+1256 0 R
+1258 0 R
+1260 0 R
+1262 0 R
+1264 0 R
+1266 0 R
+1268 0 R
+1270 0 R
+1272 0 R
+1274 0 R
+1276 0 R
+1278 0 R
+1280 0 R
+1282 0 R
+1284 0 R
+1286 0 R
+1288 0 R
+1290 0 R
+1292 0 R
+1294 0 R
+1296 0 R
+1298 0 R
+1300 0 R
+1302 0 R
+1304 0 R
+1306 0 R
+1308 0 R
+1310 0 R
+1312 0 R
+1314 0 R
+1316 0 R
+1318 0 R
+1320 0 R
+1322 0 R
+1324 0 R
+1326 0 R
+1328 0 R
+1330 0 R
+1332 0 R
+1334 0 R
+1336 0 R
+1338 0 R
+1340 0 R
+1342 0 R
+1344 0 R
+1346 0 R
+1348 0 R
+1350 0 R
+1352 0 R
+1354 0 R
+1356 0 R
+1358 0 R
+1360 0 R
+1362 0 R
+1364 0 R
+1366 0 R
+1368 0 R
1370 0 R
1372 0 R
1374 0 R
@@ -2172,654 +1811,558 @@
1414 0 R
1416 0 R
1418 0 R
-1420 0 R
-1422 0 R
-1424 0 R
-1426 0 R
-1428 0 R
-1430 0 R
-1432 0 R
-1434 0 R
-1436 0 R
-1438 0 R
-1440 0 R
-1442 0 R
-1444 0 R
-1446 0 R
-1448 0 R
-1450 0 R
-1452 0 R
-1454 0 R
-1456 0 R
-1458 0 R
-1460 0 R
-1462 0 R
-1464 0 R
-1466 0 R
-1468 0 R
-1470 0 R
-1472 0 R
-1474 0 R
-1476 0 R
-1478 0 R
-1480 0 R
-1482 0 R
-1484 0 R
-1486 0 R
-1488 0 R
-1490 0 R
-1492 0 R
-1494 0 R
-1496 0 R
-1498 0 R
-1500 0 R
-1502 0 R
-1504 0 R
-1506 0 R
-1508 0 R
-1510 0 R
-1512 0 R
-1514 0 R
-1516 0 R
-1518 0 R
-1520 0 R
-1522 0 R
-1524 0 R
-1526 0 R
-1528 0 R
-1530 0 R
-1532 0 R
-1534 0 R
-1536 0 R
-1538 0 R
-1540 0 R
-1542 0 R
-1544 0 R
-1546 0 R
-1548 0 R
-1550 0 R
-1552 0 R
-1554 0 R
-1556 0 R
-1558 0 R
-1560 0 R
-1562 0 R
-1564 0 R
-1566 0 R
-1568 0 R
-1570 0 R
-1572 0 R
-1574 0 R
-1576 0 R
-1578 0 R
-1580 0 R
-1582 0 R
-1584 0 R
-1586 0 R
-1588 0 R
-1590 0 R
-1592 0 R
-1594 0 R
-1596 0 R
-1598 0 R
-1600 0 R
-1602 0 R
-1604 0 R
-1606 0 R
-1608 0 R
-1610 0 R
-1612 0 R
-1614 0 R
-1616 0 R
-1618 0 R
-1620 0 R
-1622 0 R
-1624 0 R
-1626 0 R
-1628 0 R
-1630 0 R
-1632 0 R
-1634 0 R
-1636 0 R
-1638 0 R
-1640 0 R
-1642 0 R
-1644 0 R
-1646 0 R
-1648 0 R
-1650 0 R
-1652 0 R
-1654 0 R
-1656 0 R
-1658 0 R
-1660 0 R
-1662 0 R
-1664 0 R
-1666 0 R
-1668 0 R
]>>endobj
-1368 0 obj<</Type/Page/Parent 1367 0 R/Contents 1369 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1369 0 obj<</Filter/FlateDecode/Length 94 >>stream
+1120 0 obj<</Type/Page/Parent 1119 0 R/Contents 1121 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1121 0 obj<</Filter/FlateDecode/Length 94 >>stream
x+ä2T0
ä
endobj
-1370 0 obj<</Type/Page/Parent 1367 0 R/Contents 1371 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 53 0 R>>endobj
-1371 0 obj<</Filter/FlateDecode/Length 3678 >>stream
-xÍ[ÛrÇ}×Wì[œªÂÞ¼¤t‰V,QéR^— (°
-;¡žFz ¶ª)NbÛ08Öaª2¡¢6VUA³­P Hª±qsKŽNj¤Ç`KîMÇ: £}i¬Ã`Ûé`æZü_¶š`'ø_%€â¶ b`."é1X$,šX‡ÁNÚ«‹•l]E@Z4py)âé1¦m¦”7±ƒÅÄp[b+[Õ±“0ÎÒX‡ár9«.Ïs·Ù$—®ÍérãÄ’cŽO¤Ç`‘ù°ûm¨Ç`q:Á‰u˜ÊŒéòÄ:Ìøë1Ø¢a¨%Öa°rÌ%V QŠ­BÖQ`†ˆœhž8!nQÀö‰ô˜ªV%Ç: ¶ÃçŽu¬úŽuÊ ßûuU™I6r) )8•Þ8M#ƒ2ad^qO¥i=Æغ„íë0•a¼8Öa*C¿%Öcú­¬ë1ØépfQÙ!&nfÁÖ´WZ×c°²×ë0Ë4VŽsÊ)Îü]
-$ˆc“‰$qJQ€°q(*"¤sÒ,œÔcš?ýVX‡i~ž­ibIie=‘” I8ÒA DŽ„FzÌi êi¬N+Ç‘è‰i¤i—ç,FzÌEY‘¤¡:-²,Uñ¤i—Sªb¤Ç˜V–s¬ÃÔ…§ªcf„–ƒ™U$T¬<7U$I¤Àq A#=¦H,Ãë0X\6¼i¬Ãx‚üìX‡ÁNy q¬ÃP§emfÁV,ÞÒXUE4C[•” \^”Œ#e`1-R˜)°‘˱M[leþ’¤Ç´‹–IJÒ-šFÂA®%
-8ÐAätÖ,‰s;…EâÄz‰ôlͽäX‡iwæôÄJ^. ­ÀR@a¥tŒΡ©Ž?$ç &E²¯é1âNCuIXÂî…€´dà° iœƒ˜´äe#‘ƒ……`Zê1XÜu§ŽUàb¹qr?ð VO« ÿ{ÎA
-$³:)¶¥Ý¸G+1žN8UË81)r*ÂÀHÁ¢L†ŒÕp–kî†,7 4¬ƒ(×ûDzÌE¹“ë0XÀð¦Mì1Xd\„Ibæ¶æ XÁbf„¦õ˜¬Ø×X±/Ï \E‘ý¯‚\ü!9iV)‰ô˜, AÏ& ¶dEìX‡Á6ô\bUÜÖ]¢sIÜÀ©|Æ9hâÄ #ä(±c,Ò
-‘ŒÅöÆ9hÊ” ³e«ÊDV…O¬Ã¦LbU™0¶È¢I`U5¾mT^
-‡"«Ø@ÖrŸNn®æ(…b@~%k±4cäaŒHˆäb–?ËžNA_Í]þŠLBœ½Fc‚ب¥Ý çgOžþˆcrœ]Š(%1{[egÒ¨ÆãÙgÝùržõ—Ù‹~½›¯wÛ¿žýŠQœ£ŽÂ°£‚Ã~8}öêù3þz·{àx˜½Ùô¿Îg;yŽkV5 Ï_ö³›æìv‹~Mí©I©äèÛü“«z8N‚zè£ÖÐ’µ÷ž~hè=ÎæÝŠãpöM&Õ7•ÿÐjA£ä°q‘ARñ׳óínÓ×à°«¿3áÕ‘'­}ÄÓ¾‰º$„Fã"Æ×Oóõ|Ó-ùíµ¦ ®Éëí®[.-ì/ʲýÎToDGÔmNÃõnÓ_ÜÌâv©'ß™ÌûîjEˆiNzqÕ]ïæ>gjDÂÑ‘‹ó°éþ«ÿÄŸ ŸC2Ûõ|‚ÆÚ4)";V?ÊdŨÇçÝúBFGÕ¤3žÍ·’€pNXºBx<êÎR¾§?¦4ùË3è{ªAx«IÞÎ;Õ
-Ù½ŽwWs±
-^|L£¦«Nr)ËÆž]wïç’¹ 4–£•÷½õxXÔ?âñY ”.ö•~~³X^,Öï©$ZEä6ÅŸ/ÖÝf¡z27L¿ñ–Z¢º¶Ü×ò,x÷eó,ò“xíŒèìÅêºß캵Ä1ŠåÚÝv7¿–_c†&œJçÍÁJQéÁ±‰þè¾Î/6ón'Á‹J¹Š'émnݮΩ‹¿Iðh6ë×—‹÷7KáxÛ:ÎC:Ì.˹®‡]U=^A‘)èQÞ ‚ºÞWÝR‘ß¡¿÷7’ùIÕä¤xëœbƒú‰»q‰±døi±»;¡:GKìõ®»T'Ø“<—=ˆ¦hÙ6²ò
-ïãt×mva‡£:­ÍÅw„‚æ@¤EûaÈö9Êu;á׫sý!ߣIþ|%ï˜3ê>ÌmHÑ¢»?ÓîTþrÓkEYpÑ
-'Àb=ß]Œô3ú´mûXî šæRLÂ(‡÷ܪ©Û+÷l‰ƒ~úqþw
-Œ7ELÉ
-°äv45,ÇIrC¤Æ4–urn ÎýŽÓáýžY梛¯ô7l”hƒ)ªšx-@Wk?®Ï6¿SÊAT.[ ut¥>{˜m¯ºM8ÊðÓ2–´ÝÇn±ä•LB
-n ÃrªèááU9õ×’ã¦Rž?~©‡zÕñ|øÌŠN•ðâe¸»¡‘Öø^£W½¹˜¢a¦»Û
-¸k×Ïú%½»©¹+ûyþq.OÑõhâíùžã=>xPR‹z¯ä›Íb“7êM|¶”¼5aýòúø¿²±ü g÷ü´-Û‹”ÌUŒÿ7/8[ŽðŽÅáƒX&¯tSâõü~2ÒZß[äç~öÁÊ[5ƃõ& ò£åp¶Zž{ù_u××Aþ
-å†%”_PI¬»•–(ø¶Ó.£@/þ©jâ»Ñø>JÅžà]í¦ÐhˆÙñxu½é?ÎåÊ
-ü¸˜K—Šq£özXú6ÛÀø4¼ù–-nÕôˆß3»Í‡sö5|î]7h–Ü\³"‰Çß<¢GSÞ1¢¢±‹öýò•~µåÍØûó …Îw*58/p‡è—7±aŒ¦QßÊ|% ÿÄ4Q)|Àé+d—{û°›mú­ÖoþìØޜ㎬Ïñ‚® …ìŸñˆäÚøÎñ©óÀm¸Í‹ŠþšœZÝé¦чn­oV›ÊøX#u€Ue fôÑ,=ölé:ÁŸPÍò׃I¤¼ÅÇò>!£ÀulèîƒÆØé|gžγÌz£ÍMw·=¨Þ¿>#ø>Ùà²û­Þð¡)ˆ`´ê Ä~¨ß_÷;›I)ƒÚéäí¿z{òË /îí Ì—ü]£ mñ‹Ÿ¡ïú%¤ÿË“WÏŽ_Sy|Œa»è.ñ¿ÒóBû!ø˜Ò‡ÀA?äÇ~3‹¥"^“Û^¶cuYjßR'ŸkW¸t=ÃÛ.«ï ô2ð#µBÔ”Ñø~ ‘W•Í÷°Å-] ‹~ÕéŽ`O0ÖmÝííàWòóg¦)JÆ^ o¿Ü€z"ÄžËë^ߊàˆHçAwÞßh_ßoØK=äøîbgJ8ãJ‰wÅz¥ì..pðoCqÎëþ#ž„E¸á•Œ¿_@ÕpøE)_Ý,w‹ëÐÊÄûyW\#>/»™ÉÿX7Ý;¨:ù‹þÝ}.¡P‹“ë%îƒR ð•ó4„åë>>QÔŒ&w“ÀI;·YöÏ­[;nh]sü
-ü­‹“½ª®4|ôˆïåî²bÔŸæÉ×>¸¸ñýQƒ/&öµOüz);øZ©Äß1ª˜ÆÚñ”?_Pçž=ùÏ“ÿÿ5¤endstream
-endobj
-1372 0 obj<</Type/Page/Parent 1367 0 R/Contents 1373 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 96 0 R>>endobj
-1373 0 obj<</Filter/FlateDecode/Length 4622 >>stream
-xÕ\MsǽëWlù’ ö ä’¢H9aÊ¢d‘)]\•AP‚M`i
-›RF*yBœ¼ê‘•,K(/ Tà#×–u64Ž t¯*2Ž ¼0—ÉXt_ˆÎºç—Ê^$ ýáY˜Š ¢äc<’DQà¢D.¬Ý8‚Iã‚(q\\º‘ŒMgƒ(il;3r–°˜Q+J2–1ئC1VmÆCü ÀMœJæÁ(¨s*hW 4ëdxá¨ÒªæÔ(ðFn8:h3ç.2ì]NAè´!’1X¼Ä,a°Í¨?–0ضQl¹ŒÁŽËÞ‚CïUÙËX̯éúÌŒÁëÞªãøê^úXÆ`›ª·ª þ¡ø’´ß
-\ý‘ƒÓƒ#(J”“æ$c°Ãæé¬x䦮ô(© @ÞH«ìAlx%»¦“È8‚x_!.ÃIƲֲÏ;ÒµÚÄŒeÓä\øÌŒeÓF½3 3áUÅWââ“â¸â#W`?‡YcdXH\IøÀÈG2Î8‚³”ñN2Û´²VÊ,¼N¢±ð ˜
-¾_L®£@D+Ùt'ƒ…Íã¥6”1ض賄¡ÜRü‡Õ%Õã\#®!
-|Á‘ lA¼²’ãçƒÕ(H,a,(—cã,c°po°Q{-c°’ßË,ÒÞX°$¸Û–ff ¶Óïïe,V8’]·U©Ó­Nå«Ó @”HªÐÐIÆ`›F–¤óÈPƢƶÏ5ŽÄ&l,c°Ø Kl;k³±Ah@ÜgX¿'rŒ ú7’1ŒãCt–0رÄab Ë‚Åc:Ë,ÒÀKXvVRWÄǶ(])pq"WRþ9É Fql(c°pbØ;g ƒ…ƒ€°Î;Rïã,a‹³%«'VlÛ\L
-DØà"²¿ÒHÆb…RÑ1ë Ö¢ÃYÆ"l.'Çff 3CÎÂbïŒa 1¡
-g ‹*$b9+™·«MµMŒ™·sšy§qšj;G0fÞÎiæƹt
-±„Áj߃X¢
-‰)Î2UÈʉ% ¾…×ÌX¬_zg>6¨¢ ý‡ »WEä¢MÉâ Ñ„—:KXT!Ý'b ƒE‰q|,aQ”¸EgƒkI;ka%~¨"‡s‡q
-T‡˜¾Fl$c°ðqØWg ƒ…«™% ¥ÞXÂØÍ|fƲsâ*œUQÑ&·s®6A#ÓJ¶`Œ#ô_%¸ãŒ¸mg ‰ìÒI0Š H.Ç×9‡à`Ý%qE'rN|œCpZò§æˆ¶µx(µFý³cdÂ14Š &Ô†ŽsÁi2àœCY¤ÙÎ98&Î!6 ’VΔ •gsJ”Ç/äõÏ"›ÆøÈhL7Æ‚¸¶^e¼ŒB—;̆#‚~nbaåÜ"U" #(ÚÅÇ9„Tp!4N­W]ÖÒ?›•FF-ÎGxÜ>Z 2 "QÍRã‚‹5:çP–(Í8‚àÐ :§Ë/© ¦¶åGFlŒ£´|£Âò㨰|çtù‰Óõ:ç0-߸°ü8®ÔèiÜËóg/¾CU“gçWZÙç¸FlëìüRoØñóôùùäâz–uWÙQ·ÜÌ–›õ·ç?abm!£ÒÀ°A)Þ}œÜlf+yFì&¹|žÕò†øÃí|ú³>„Ó:*ã¯G«n­Óãâ{XÕñ׳ۋål£ÃïÓ/Wݯëùòƒªãó/äøŒ|ô»Ó¾ïV?Xu·7ú8®Wm‚;gþp;¿œÉãÈ&Ú2NpÏÿ•Cùâ;xÿ ¸
-³”P,¸¡”JÂ2ƒšŽçëéíz=ï–2ùHÜó•OýXi
-ùVßl†Û*=Åñ–gaÞy‘ÌûÝlÝ]ßn¢ŸDÚƒkÉhùoV—!ÁÛZHxĆæ àVØ„¶šÿÿNàŒ6•¢Þ÷“åë`¨YÛ<9ÏÉòR•É-šžª¡a ó2ùÍ·“õú×n¥Ï"fŽÛ4í«åtõéƈOSLsµ8qÕöÓÙdq1‘÷á&eø˜í¾[™U.óR””{<ÑSŠ’péÛ&q²Ü¬ºËÛ©/ÿ ]þÝKßÏhv÷„؉’'‹›nµ™,5Ñ©á1ì,Ÿ"êá‚ ô#{xÑ݆¤ß—¤#z6›Þ®æ›Oº7¨‹“}ì_Úþ5J*ßäm‰v }s/‡—ÿ¨“A0ÔmÃQ2Å=©ÁÙë—jÝ0K³î¾Å¢Ílæù…ÅêMW²A!w[B†}¼Ën9˜…c8ÓŠÏßFek<œÜàe‘î¦3Ý[Þç‚(žÜÄõ¤ÛÉgÎc²Æ9Ýzqq#þEfDmÞå¨[,¢‡‚בCÓÛÏ]íƒÆÑØ£Å!“ÿ=9 nÑXápþé&Äd-£´{ìs¾\o&××s@õ#¢àƒzÐÃUìw}tv<çkš­áó®j•¢ù¶ÝUoƼ!9•t¿ª!´ ¹— ¨p¯ænCâ%Y„ecñ,#šèiÄ@“Nc¦až7yäÓs]3zEþÌÛÕ|1Y©“Æý^²³ãn1 Á7³¥ì^u××!‹Áª*$??U#
- ÀZ!¢Ò!GÄÙŽ«oW³Õì—ÛùzJ04tÊq:ïf“ËX}Ë' _5ÒìZRnP¹g
-pÑÛ½œLµæÙRÊ¿w§û~‰ôóvÛ"$ºoàšÌøö•Ðn¹ÈÕ¬fp[Ãæy½Ý·5ÉB’­?…F*íˆ Jt9˜¢A¾#ôjç{=¸­²Üèu¨=Ä´‘và=†ËóÕíZ³#D2Ïr§S´ B i¥s NRîØÔÿìæËdà|è®ç© †æ­e™ùûöƒ4<‡ÿþê­B­_qõŽojq‚RávÊ=î©:cS‰Õ¹'¶}††ñåän3Dáq…ÅÇ;©Ã’óf9€úß]Ònˆ\›õ%ùqmÕÄ
-µ±þ5Ž­Þå¾Ëj÷™b°d‹è·¦“þC–¶ìÓgÕX–:ÀM<oþNÏE’ÍhÚ\!¿]uèc/BþŒ¿=`IÞ¾³ÿjµêVú(j.kbïnÍÓü’Å'À}¿¸Ó 9û´ÞÌ¢üu-óÕÙÛîz>‡Ú
-_F{îºOV(æj~Æ,É>l{g­µèà3$ÞÙv;
-¼ÿ8 >1ÏzZ,[¯z²³kíë÷eÓÐ8‘ŽˆuŽNDyˆ8–é}˜mþ¦GAŽì÷Š÷ÀëXcâš›¸fÝVÅ’=Q\Ínßî5®:U¾4rõÝÕÔÿöâõ+Çák$wuÈí·+k‘z·}’ «¸ð]¬—›'(ÇV¡´þ«È€¯¬óp:Û ö³üÜ˾ï>tK=òˆêù®PkM¾%̱¢‘9ï„®Ïîl¶IiR/7 —\Üß}×M)¡‚¼VÝ¢+NŠ;$=h‹›Ùu’½ªc¼cÔo^žœþûèÍéù»7ßl~Ó3¯
-¥ “…]õ~nv—Ç(7Öxhþ"–‚î§ Ϩéîòþºhb‡Ó.P«`žÖ‰¸«¤þða%íá4¨O.ƒRr|²U
-¥`4¨FEéºû½jÚ»öt·Kä·(¸¯CËù´9bW3‡6«Pv»L¾8Ümìm25¥l&ÕÀ5ú!| ñ¡×¶9þÁA¼~Œk¸m‰þ‡‹à(A¿F³s[„½™À/(uæW1í‘)S&š2h<Úd*{glµô.HvoÈöeÔøNA‚‹&híŒò/þ'Ïu#‹¸o²(³T?\x¿Ëò¹ì²‹×ø*ÑN™FV|n¦µ2q$LmW¸”„Oá=ÚÎC=àâ 襵²—ZèZ'+(ß\$Ï’„|Ì¿›JÖ4Ø®Älvƒëû³¥ŠÀׇsûø0Éãà¾Ý}{|¤CQi[±´œÍ.g—*2m ‘ãÁc¢àòÕ…ˆuÛÇå(Þó¶¹{å¾ÐE¸J–Ê=] îXÅn*üá™R%ácÿ)‡÷/ï¡d[ß 
-endobj
-1374 0 obj<</Type/Page/Parent 1367 0 R/Contents 1375 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 140 0 R>>endobj
-1375 0 obj<</Filter/FlateDecode/Length 4304 >>stream
-xÍ\Érǽó+ú(
-þ’Æaĵ:«Ë­1õxr°å&®ÓvŽ ŠNçŠ( ´ç$c°•¸Sb ƒ…»˜% v(§3”]ó™ƒEÈà™åÖ­x#y«Hª@íÞ!44È0ãb|d1Rç¬ä˜¤q
-dN¥Ô¬â©¯¥§>@ ÓwG¯ÃÏMæƒÕhL,a°]7KXLº’ý´×2[w"¦³„Áö%‚§³j_Õ ~âôPs
-…˹³(ðI§³8çPtÐ ÈUF†Ik9ÐiR>iâtçbRÍ*#äИXHX©Ÿ4q:‹s1i+.¨22˜Oòd¬&¢@&%˜tj\Pq'Î b$c‘£‘W:KX¤ûá,a°Ã€óGc Ã@Ê vËXÌGÒ,b ÛÀ{ Äí‹
-ÚUàÚ\‘×òR#‹°âLj% Ñ`ÂÆ‚sIì|¬.©„³6Ó À–”¸°'ã¥ØÇ2#–°,I\§³á¥]ÈÄU¥iäŠR¢“Œ1-ÜsEl˜ÆgÆ[*ði#W #ʱwò¤Œ1-γaÚ&äÓaµ
-|ÚÈØî"+d,**'¬žŠ"hH’S€L«§"qpâ˜UÔW:ĤZV9É,2ↆ2«6%,†"+s–1Xl öÛÅ,T0K¬F%Kg‰å@33‹™:f Kô–ã33^eu)õ–³ŒÁ"¤LfV#@¡¹˜nßžÈiòUGP¶§Ã7’1Xd,ØYg ƒj±ng C‰E)j2–1تž¼—1X8ÇÉXÂ`‘bó|fÂP1Ò˜”±ŒÁ X"Æ`µÜ¢±„±•äˆÎ†cWTßJ~ì"=‘‘Œe $üûPÆ`Q)a×},a°Èd Ž³„eƒ$èKX6Hš>Î2 ˆóc33†¢àþyÍAÚyˆq£Tઈ\«À’ŒdŒ£a% þ úw–°«ÞYÂå„5–±¨B-±„ÁÂVa>–°(Jݳ„ÁBå“™ ‹5ªm,c°].–l¬*¹Ðœ#*9
-j ÛÝ’1…’£b–0X¸‡’YÂ`{ h43a‹ÖÄ2‹È„v¥­JË”Ÿ^kxI\ˆRNJ9$†¤•zœqc9䜖CiŠÎ&N¢ês!k±$ÈXÔ'¹'±„EAÒ["–0T€& ¿–1XÈ4a ‹úÄûøÌŒ¡‡R|¢³ŒÁ"aà5ÕÃø¬Ì*¸ê#‡J †dAˆŠ&lÁHÆ¢&i‹K¬¶ˆ%,Š÷ï,c°tx‰%,j’R‹XÂPzX±ŒEM»},c°(Ú D“7(ñÓjN žáÄûL
-J¹áb£EóI2¾xùý¯ÏTƉ—~ûƒ(óÍ÷ßrjîæç6fáèJ½ížÉ Ù±E’Áò•»Yì§ÌÚius‚7á†9FÿB=}¥[µЋq|zœr¡x_v‹dI˜#'4.q=Ö˜ýò<Hƒßüp‘8¸Z¾¥<Qùj`jja_Ì}~?~l›â¹ëùµlô['ñf¿ÖÚ ¤»ÔÒÊŽÅ—qjîîFͬ9ùºX\_¡ äžÀv'7º6Ü\Y³áØ‹0ƒd²ñq¸¾Nµã­¢ì“€hùé²o觭ˆ.L5rLvJÁ4LŸŸ n­€G­'UɸÎævÌÍÎÃ'*9U¢ªPiQä©
-0‘¥¶¶ŽÌ›Q/Äz¬0ß.««Å6l>.ö,¦,S)Š\\çUÅ-¡.*±’益v Ao8÷Ÿ·º^¸KÙg(øH¯êHø½‰I“k¶ÇÄz·œ{áŽÛVR„õ³áš¿ÎCW‰©ã:n*æfÔ{9{Ž·YŽïäÚÆoØ*¼Ëª›Q¯PYXÁ¡ÖÃÊí¿/Óþ­OT|uqpðnq×é稹ª¸Q!Ìß0)\‡jK&|»cV|‹úÔÜ?¦–O7©_³©bf#M±[
-×5æ– öü
->o\«<Iè¤ÃoøÏNûéÔo+àë?ÞÏ Î‚ú9?¿zþ1×I@þq±Y-qç’A÷p—¡>–|,»ŠÑŸ‘Õ©ŠÏ8¿çÖOô.øÆ.ÍçÑ?âß‚p 壯¦íATãË^,cŽu Üßÿ?]ƒî°ï#™­BqØôù÷rñ!…v\“[ÇãX\£oû6=ŒïêÍ’®ñvlv^›®£‰y’¶ÇîyøìÛ½Ærv5¾Õ·AßUýéô µº:è,ËŽ$0ï¡RÍS8‡²<oJn•$Ø'bש2#·¤Ž»§íå,vªðéu¢ºJ¸Xö2ÈâÔ¿š—¹Í¸Ž*cü°^l¶—KýÄ%zÝÄþÕ½;£(žü»ˆSñråÏ/$PO/–›Å|7n4Ù­Ñ‚IW‡G…ï× ÇÚÅžV;LÎ
-g$bÖ
-qߚλy“ã/¼Ë_“0øW±&é.^4 žN6‚³á›BUõÝoÅT3I¤‚Ss<,5Æ‹å›ß“ÆÖ¤Ì";~Þ¾À ñE{>­†¦KþrÔÅO0†iô:HcäÒf3óû)Äi+dìÆ…?Â8bPY¢ZÜh-…OÅüÒซÛ7Jrç ÐÕlûN½>:þ]ú¬àz¶ÁmÖŽ®\¾HkQ)ú5÷Ô—)æx¿…^ŽÙl·Û,Ïñ¡–¦bœì¬f××ÉV¡ôö–ñ“-©Ó^ÚÃgøÞ?~$ˆÿ‡—ºèð%$þ) ¾~ôòñ£ìÇÍø+¼nötœïW(ꬤCzÚ H
-endobj
-1376 0 obj<</Type/Page/Parent 1367 0 R/Contents 1377 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 185 0 R>>endobj
-1377 0 obj<</Filter/FlateDecode/Length 3777 >>stream
-xÍ[M“Ç ½ëWÌ!§*KÏ÷Ç)µ–,[©HµÑ®K©JåÀåŽV´IΆä®ìŸ Àp(Ë*‰+ÛUß¼én
-î—õëà:éÒY^$ÎA¨šv³Â‘ƒE‡ceÈ<‡íâ lÈÀeYJÝ*I²GV€}••n!I©Ý2°n×–4kÊ9HSÊž¢¤Ç:¥ÆÊ”†~ó”'MYrÀª-Ì<쀑c3ÎAX½ÒNØêÉêÌc =[e˜SÇ: JÉxÆz 6oGm=[W˜×Öa°m=’Êc¸_šÂøÖÖc°ìzŽ%ç¬êÎœS€Niä²,‡w:²¤†UÍ.† †¸ ¨¡ƒ°’4T’ç¬ 7£¥‚Z1°9 œL’rbΚYåÚ9ˆñŠ–Õ†ì´UÖ°“ðz`Ž"¤aÄÒ°iØãÂ"ªXÃÀeX ÇH2M‰åK«m!€:QóËÖHÁÖŒdlÅÝ6 ¯>é‡u¸,k©¡’£Ûª Au˜í ‹cŸömɧ#[R²¶"pM¾íÀÀ\–ÓB*•ô˜¬Ä"9Ö0©Cý»¶ƒåYp¬Ã¤Mœ±ƒ…#y©D¬qÚîÄþ LÀe9ùx©¤Ç [5Öa°m:f&ujø¶kë0ÆJƒýµgÁV ©c¬Ã`Š8Žu˜bJ¯3VLQP‡Ñ Ì˲šDRÒc¨ƒ`T{Öa°u‹0çÚ:L¦ =ØX^æ%”nyH$^õ‘ƒãC"~‘8Ñ)¿'=‹•‚!µ©X!ËÜ‚d`Víª0½’£[¸ 5Öa°ý¾-Zt´Âƒéè ‘“`b¤Ç¤K]ë0Ø–’:Ç:L ƒ¶cE¤–6Î()pYZ"ÂJzŒAËÖa° mýÖVm(pÄAØ  ƒ(é1Ù¡ÆôÆ:Lv =ÀXv²î¤N&€e'‹ iùM&)vˆ”9qì`Ò.+ÉŒ5ap›nÖ0p’Jz E°v €±SàÈhB••A3IìEZ6hàÄ‘ %=Æ e±ë0‰DnïX‡‰m°ø=k,’6¬ãŠÀ©¤Ø"08p²JzŒn‹ŒD2Öa° åçŽu,–&ÎÚ:L¦Ðl¬Ç`Ëš¼EÛ²:y'é;«#@Õ‰\†¸\$Fz ‘ò
-{‰c&e;ÌŽce3ÇŠH¤þ")pA%=V‘Œ‘b[¸@Š­ˆF¡ŽÉE"F[ìÝcE¤º¶¥‘30‘—¥ä‡FzŒn‘YBSmê1XL£gePlër6hàÈ—jlºô&ëâ0ºåŒÛXé3 Ñ,g`Ý.È®¤Ç¤ E3kÊæË
-< ¹v΀zEÐ+pœ\ç`ȵã\;¶#ÔX§.s@(Zq@@:A9×6’kÖº$]€6Œ\¯Æ¤Ð‹Á6¢Ó¼Á5Òc°p«Â³ƒí(ÙvmÆåÓš±ƒÅÞéÛ’ÕÉui“`3 P«GŽÍlœƒ°zA]r'ÔÎAÈÊg#=&=iq¬Ãˆ(s0Öc°˜‡ë0éIÙ§kë0XLJåY‡aL¸—Êc°U7êYÜÛ…h/‘ À~$f¢mÍ8iWȉC^d`n8ñ¿LIiˆc-kiÈÀNüO9ay¬†R/ÔÐc°ØÑ2Çò’§å«K^
-ÿV=ÓæEC¤… ¥­Œc Z—þòo•?0äe¢”ƒbÏÁD’§–P[Û9®L!¿r,2Í‘ø·
-˜ a
-µ.zM̨‚pÓ8ƒà`׎ƒ!tàß:X`(üS}$º‚AtØqÙC9ƒ¢ªF‘ãÁªðo,02ûJ9ˆÁrÚŒ3 ',êž-bÂ;Ê„8¡Ð™$´c!!ÉåØsù·
-˜òé5Lv
-“wD”úÆÑë¶ÀáF<‘Ç%tza?:‚hsÖ4n!a“Ë?´ØOƒg~t„¿@v=ZE¤Ãt=ÝöØ-$ûÁžc›ûîÈÿþò_šœÔýN,ü‘îƒ>Hã
-Ñ‹§Å‡…Ë~õÁ¿&Iɳíò¡ßrÀÀ½CSÄÜ*ftÈ·šŸ¿ÿi±-…×dìÕ¸ó‘úsµ Yþ •Š?”ýo¤²\½X:À
-ÿš°­æÛ[Ù £ª6÷ëë,ûÍlà¬
-#qI^¬ÙUeŠP ÓlîjV»ž÷ND‡:ûš©CÇG³3.±ZΆ<ñH˜~ónÎB#°0µdý`hRÅÿNƃsE8š÷Ô8(—!~ìBØ('žúÁ](¬UÒft•hÎQ‘Šqûb¾øh™vlÙ‰3QIÜ*O”œ†éOrÔ]¿ÅvE
-â{=9œzÖFýGípï6ÎåP2œÌàQåpÚ@CO£î´‘<]-QÑ`ýÚYk#£ñO ¢nt ÅQÑÌÕ æ·›a'+ ÷vE'Üñ>UãNŠn*µ˜fz“”›OY_W› 
-ÃÍ@Zâ€1yAPôÕ”ãÝü¡çð+vÏGô×® YP»Ê&Ó9 ÊÓïï5dc,æüœ¾öÓr鱚$¿L=PÊg<‘h*æÄ)è„Û~´ÁAÚŽ‚÷$dþc¸fUq©åÝìÿÄÏóX¹ÛLf}¸ßßIi³}áSÃÇg¾ß•$èY†]Ö§/¸Œú UQŸšoä‚S§%íNa”¾7EMñeüXÓf¢éë¹8ðˆ®È (/Ûåïw¸ÚTùYè\ZG~£7Ÿ93¸yÇ•èÄÕ‹±níD·ó›‡ùfî'p—TÆJë…+U!\•écFS6j3qÈn¢Êë~¾âeæçéÆï0˜&M«mˆÇû%ÊŒ®¸pâÆ~òÑJ¢DWI¼ì¸áÚË}*‰zLZõýŠ£"+Nœ,ÿAÓu5Í‹»°j[·èP/ç¹Ôm’Õüy4Ñd\HDJ0–ÿå°•ŠŒ?Ø-†õݪß3kËhnúÇ‘p 8Ê‚ŽÔkvnâ©2¤™‘›x]àU§HãLÚ²‘»¯ìÎ}Ú,ß.%êŒÊ[ÿnÃ5bŽ…Ôë~ÿ¾ï7äEHDðu”(—øª ù:n®¡jãwáXЕOÜi’Ÿ^½ø7õ‰Â›- û]ÈGqIÜfn¤k”ˆX|L€TàÍÛqÇ­_™ŒR|”¨Æ~t~M;ç‚w$I§™Ñ?¸„¼&á~ÝgÄ8Œµø3¯f©»®P.Ë4™‡ã©;p5„½!¹ØK,hv*woyÄz'}¦fR©!妧È+*!‹—¹ÂËO»p—ÏÒ¯¾t¡rxx …Äd<[?’«ávJK䘬7Ãö™),ÿxwÒiù@çªÜÁ÷¤Üt¶ÆWÞªçë~ûSö=O-Ã)‘àÝËž„Èr¼§¨äHªðåjÙÇuŒ*⌃E¼…ów¯ækÙ?ñÙVø/Q<[.D;×sù~¹_¼c¥q§P†kãR|ù§Y*_þPõP³iaàb…r}öÄûˆ•ž’#ªà¤¯3û÷ª«PÅ?÷<¡³ªBGfjzàGŒz¦¿‹9v„ÿa;H`´Õ¾xFv Ï(4}=_­û$
-¥¼ºw<_~òb¸Ú&9Î2ú‚üp§gü×ýî~%áÒŽäé|ñ.ÞVáµ8wqÇû;¨óís|TÊ߇á{°¶À÷üU>>ù<ùÝ9íU?÷‹}òlXܯQ·Õ’nA÷ƒ”™4iG-È:ß_=ùדÿ; âendstream
-endobj
-1378 0 obj<</Type/Page/Parent 1367 0 R/Contents 1379 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 228 0 R>>endobj
-1379 0 obj<</Filter/FlateDecode/Length 3497 >>stream
-xÍ[[—ÓF~çWè-ìõîz侜 ›¼”Ø–ã —ýõûUuwUÉ6™YxHΗ>uwUuݺZü}Ï%)þwI%y•Ì÷ÒIŠ'òÇ›çô$©Š.’¼¸@Ì“‹{†\$e9© fÈEÒæ“Ì`†\$.OG ¥ÖnR˜¡–^$™kFc- 4¯Æ¨¡–Õ¤63[hSOJ‹zpåˆ+K-ÛÑÌX*ÌËI–¤BCBX—Nòð&DCoa¤ËšIkQCc,”
-Eñ»<qAëd6e‘4ÍÃa†ÄÀ‚5,`ÉÓ³ÅLèÀ€¹¢!k–-é< ô„ Œ˜ËȦ´4ø)s(Á †Z“DŠ²nË&Ç„A·ž`ª#æœÃ†*èV­nJÉ„ mB›(ȼ¤ìà%4ŽýÁ“ÁcˆXK*WÌ0ψm™ÔÒ@«¶¥¨ƒ](ÊÏ„Š°¶%­
-æǹÚè 0ç
-Ò›€~`š½1¡‡‚RÀtÁ€–¦=®HãŠhÓ`mƒš|¾µ4к…uêX¦hSvvEOˆ0ƒs5‰b†Ce†I´4 CælPCmkX‚A v]ε4‰ZÃ%Ã,`ä~l‰ž Y  S16Ì8Ž-Q1C‚WG΢ ¥½JƒzÕ–N ¬`BU06LÅü8ˆ&Á²`BÇ Û­ ÆÒÃÇÅ- &Tú€yq3dHS:ŽÓ”'!"+´--½H ÚGA- ´¨È54ö*-IA- ž7B 4§¨fÆ([ƒA ½À(¶[]—ÒTÞ’ZC(ñ„h>bâãË›RwÚ:.`YÓ%
-úHð²Õ9:0`.eÖ´4í ùµ4PøŠë…¯S^d—Ï™ÐEÖR=£˜!1)‚"&•–¦%)GÔÐ@‘¬Z‹š )%ÉÌ–šQ@0¨¡ÉÌR„Ž54m·¢^2QL¨"æ3@. ¥!NAöiPCE--jh–ƒŽå
-"Gþ“
-ÂÄ×,sh˜–ß$ÐÒ~ZhIP?-¢Õ~&tÚ€¹"…-æZš¶5§Eõ
-„óªù2¡
- ˜K3¸?¹u“0·†Æ´¨†`Š(ªT؃¢††¤ð((PPf)k}Ñ;HOKã4£˜!±¤#oSÐÒ@YŠú%‘WÅŒ(É,¨ç ` m™b†$P±  ¥Ö)B¯A M Qp5¨¡¡!ð`Çzv+_¤zþ˜P  i©M2Á )ì
-Ø #]EV­C-MÂT¤kh†‹A MÂ!)ê…A}L†]‘ufL0†Ä´($ €”,³¬âȵ'hœ!C© 'Ë8Ž¬º³Ð@KcEðVy F MJ DmPC“ÿR«¨¥¢vl,jh S£±†
-˱ëzB9j¼LÇÞ8æSÕ_Þ²ý@ÄjÉ•¨3cõk2¸¯b†¤]aG“–
-a%®`††ŽÃoÇ{†ŒTü›¸äŒ‚Nx‹¥ˆ}ª+ò‘É”·òÍ#°Ä–ˆ(…é d =º¼÷àRGš\^Cõ¨¡°/u‘\^q—g÷/§ïæ]2\'‡å¶[n7ÿºü£àaŽF…ag »ÿøÃtµíÖô9 æÃ$W÷¡ê =Ã_ñÉÛeÝwWü&졩Û/‡÷Ã’°m“…Çïºí§®[ÒëÐF–·áùïýòjøÄïãÜUWÔó¤½äõP%eñÕé’WCVÈ´o}ñ³
-<ÍVtlîþ ¥k¿Íö4Ÿ°~Ùm¶ÁT©7äòzB{*m‚]ï¶41¢oQÛüᘢ\T…ìY•â0/ûE¿eëg!Œ¿˜éîè§K[Þ¥üضjÞ^<›#’øü1n–EÓ›d°Aœî" *úã^HÆ_O7›«w4Y „ßW_.~{IOq變h˜«ùî}¿ä—)‡Èj8;ÅOÜxé%†;ˆm÷²žø '{ùh×ϯ‚£Qö¹Ëðp ¢ ϲÄÈ"Q÷X$ç• HLwžúA ®MÀ«'>Üɼ•¤Œ2Erúj>íQ–|æÈf¶&YÁ.? ë+_4“² 4¸:Ac´uyˆŒÝr¶þ‚º…“;Ê—E$N朣 ùž6ëœô±ÖÏã}{ÞmEùå°<› óÝ‚
-õ_QÆ
-âjºÇt°¹¯×„à ùöCGÏàÐùÆ—N[ªøøM\„7„QùM¢K]Ê 7Æ¡†UtsúãG!T¼…춉BHõY¨„€7Ì‰Æ ©ÙT“Ô‰°‘w°c[øÉ#Ës‰pÒKñv3}ï-ŒN‚wWjßÙ9ãàŠã6FÙîåÅvXÇúÌžq.¦‹wÓ_|hBŸMO#›nýàÕt†úÕƒsp-'‡³Ù°[Æ@§§•~y=¬rX@ hëx
-òÉ–bŽgÞ»§Kvxt~â‘"yùäákzˆžz%Qà jâøÿBõÙê
-}¸6Ø3åçH j8 ŽMàõn½6,¥)]oÈéŸqÎЕª¸`‹qpöùYÌ9J0Jª8ªŽÙ¿Ø­VÃ:&¾ÚXŽØZ@bNÝúc·f»EMN§ÜDH24XÖÞ)×{²Í>t Nƒ¸BÔôìÄý¦ó§ó͇~E³Ã‡Ô;¶=‚‰¼É±¬ùæÙczwv’†³<­ù³êÝFß6®\Áçb6þf=F¥d{ƺ׈ˆ…X
-Ÿúí–
-+¸tæm· ‰óU·ŒL¢—µ±·4;è¬ÀºËPëÝ–“o~ïë"6%nµUn±¢o~3Wß0P9ôÁ½“|0tŸépb–8æ…Ï×Ãnåƒ v5:E²˜.Q-P{†
-Þ„ÿBš ø$øNv«ØƒO(ˆQsJD~óm~fŽˆÿ>ÿýòœž.
-àŒÝÆ3ö1‡`͇ˆEÒÀÚ »õÌ­è¶H4› Wþ8cÖ{Þw0ÐHê|üŸ V:.×ÚЖ½•nñî ½š¤­•Á0mA
-endobj
-1380 0 obj<</Type/Page/Parent 1367 0 R/Contents 1381 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 270 0 R>>endobj
-1381 0 obj<</Filter/FlateDecode/Length 3564 >>stream
-xÕ[MsÇ ½ëWÌÍRU¸šïSJ¢b›U–͈t˜ƒ.£Ý¡8öîÌfv)9ÿ>@7³\ÆrÅ»ÊÖ›·i
-h¤›¨Žû!qBhœÑ|X
-ëÁBÓoòB¡ŽkªE•ÊÉdâý8aœãjšo©œ˜LR-2C²Ð¢)©*@…z®ªE8ICR&"¶$/²
-A¨ãêœÆ)g ­áþ@ŠÐ²a_”͆ 5¾¨á‹À¨Bu -Jö…Ha„:®I`¶B9ɦ1ÍFIšgì(Ê uœLM9!RÒ¨PR„f1;J„2B—Ä9ÙMI‹!6/0­ÀŠX,
-r•ˆeÄ:N&§œŠ5ZG…’"”—½Ê uœHQÎ@
-(ÉBslfÚ6<S*ÔsMýg ¥íHZÑFóB¡Ž«¸8WÎ@MÊEeHŠay‘°I“BÉ4pƒ0HÃø‡Äñ0ÌôãX—3 Ê@l(
-}3SÁ®‡òa Åš<IBÌ@ByczvÅ\ø‡üB—5u tœçêï œ4™;1lì áH€ ÔqXÈ Âdª„w>Ï:cÆ9®É¡gà $ÏÓ~ ¤Å`ñÊ°䋌·Šó…
-¬Á°?ÊiØPY‹Á"YaÍ(+ê !P-ê0ê8.X,'%-&u¨B0¬Á`±³°$ÂXƒÁ¢>Æ„k0&ÌÏk1©C§ÌÀŠ:‰œ2EAÇ%•©’Ó„k²` ÆK¹à ¬Å`±Ï ŽŽ•)ÅrF•)1SrœÛúJZŒ)!MaÂ5¬¸5°cJ()±Ø”å“Ôr¾å"€¦d ÄòÆ ¤Å`QRUpÉ¡¡"¶¢ÆŽëp$ ‚XÇ91JZ ±ÈXƒISr®a ‹É–5lCÛ*Œ¥B;A s.vDâ
-Q¾¸ù¿PÊÕA)ñ
-/Hè|œ‹ö·ƒ_z¸¨÷!ñq–ž{«ºj^à¡æ;ÜN¼•¶cŸa£wÝîv-å*aR—U¼<Iš»­ ©­í….×Ðgÿ`íÐdl´ˆxµÝvêÿM’.n´«ê)Uƨè*ñîB¶JÝ{0Èhçã´o?ôë~Ï>Å5lݸ4`^óXD“Fܧ'ƒR§7YœþøñýùÏÿ¤!t#ðtôpös꜠:‹…8L͵¸8ý‰”@/[“lôóÐû“UéOzåû^¯ι³r=[¸4ì]óæÇ3vM(4¬˜Gþ³×M6›{Ñzš{æ]·ú¾åÃ,Z
-QÜ„Šã=¨ÇK‡°Ú{zÜßHWbvØ<=ûö‚ŠöSìÛ KS³ çã[o$ËÄ2Z’ò`[b÷Íÿ¶]öÃ~ÜÝÐH¬”¤ñ;5þJõ†
-§ßÃëqì N·“;¥$2ó\£Ÿ.x} [“©KLÁR½ç+?ójájÆîQRJe‚~ô½+áD­÷—í@¢Â%ñ P6fXyÑr®û·Ò-Ak¿‰½“ºx)Ö²E÷U;mI(–zRû.ºwC·”0›¿ª£‘{uøê%ôƾ\hN¯A3ÑŸÒZ.Šg¸ÅW™Ž¬K??]®èú±!pïªMÞÞ²€ñ8¿³€½õ³—œ‡ö—eõdìÏ[Û˜êýóa”¤í9/½ñ2¾ªS”:ê\Âñ/ñ¥Ž:D²%C«õˆÓçK×µ_´~aÓ‹N2ÜýÍò,-É´Öü¯dýÒT3W»F•¥[k}Ú¾šãÀm»&´„Ñ. YîóMÇÛ
-%¬¦£|ÿܽ ñ&Õ&ä§nÚ¡«ðþé‡khOö²ÂÑ•÷]ãèv×I¾±ýå/ß ¼¾1ûü÷(jp|£sg½Kr´?oV#¯Œ&Gô;ÑæcÇëK#$“í„,ãÚú¸MÒºšzØŠD’ý5‚­ÆÏÃz”öµeüʉ>“ö­m:¶øŽúk–ÕðM8:ÿ_ÞzTûe±éÎàªtž®ú
-°£)Øj¨<6É+(ôqo·üs|fã^âËgä·Òÿö¯W‚½5ƒþ0b—ÅÏ;Þqø­žñ£u»ïvŽðí‘ž:/OÏ_žó&Àµô¹d·o—¿²Óí^¼žÆ ?´ùím¿œÆÝxͲé›é‡è{ýSú²íÐ
-²wÝ0·Ç
-T‰šˆ^ß~äåI_)øî—zå~‡¯Dg=·â¯vXã‚žaφý4®nõêÆÇ ˜ÜéT9©*S àš`>ýﺡ›ZÎøƬ(}8é‡k.¯pý›Ôîá{ÿŸÿkÕèàê™{®Ô›îí|P` <¾¼–ņzðiÈ×®mŽZä~¥‚%Z7 ÎUøÐØ'ûnšÆIÔBtz€¬|tÚÿõa’qì¾s+…è1wÔ«=ʯfÕõ^Š{
-endobj
-1382 0 obj<</Type/Page/Parent 1367 0 R/Contents 1383 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 287 0 R>>endobj
-1383 0 obj<</Filter/FlateDecode/Length 903 >>stream
-xÕXËnÛ0¼û+xLVøÅS‘GSôP müŽã$,+õ#@ÿ¾»KjIÇ@íÜ: ``8ÜÑ—ZQú9PB¿^ S‹I;•„þùñGDmü¶Â„J%0·ƒ¶Â¹ª.¸¶B)Y…‚,1°ÆU¾d l׎àEKÜ
--Õkj„ Ð@º®a€‘Ä”z¡™ä…µ} ˜8¥šJ‹šÉxE*Ër`â‹Ùd¡ 5ˆµ8
-ÇT]õ#׳ñã¢[ÍH@k7*¤É¿º )h[ù~újÜÞIÖTF6iæjº|MWÓ•Ti¸:öŸ2S9¿±¼
-µƒ¥0°%À-˜UdWë”ç—ÅzÙÝo&ëY·ˆv#qìD÷ê''Cï·Ò×Ûé_¬V›ö“§ê;ÏuÙ{#Oàü¦TVÀl[MWqë›êȹý•|oD7»FâfÂÞÞß è÷‘VUúM¦p:¾ûW·Á>ƒ½'ÞT&n¯½†ôɲSm¯!ón Yº{ö²§gˆî‚Ý
-¹Ã ¹wc(>P÷V¨~7†üaò§gˆúÔî–k3Ô¼Cá0Ct6:©ç¥Æ»[!ø„€‹ßþüd¥¶¯tåNâÙª’/ß<Wá°˜j’'ç§i¶üÄgŸ¡o׳ùíÁ¡G†þ àiüš^! |gá³·7ðÞ²úˆVW¶þ_îT¬ó›&½+À²7Æí<¾+Ü^|½¼ß–Ýót²×ÝdÓÂKÖ¸Q0ðmÇÁì¡—§¿ÎfèèÓhð}ð‘åtendstream
-endobj
-1384 0 obj<</Type/Page/Parent 1367 0 R/Contents 1385 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1385 0 obj<</Filter/FlateDecode/Length 159 >>stream
+1122 0 obj<</Type/Page/Parent 1119 0 R/Contents 1123 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 56 0 R>>endobj
+1123 0 obj<</Filter/FlateDecode/Length 3614 >>stream
+xÍ[ÛrÛ8}ÏW°æeg«ÖŠx©}ÙJìMÖ5“ËÄJe_i™¶9‘H¯.Éäï÷œÐhÅòLªËž©Jtx »Ñh4Ìÿž¤Éÿ§I•%ù$™/ŸŒGc<Ñ?Þ½ä“dRLñç2ɧ£ÊƒEröÄÀeRMv8—IZ¦£Ò6œ°Ó¼Õè´*G©ìÔ@4g£©!E˜ñtT ]1&%€íH•u.rVú[zT„F¤t¯‘2ƒ±u$¥Çr2š`°rŠÁJ:X>e ²Œ­2ËÙL9—É„=GÎÀeRW°Iä „˜©¦ZLSg0ulšÓÔeJ‹@‹šC
+ ¨b
+ÌFä \&Ó ûÔvbÀ¬å†t”2·
+à€è4@t:æT(g :…v0€’ÒiWd.rpˆŠQ§†ƒQ¤á28Nlh1‡¤«EÖ YUâk“²8¤˜+úaä D§ðß±!-‹~vXƒÁÖü+vìÂ+tº²à Äb&«Î@
+TSmh1ØlBÓFÖ`°EMûEÖ`Š;ÝiëÄŧãUc¸C!@ü BñuA9øz€è4Í1å‘´,¦,·¬Á`'ô¡Ø&CÇy%ŽY×H
+ì9/ ’S`.¢<²ƒÍÍ k0Ψllk0®0³†5˜öçJ‰¬Å`+º“a ÆV‰™µ=[Ì´Ü‘Ùb°ØžKÓ³Å`k¦&q\gd8w(´¬“\€9Bl&Üô#g ½ fÒ†ƒÍv›ZìL Uµ­D¦\vcv,³#ˆY V21÷®ÈË –¥,eÙz g –«XH^Œí/¹2°ŸCä Ä€²iFÒb°È6àûÚÔb°ÀvìôL].‰íS&@„ƒ2ìGÒb°“ ÃL‘˜OÖ`°ð涃Š:*”ÅŒ=Œj±g§ÎØe±’¾äÔ¾ºã®0ep@ì!•)²"ÉÜ.CÚÂy)&0®lg údב3}Â…JCZ Vv½ØT–CVúÌ™¹µ²ŠC¦”T^5"d§ŒY‘t†Y 7ÛL€t!¦"«’ƒE¤µM-‹|†Õ¶nPä,4z•SZ2h„ìV̬¤k§ã¹¢ñDi=—â¸5•´Ýܺ"+’Ý1çXV€t!,˽4rRVqmh1M@oM-‹ž Plk0ü AfX‹Ë c[±Q*Ù"c…–P}>9‰B¡ò¬‰ig „Ų+ i1X |±['&™æÆÅñœ_9Ñ)< D>Â^ØÐb°²P k0â Ö`XObHd¸ÈHéšN\Q\Ï9ù”3PÅUÒ‹ë[zq#ëÄ ¬/²£g„((£¬§cYtàT
+‘â\`ÄcMÜÙ
+)&oWÃïí|#ÏášÅÔ??æÛ%úl6ÝГeá,wäèaþKz ^½”qöIKöµ~i:ñzÌÚfÉvØëºxPùo[Ík'lœa¶˜cjž¯7«ÆO ‚WùÈ„¿­Ž<Éhí£\V]NGâB£qüëeÛ·«fÁÇ(xOr?5Iׯ7Íb¡n‡\3Ï«G¦úDtDm"ÎÖi¿Y ÛyX.eýÈdþzº*Ñbê$ýgøÌgYæ$O6!6—iê~rêf‡Ïq6®ÆáyÓ_HÓñ¨¨CóY»–°‚­!v A!µ¨½3|-ÚpM‘Ÿ¾¸+ž¼k§N¤c¿ø’Íu+FA=y]6 ±•MôÙMsÕJ8F…ªD¼’`{ ½îF4>ª1ç!h>ßv‹‹®¿’­£¨{}ÞõͪszqOǺtZ!Ó7›ÁÌÏî›tîVdîpî ÓÙ-o†Õ¦éÅQqr(5>­7í¼£þÄo&wöŒW%£çñªm6â’Ȫ°©ïóÒõòœú0ã®ý¼%ó¡¿ì®¶+¶¨S¹’ËnÑJÜÆa¡*`ïŸRà#H1aê²!®¤5Ò•°¿ Û•¨gƒSqíV—aÒ©B­B#Ûçnsí;ÈÇÁ„°›f% ¾N°¼ xebLp¶iV›°j™—… ½câ]CM@gÞlØ0n½ýòܽˆõpËkŒŠ£ô;5¾\ .¿ÃQÍ$íæbÄé產¾XUŸ¹Ò1e8BÚQèÙbÓ®z,¼Oí?ù¯·‹0HâüJ;—¬w§àˆ!"%l2;{tÃîpç Ö¸hÚ¥ËáyÙp(C½Q´0ž;[}¡xÈÜ5OÝZ5˜ÉŸF±ëfå7 ¼š{e’æSÓ-xbç¸},BúïôÆn§!o¤X·«O­ 8 –÷º_§’õ±i=|ŸeàÁ=g~¥#Äà¼?^íÉN¶}÷­‚4,¶ù¢ÃÙNc?9”K¸%áõOËÂÄô=nñ'Êï]ô·üþäÍÙ?DEgɇËWò +¡Èƒ£}èúéúX÷<~=sñ €¦xœ}¼ýö›³§™<ÅFŸíf­E
+c³à–ÆþX’aÇ !㮿½år”ŒínðáºqSiG8•ÐÇOjª0èìŽ$ñ×™ÑN†þoÁªÐVÿE±‘æ—•þ¤î,Éo9L9éš«~X‡EUd‹ˆKÑwzڼˠ÷ûÜ‹²¡]çgóáÆ%l¦"‘œž¸@ŽjSˆí÷+Ü·÷îÕ@fîøzÐ9@ÀEÅ6œ÷Ä ™6Ã|XСpÚ×yI~m?µò”WVa…}»hßýfð0«ÙÛUׇË0Q†5±7ê¼}ú_Y'v;Ò“s\e·¢Óq ÁÓѤÉéÛcö†ËCÍÒ¿[É¿ê Í9$ª…üÂNÓì_‡ùǘbÂ@ãk”ñróbÂÈýª¹¹ rÛBç{ìñ}³tÉ"¨õLýéÄ·åZÜ÷S“P
+’§|%Õ°·ÞÑ-‹:W«ÁmyøÎ)vpgÏWÛîÂU+ðzþýw@YAQMþŸÙë¤[Ï·ëµÿâ„uûGxìĪ%Žœ|z`Æ“ºáVIw@|›#ì¡e_Pýé*ônMó^¼ eíg}?lûyû“Ì/ÊÚE¸™Â­β>#©NÀÜì÷kóÔë-ÿ€Ë„£{P\üQ̉¯ªtƒMξôs±¾Ìò»lQƈþ#fr†=ÂGȱZò6©$/kC ø‘¢}__N±§/jÿ…¾E嚟È×òá ²ðÅXrë ±œª\ÎÕxʘ:zí¿gO~{ò'sGendstream
+endobj
+1124 0 obj<</Type/Page/Parent 1119 0 R/Contents 1125 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 98 0 R>>endobj
+1125 0 obj<</Filter/FlateDecode/Length 4231 >>stream
+xÕ[ÛnG}÷W ò°p$s®œÙ—…,Û/lÙ±´ðK€El&$Gá%‰ÿ~Ï©î®*JôE¶e#»@ Ã3Ý]U]]]U3þý^žðÿ<YÙdÓŽÑá¿è^ý›¿dMÕá¿‹¬hÇ̳Ó{.²º=¬çà"ëªÃÜq.²¼ÊkGzLv|Xî°†ÁŽ›ÃγCÚ²Þë1u)®)cx‘•y¾#rÙÐ ˜°…` ¨*€fpp‘+<bœƒ0CqX8ÎA¨’Gz ¶ì¨Š.é1ØzL3ë0TÒÀÆ: 3äÅÎXÁÍŽTƒ­ÄÀ:³Ç`»ÑŽºÃÀeµ#U0pQ`¹EÖÔV
+d}*”Ç`!£—Êc°pK¿®ÇˆU£Ž€Íì1/þ–†Òu%ž—Hy´L‚½3eáXž$é1 ÅÐìX‡i(:œc¦¡õ,b¼B× #õ‘ (gØ*‰PcY„)èc¬Ã`q•ÖžuËæ#.«c= ÿÚa õ°ó:6ˆŒø g§¡²ÄÆ!Òˆ ˜‘ƒ•AŽu,nR¨£{ · 6Öa°ï7cÃéA¸ãe„ë
+Ê Àb`ÁKÓHÁÂÇ1­õìxDW6,Š “G¶a9S
+à¢b`ˆ"JzL‘xØPÁ"Óô¬,Z  ûÃ&-"&uGƒ‰ƒq:GR „ƒ@ qZ
+”0X\q¥ë0غ€lÙ ®ä”تB€lŒAŠÄ”ÏH)ó7Ç: Ö†H:±Çpî-h¬8wÑ„ŸÑsœ$º:Œ‰ÕjÏ:ÌWíŒõl=Ú–EêGË
+rË&6,c¬ÃԇѧPÖc°pðܳƒm*z…u,Â)öÀX‡ˆá0•²akqb$•Ÿy'´âŠ¹ÃPÁ;Ö0bZd¬ÇA!ˆ¬c©`Â`áóØzc‹Z`gf‡yï0PØXyï0
+Çž‘ã BM6Œsj²¨4Òc°ˆpN]ÒcÇ: e\HÇ’l%T3œ–È!¤@/å„*ìQç „!±c:Ðc°’`9Öaì‰ä˜Æz ‘‰Wš6ˆª<Eò7õ0„ö “?e ÅÛL¹ÌâlØE7ÆÄÇ’ÛtR5Æ4Pü ™O¦@³›‹™Á’ŒÑÊ¢y½*å 8lªç ‚ëX„Û8ƒ´ ÝL9ºXu Ç¿UÄȈPÊJ"*DŒ£‚ˆÆ‰ˆ‰™Œ3˜6Y9M
+µ]ËLèPWy[ +ùqçÁÍÛÉRF£
+êÒŒÃ2ŒÆ¶ª~¹Ÿÿò£¬à4NÖ¸Z ›a:ÌI #¶Å™rŽ“HÏOe4æ¬ÒO¯gË ˜™¿3r˜¤“éÛÙ²®è<
+vxûÿ g?(:gÓÉ"§¼IÛøª_óífGu†öe4Ü‹ÕE¿â4x;£û~{Q¾Òˆ ‘÷}ô¦êì
+ߨ•‰Yø4÷IŸf)°æóàJo„ýÚú¯eÍÅ\>Q °ñwÖËU¿êßÎÖ³ \Ùu•‚Ä«~r+Üß媽©jPé
+ÚÌvç¯zÜ,¡ ÅW:­æ~ÏC‰$‡¾Y&ÕÏVÛµÄfHzM§Ã6Vͨ´X …27FK*«ôþ3Ì–iI¨ç³Tyóµ…æú/ìòÜ·ÎÔ¨+F1„ÞÚnå˜:ð—k¡âÙNBŠp4= æ %ªFó=ùXÝëò®nϨ/ÛÜNß^,`äƒ'ów?Ðø¦Q³4:è4w®5ú;uÌÔo½‹{”RÆ°‹æƒ”÷G|ÉÙ¥ÛrŸ“¥EØäÑûèö.Ê^Ð]mé>åËXC ý嶙I´î£Õò/WÚa‹P à]™&­ûŽóãÕj)
+ÊDÍÜ÷Ép‡¿%õÐŒÓÂöôÝzÓ/¸Wh(Û¶¾æ³é,Tƒy–|ïS–¸œÍãÃVé€ß¡*I\â§Þy_¿„pŒFt‘ÒÆ®rIß³{ÛÏ¥[ˆw vAMC+‡™¤&¨OåÄ»$ìM¿ù—ø<¾@é>7°¾G¯[ý\ÅRŸI8/v‘¯Sq$­\äoâ
+»¿<,3àkÐoØÔ¨$y=À›:ó甑hìEÒ8.R/ã)êÄUhA­ÿI‰ñ Ž®á“~ƒ¦›´¬Ñe·ÛüÙðfX†ò_†ÜY ]I¾{ ºº}û…Nû¦->Wýpß~5L1Û@sk¤¥¶w(ÔówŽ»Ôð_’­V±7Ü6¶‰^<?zzò¿ã'g¯^<;Üü%§—_œÛù Ûg­àì}Þû«¾ ïΞ„óÆYøAÌB¼å±ø>*µÀnuHùp-ÑʵDø%¶>•ÖŸPMƒiðݧfŸŸP÷±ä^€Û<å­f—ÕxèêZŸPO¿DÅ:=O8áGjVÍùoö²L8^H©
+endobj
+1126 0 obj<</Type/Page/Parent 1119 0 R/Contents 1127 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 140 0 R>>endobj
+1127 0 obj<</Filter/FlateDecode/Length 3757 >>stream
+xÍ[]wÇ}çWÌ£ó e¾gö!'L“²cä8¯«ÕÑî(ûö¿Ï½Õ_wÅ*`@Âö9†»wº»ªºººªfüßGE–ãß"ëʬj³åêQ>ËñKüÏOÿà/Y[ÏñßUV•³ÚƒëìÕ#«¬®gs᮲¦š•Â \e]w0Nà*+ŠvVÈ@Å`›>Êfâ´„U3ë!j[Ï:È \e}Î%íAr1iÙPÖH*Û–lSsɲœµXržsIœV 5™S“HV&k>‡=a3Ì9g?®È»Y“µ‘TŒ%«Š»Y[²™·P
+¤½iÓD*‹AÐ"uZÔ´´èñGcÀL“ <§€Á'fë¹b'fë°ý‰TLqèÂ
+;/Ç
+^eeÞÃÀi¬S¥ÊÝ.7É€©’ T©9.r±d9§ž‘TLqkÌ.¬`ŠkÛÇ:ŠÎ<¤é¨¨
+$v§3'N „eHœ@,XTÔ2Nª,N2ôL¬`°#“°‚Áöfù4V0,à¤3ÓÝkz†‚‚‹:@=â´Ï!nâb\Éã™H›±‹GÖ=h€s·b°³cQ0³R)qJ³'Ë!*…'MNÁ`Û U ¶ï±¶°‚aœ’‘1±æ5~¤u:z§\ÕqE9á%×4@N Å-q⩬[2U ¶*¸%‰ Ħ$V°;cP&²<sƒ…ü°pdqò¬Âñç¦ÍéØÎ×7x‚Ó½*C‰ì
+ÛRz1FJ$n<s/„ö.« ‘4 Vu“,è
+ÜΞ$©˜ñbV0X„¶^YÁ`;^¸2V0Ø9c«°‚iÁ›žXÅ`qÁLQfg_Ü ´/ìÎ
+†™\T$ÅÜ€â`¬b°p,˜8J¥,¢©*¤FÄ9‡ãXÅ`‘å©ÌŠabœ«VƺãQͱœ?ç¥;WæמëùHâ:cÏã@š8`°³Ä
+æðŠ±‚Á"ÿ‡™ÒXÁ0¢ T¬b°v—$Ö©Š„ÃBˆù°S5A,Š« âGR1YÆe‹;
+"¥±‚©NNu+,*‰ƒ±‚¡ ¼-ŽULSØH¬`°–EÉXÁðÌŒ½cƒEš…YgFDYf/ðSx“šQ ÔAÆ7¤b°¸~ lbƒ…Œ up´°q¬b°ˆð¨Èº@ž»
+ù*F ÀL*™ÓûË{ã
+kW«Œ §¬Ô±‚i…êP`Á`‘52V1ue"Ö5­KæaècÀÎF‚Øp›5r!®•i b°È®±dª˜Ê0Ø$V1غÉV0UMÚÎ ¦ªtC+˜±”Ulb3–ÒÍ…å…T`qëbð¸ªåCM yíArÍ„°Cä`Â
+7°ŒÓ&5&õœ›%r1)Î"ìIÅ`‘Sc[+ØÙ
+*Í“óN»Á¹X:°·FýI ^òI#”'Ÿ±NÏjÛ½J¢ÚCR˜ªöõk¨é)³Î'OõŸÓ¸ŽzÂ-#¼"ÿò®zzƹÐû¯ã!}¦!;ÅØ£ž®WEôò —½ÍŠ†EûP‘Ë儵¶Ù(âMŠM‹õ…ɇ26â—q}1½³ãÀWsѨs>¬—š³{ížö!o•fNiìÆ=¹úÝ„DÑÓ‡­M@¤yy®ÃÝ•ÿš×áŠ>vþêÄUÓÅ«swµ0wAfœvv;,÷›qg‹±CÐùíÍþÊåÿ›°º õãÏH#Ú¯v¿çÅGâD‰¦™ŠçÏŸÏ(^U5Ñ*?ÜìÆi½¸&½GßÚŽå´¾_ï7 òdÙ¥šÅ“/Ök
+t‚FC
+ƒÏ×»Ít±_q!É°?Ó_[‹'2rh0¼¦½Ý5‹B½r¿/_ÙΡ  ž«g¯cÃ9ÌÖÃîÝ´yã(òÄxÈc ÓxcŠÒ¸Ú=Ú©­¨‡†oxbÌŸ¼Ö.ûöŠß£(Ÿ:µSᤪ’ܧ‹•KÕ‘3µ!úiØN×ûèŽèÂÁ]]‚ëŠô\SÚdZw“oö7'.”—~^¿=~1®÷¿ÑŒ¬ºãAƦ_[dÇ×-óþ~óHo‚¢Ï“ »åã«iëê+¤ ¡ úT;ùqaçL¶èt&ø†›õvÆ GËâË„pо¼lÆÖ’´'ѡдv¹ñûÍ~/O{‘!Ñ¡¼ëíAhyeîRý|/‚|ä¤^Þ[ÏÑCm~5Þ8/-¼±ˆéÓ~;¸©e ðo
+ ORÄÌxÍM4ÂkVæ#|¸&P T_ ýÿ¤¬$Á:ó]¼˜BÅ…°Óa÷ôùv+i‘—E«¡S„Pøíbé¦`åÛ?H6tkë[ß‚À›¬(öâå÷?¼:3Åâëåè:ÈžbÔ¾µÈÃÁÖÕèøHJ´‰rã.ï«öŠÜÑ3NÐÿ·Rk¥ÜIãÊÙÐøzvj¶/C/åÅ4½q öÍ¿†ïÜ¡Cÿ°OòËs/?^­ÅÃ":à%_è*Þ1ïÃýì58lh}?½c@哪©ó ªCoNûå~m ÷–C˜ceæUœ:U»‰CR¡‹áæzrUŠ§Ð>ʶ;6rM6|¯ƒì±…0Iÿ8Þ:ô¡e‘Ý©Ê>(ˆ¾J*b~̺¿£žo]YZá‹'íDøŽw€adz»Bú¥ådå™™¯ñ6LJßcZ¤yCag¦d¹Ÿ‡£•eÑí~9Y/“Uc¬x·Ã°º¶nÛñ*½ r¡†q5c¯¾Š]NõN*‰f?oM@tgÒ9ú—ä‘ÞŽoâë íªüƒ¦Ðb&ûz7.Sá‹· ¢yìâ¢ðå{ê+mK˜›µ{ˆŠ/oœëC–:„öãûõ^%‘Þ7à#¼Ôã˜,ÓÅÉ‹×BvÄŸgò;ýZúŒxËu×Áúp( æ»<5^õXó"øxCñ63Oþ->Þ5üÜWû¡s6wÄ? ðò!lZ›&y¦«2죓]ZTü¸ Z„VöϧÏÿã|:ô?›Õˆ7E.¢ 'K¡ééèªM¾ÀŽ…°ø°µeðAÜÕf‰øÖ7¾×{²\úÀ†/pSl„Ñ_²6jÛtý¼}Å‹·µ]÷k°Îê>é””ˆz½ü{Þ…F7^“ÅÖ籫a‰~æët§p,Îoù«Ðú»‰wÎ$ovüš<ö^òH¾;Œ‹ëéµ­«Wõ'4•½N*¼U+KgŽäoaLó<´ÁbÇ,¦Îú†àNœ"`§’3jOçxðÙ^-|«_eÝï Å/­4dÞåNG0½[›íÕh/.Q×ÍWï×µðYϧ«å2½/ÆÍ°ÜMËGññešþ· Þ
+ßWÈáSþì\™ÎO­ÕÛ¿ E*²¦"Hšh8ÎñÍÌøþê•àçÒr•=»eq|5ä“Þ÷©ê´ù{
+›ÀÔXRµéb¼ü=[|'ü";~”>Ãçðe~GMòž°ŸùCç(ü¿§DY¾³Ø,âK|k×ÆíŠ/ôó€c7*;Tkë•ÕxeûFÇãå2}ƒ<+Ùðj±}c!ýïøÁÌÍbƒÞ<dt®l¾Œ½¼9ð•qÚø¯a‹£.µØí6ã9¾ ¢9²•Õâæ&x& Ý~¨4ûh§éüky|«é¿ªÂ;ã¶Å§t¸øYÕ“—OŸd?n¦_M³gÓr¿B‘K,‰³f^d']>çãã8Rö¿Ÿ=ú×£ÿÒ
+ãÖendstream
+endobj
+1128 0 obj<</Type/Page/Parent 1119 0 R/Contents 1129 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 186 0 R>>endobj
+1129 0 obj<</Filter/FlateDecode/Length 3296 >>stream
+xÍ[ÛnÇ}çWÌC »šžû<´hÙ "…!i(@‡årH½»Cï…Šÿ>çTßjH
+¢rI öLMw×­«ª«Ç¿˜$Å“ÔY’WÉ|yNS< þÈ'IU´ø{™”õ´t`‘œ(¸Lšrš+`Æ™4 ³p ÆËĔմQC5µ.§…¦*¼L2ÓNkEÕÔ*rÁu5^&y^ŽÖÍ+2)— F¶p¤‚µ˜VŠ¦ Ø5†‚Ë,h'Í2ŒAHƒŽ<¤rΈv`ÚBx(¾%§8PA Ì
+j>5œ`ÚHUÔš†T»lrü õTЬN—IQ@;‘¦à2isHi
+Rȸ'՘ܤ£¡Ø)Ý$N¬1¨Y=bIcP‹ :Rcµ®¡åHÕ—u›É¼DõU¥=¡=èD
+Z|4(ûÖÓL–rÖ@ÔÓBO¥¦*Lcr©±
+Cå&Q-KU!ºkˆ[–"„œ²f )H9¹÷â@AE¸ª4UaPaa&Öì¦ ‘jÙ-˜ u
+v#Ä´†.‰ƒZ0 *ªÂd)‡½UaPá|ÐoXVc0Œ 
+ŠD(œº¥;µÈÚD$j *Ü óFªÂ Ö õ¨vU¢?zB.@ cR$j ªdEU˜,13+ªÂ VY
+ËZ–$и¨œ K•-„Ñ©#MA.ɉƒ
+Ÿ‚zôƒ*EQFT0LB‘*ìf­-l1òIJ« ØÍã"MA,‰œž)¢ÆV£¨vIpEW±kˆK:š]#ÐĤ0QŠ”ÏY8PcP‘ZEµKVä‚® àH9m†}‰sÚjDµÓÊ.{VI&€Óžb ¶N£ˆv Š ٠€ȣ٠™"7MHÕÁ 1§
+"oFÙÏfË‹ßA@n‹Ì³± „É ÷Ì+ ÍB÷Íì<Ã
+qæðí„iœ2½aÿøÏ3²Éïx+
+Zêßûë ’GpXtÿŒ ÉÙîæfX[÷Äéû6ÚcÒwü«(¢}Ž‘©†Kë\|­Ä‘ü‰ýû1<~í+ÃÄrœë~hd‹îI7ç×û*ÝqŽÃ‚Úo×¹­HØcóž“üû†¾ö§ÿÐ(«¾ºÌ³¾àd¨q¨QBœuÛ J¾8HŽÖým·–MÆMûÇWVÈxµßA?ü Û+çxÔl6¯Éžó³à°Ð¸tø¬rN¡pj%d·ˆÚå4IHÌ’®Ðˆ•Òb¶¾¶éb{µ[^tRSŽRÏ ù‰»5¾”Û{™Q×à*oO¾ìÅFfÑ>¼¼ô¶ñ<~è>SCˆæ¥ñÇ[µ!ëÞö¢#ÔÒ¦õ%&ê\N0zö±_]ŸmnÃuTPȇsy%{xtxòQÖ‡!RW=¡K45'Ÿ ?¡ÌÿøJ™{יʹ ò r„ͨܚ½õ®^šF„c;IùÜGyœšìî;^Š/Z‹ ßä"Éù0,6d¼—œ>Þ]j¿¸‘ÃÎäNxúøi&|BÜ&óñ¦‘p“Jâeý+µƒÃZî7ø~…¯æE’j8æ»/¥ ·)*Ôèy6Ëc4¼Nfó_q
+µÖE¾7{< 8Á OÅ*—|“nº5 ¥Âá5écî9‘^gS=(êxtÂANÕZÉÛEó¿ÈÔLï$ìQŠ¸”7ÑøhzÔÏ®WÃÆn T{ÊL‘­Güjí¡»=Øá^}ËO^ïŽcÜ(ß9ê.v××.óâÜËCW!¸}ž†2êf= '¶´;7ç®äz„Êžì•VŽü^–èý`vb»£¢èr hèQù3vrÌè„àÓ춓Pž!îb^È–­œÙ'ì”*Ã}©"ÞÝÜK40ŸÉs´Šc«qö@N^æ ¬º¼m­Ñ(ÞS*ö‚ëùoÅȇ/´Ðæ±ÄÑì/Žç,óݪÕ=û»íí ÂžÞêOæ”ß>Q›“éIcby¼xhÓÌVö€“B,•è¶¾\8uÒt¯C„<ÙŠ>â+g½tèÎæëþF2.•ӉݻÒ&F©JÆo×ôÿ?¢-ÄV†·~j^ÞÎVs×d‡ÚÑ™ÒhSÒ—ŠQt'‚v·Ón¶£ r9J ¸[ÙÓy8rú…_V
+‡­äçÇÿ¢RqKÚ„îïnãœ@Q+]à<Ê·Ñ´iÛ§q’¶ä„úB¦R]¸Ã †Ž¹ì6öL^S‰22¼cby !ä^‘õ:›ˆŽù;MÄ+¸[pñg›ÕNÖÃmiONhÒ‡vÕHGûN¤;gö¡üY"4c~Þ¸F<>à~Uå{k{n¸ŠÖm‰Ÿ›–p³º£_°ÊÇaý«­ƒ°»_EÇÔ‰„ïdU^_g©‹¹ä´[âšDâba°¼ il·
+’pî]É[#Eb|‚ð}°‡]ØIe°”XfKÛôÄ—U•o žáˆÞÏ­Hº|ö¹ßÎ?‰¤h&®Þxx¹ç~ÚÚf>ÒÐ~w²ÀÙ‹_Hð¥Ã·Ç8~„Îï{\¡,\Cß:ìÍw,‚n»#ø$(X䡃ÅëÁMFiñøˆ¢óþ3dÊÃÅbˆŸ&àHZåÎÒÏm$?ëš—è:êZï´Ûì>Ô…3öÇü“/ôpaçíä'{©üTm ^ïê¶P¼ÞM2ÚýK/48÷æqcÕy« ƒøåbà•u\¬#;.§Ýo»~Ý-qh•°Z¾@e¬Ù€ZÛÜGAÃç]¼3ó'¶sú»M‚È,á[¸¯“p…â?ò 3ïý‡åÍ;|ü(%±{›ãÿw’xùMÒáûïd½_ºù69æ;$´Ks^–1T×iËÏHú[Æ©Îþyð?á }úendstream
+endobj
+1130 0 obj<</Type/Page/Parent 1119 0 R/Contents 1131 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 226 0 R>>endobj
+1131 0 obj<</Filter/FlateDecode/Length 2777 >>stream
+xÕZÉvÛFÝë+°ëô‚4
+3–žäö9rì˜r’-DB’`sì¿Ï½¯¦'µ:m«™IÎItqQ…÷êUÅŸ˜$Å¿&©³$¯’ùê$¦xþóþŸ$UÑâ¿«$/¦Ëdv¢à*©Í-NÁUbL>5j Æ`ËöÖPÁÖõmVa°m3ÍõÌ
+¯’,k§™b5[ÖA7ª£1tMÍ­™óŠ/ç%„Y%M5­….˦•å «
+¬=¯ ÛZ@JAYÖBqXe¡¼1Š,EiD?|o
+à¤
+b`JëDRc®8gˆ¬6g ; œV4¶òÐÙ# wÁ<Y!ú׌B 8ÐrP€¾ÓÈ\Ž\ÁÅA›Är"LŽ´!<©Q€Œ‹vŠ€œ‚4oàSq Æ`1a¡X5—” Á^&EYËÆêÈeÍ£ó<5$[@JA¬iXœ‚ø^QÁß"©1E­áþŠU՘Ñ,++òQ$Á"Åam#«0ÓoykfÁ– ‡8ÖÚÌpq ,Mž … [p8KœÔ‚Àe­KÜôu È5b sD$5æ6øddEœ¬f$Aœ_¶€Ó*(ù¹TÒµ‡œ”ñj EÓhVa°u ƒ«±
+ƒ…ã·šUvÉr¸Z«1XØßËW°²õMÊM&@VÕÇB|©1Ø‚­…b¦:Õ c%^2ø
+bÚöåc°’I«fp3b =½“=; Ë…sR´ùÇça\E§ÅD ¢ÃË.‡‡­“ûöìèÄ÷’[á‚èB^@¯}^Ø,»ùîÓ^ ¹)øœñfÜ.lr‚•êÊùã¸å»Ø
+¶&wúõ|ûy³· ™ÌdžÙ¸idzb¥îÃßÖQ1-?0É°é‡AçWý~ïÍK´דù¸<¬$x°Ã*J<É¢Ûwœ‡Y1¨{¹Wò§
+¹sÕ󙪭Oò{VyzNmU¥Ð~üÏ|òëÉ&4TÙ•3s¦þ¶FzølƤ\WU¸Ðýý2ŠÕâNFù°ë>Z¯ÁFâèrI´Y°A(^U*6ðÕk¶ïæ¿ûàYhŠ~>¹°(C;³‡eo“ º—æ1Â%*ó'áÄá
+i$\mìÆÃvîúÅiÖÆ
+°‡¨À1å\bP´œM¨lÏž‰‹ R?Jð"@ù=u<‰ß[Äý{ô‘V‡»}¤_J4L­ÁÿbË{Z+ ­é¸•ëH^ x¡³}Óל•&¸cÖ1§´1Sü0Óå™èWñ€‹qÓËý.qÛô»’{mAtÚü
+mæ׸11åwU%X9ÄQÈ-üU€Ê-Òv0Ôp¥ÎoºÍÆ]ò çàwk΄1¡Š—.‹„}—?p/f3~<!7ðrz„_*Èo¤p<{úæÙÓäÝvü ûòäÅ8?° „}Ž-}aêdRã ¯_s¶—ç'?ü•D¬øendstream
+endobj
+1132 0 obj<</Type/Page/Parent 1119 0 R/Contents 1133 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 270 0 R>>endobj
+1133 0 obj<</Filter/FlateDecode/Length 3205 >>stream
+xÕ[KsÛF¾ëWà»jIcðÆiK–×±ªâµÖ’W{ð¦@ 1 pAÒvö×ï×ÝóhJt¢d2»U‰>|œA¿¦§§ùbüßDe¥E4[žÄÓOü?ÞÿLO¢"«ñÏe”&ÓÌ‚Ety¢à2ªói¡8—‘IòiªÈ´ IÓ|ZaÒ:› xRæ’³-£"ŸÖQÁ€81ilh 'eÒ¸†ˆË(¯H4PÁeTVÓ\q<.¯‹iBãè_x\€Wã}“qUÊ–ÉÓi‰—àqb\ %'㊚•gÁr^N<®‚@ôCâddü)g@\à2ªb;p2.Kƒ]rá}–«Ø%p2.Å.dÏœAg¹Ú~ž“q¦d» q XÎ
+Bs²fàDXd–@’~iEö°ëO
+’†Yƒß@“j ¶Œá~Å* ¶.±Ô«ð2J ³žYc°A«1Ø2èMRiŒ8àÔÆjL,å@ÍL1dvd֘؊ÂÈ[Cc°H8ÚƒE$h}5^F¤Ò¶ÊYAl!”vÅ“ ‚c-'žôœ‚αc?ÛqÖ‘žÔØ;6°âX7VX…áœ8§%ãYÁ&´ƒ)Var,­Å* ïAô‡™†MAŽõ¬Æ`ñ® ¬Â`æú½ƒÅ焱
+ƒ-‹Ý™†cM¶c q¬‘ŠV…¥°c„óx¥{NA¸Ç¤ôJOj 6­ÉLUlQí²
+ƒE½C„±
+“óh¿ ¬Æ`3Ú"«0ØŠègÖ˜\Kû‚«0L #Â~¬Æ`BZ*Á¦´c¨±
+ƒå¢)°âD0Õ^²î„ug¹ŠÊÔs
+²ë`ÏÁu’ë8 xRc°(6 l`‹Í}‡U&d󄱃Şû™5+ 5°
+“s89Va2pN‰Í³¼—%(—¨C5™`<6a€0•Sª¢.ÉÉ~IPcRùŠ¤` 2ž4@LZîp
+bR¬àJ Ô˜^ÉÂùi5‹ý;Õc†…°1@\?VÄ-¤jÆ/¡'WALÓþHÁ"²3Í* çˆä'Ö,ìYhVa¸$ýXu:R\q% H`I$ZÔ,ïŠU/EìC`?±¼ÙÉ/¶„;•Š˜©ºxRc‰X…I$ŽÏJxÂ!<ðK9,g°%×¼_IìÊ@d^Aþ%ƒ0Ðr&¦­&ñ¤Æ'­ÈãU,Ž0o`&]¨Z,U¿¦’³DVbZ$‘‚X0
+cM ò3†Bhœp…4à½
+"`-D/'ãðV²’*84NA»ê'ãR9¡à} DÀ¾ÏA”“q¨Ö(`yÝ<Ž2ƒ@Œ£r>p
+òœÓC ;H~b%<©±óD*âÄr`âÓŒa@â—°ùñÁ›!ÿMN!Aª•=^eÈþžR¶Ø2p,ïç¬7º¦ô*fp’àåMç2þÛ38ÇP,äT8ðß,Õ XK¼P8¤éob°ï À…`ÈðŽyyuòâ5¸8ºš#£¢ÌA3¡Ì¢«î›àñìÙUóiÑFÃ<:úMÛoÖϯ~ŨšÒ¨‰6IhسËfù©¡_ y§uŽ† F«vœã²ég-q8"[®[¯·-O
+±Ò²”ÇÓCþÏ$™(‰¸%«
+ŠBjÒælX®š±[=Kviõ<¤ÌúÝVþ‰ˆæ¿fŸÛ i– Wf‰uÀ°ÚtV[il£'<ÜßN
+™<øà}ÛÜ°"X“ˆY‰²u÷?/œÖ‹ìÈ\"tÚP#Bió¶ùÆÊàx^¤V™oËN\…œYâx¨%HêÉ=e~né1ÚdeB-YZÿ‹öK»`‘Ì’Zž>˜ð ¾£ÍÞ@›¯¬âÇÙ^×\݆WªÂ8³AmêÜFßA=qÿåÞ3YXÿ—‹]@ sSØ(;[tn¢Ý§ÊŽ,Îp>à“«¥¿W,¡N6—¿Œb{^âÅ´òÿfÛw=ç´Ô+(Îù྇…­CT1C§Zx‡nH\çÿžòBϦuérÙéjÕö7Ý7©YÐD,Ë£LhÓ)NZo8†h¥.†qÓ|êÝæ7¢q,=¶úå~<˜¤&I_¼öõj1RÉ•do.>ü‡~ÁÇä£
+1¥ŠÕbÂBzÑ/ÏÞ±ä8ŸùUó¡ï¤ PÕšèð:U2•’_ýó\|€É‘­sm0':.ºt½ooÞ4\p¡%å/]¿Wàlä
+—è}»ü46ýÍfr~NΣ[®ÂîBú]?ào“Ʋ4Ây =•ÂöÈ <Gº •?lîÚ‘Ÿ¢t«]upvþúÒ>¬ÜÑ šíì´±9ì‘A±AHèÓ©ôð¶™uýfXßÑÏ24éüÙÇ*òw"èÐV0V£ šJw—¬'ǹ“3Rû.gµõ¥›çþítÁé^/¸7¶€CÞs…Z4kzrÎo>¤"Y`Ó̸ƒÑlèçÝíväBAuìøÝå 6} á–ctÝŒ+šY×TnG+£og²ÜÑ}òsÿè{ÖþÑã'Íè5èà¸ãhÃíɸ3RN‹Ô–¦v!9ùœû"4KظŠ(]uË Y³ß TgóÍ[}Ð<¨ÑÓ{öùø¬䈋,äË+ëšÏÿF?ÇÝm•8 ìuNÒüK¬
+oyÄ›¯Àê‘èÇ&SNìèU»ý¡Õ+ç·}ëʤüÒ ]÷ë@?•H¥ëÎÊŠeZ9ˆaJÝӦ炌ÚîEÑà“2‚ÚÕÏ‘ê™é}éë]Ë åkˆ›½Vûø̾ (ÜÓZ+}iÇ5ZAŸ“õ¨Ñí™Nb½Q׋ˆ¶ëÖµ`Âjy|Ìs$£•¹&Á>›>|æ­ŒvÿEöÍÀQÀ¥¢„Áƒdr+ý08ÇçÎh5b³ǯØ/À›±ƒhJˆÔÍðµ_ ÒŽÂÞ‚ž·µæ×aüì?:Éì ³½NÚÙœP•”¿»æÚÊ?qF#OûÂóºë!:ûméÐxÚ'Þ5T¹‡íŠNÍhôEVg;upÙ­Ú‡µtÿè}KpÑlÚµ$|}ç“ÌÕÙÅ‹ó Žr܆n[XošÙgv°^lóqXòC|Ûçû¶›Ãz˜óÜôÍÚßOj§4]*i­_µ‹Ö6u°`&ÓÕWé·¹½qÞ-l“ÝL ¿Ï4sèHa]5ë5‚—W76ØfwMËFÆÂÀýåSkÌ;êä¾ÆØ!v
+€P­_ϯÙQz«ÿ®2ÐåfÖ§)lô«æIþ@‘ˆ¸5Á#ª¶;k$zqê!-¢tYín6§9v* §¦¬gðñoåyÕ2Ü *Õ¾—h~ªó?Õ{ Wãé±ÿ£œê4ÁR{„IóLN”â¡ËvüÒÉe}oá·ø —`t.á¢ßÕOœBöéŽ{Rr€jÑG”`\ì}»BÃÈ.\þŠâåö–à Šû²`ß;ṳ̀ÜsU­#ò‡òêy¿‡›íŒîÀȸåuuä!åÞ}·Õb"Âù-üç¶odž=ná+ã
+Ù®Ÿséƒï¿LeîNx@äuQNxÕ~Úr—•¾³ßI„á[\K?éû§M²ODS;öÞ%®¶ÚqFQ_=ñÆù'51iI?Á‡#Ê%§CwnÙã^ØŸÒ7RVc£òý çÚqÛûÆ?¾·ôuÉjfíš u˜â¾É©‹$¿“.šÍìNj¤ô‡ït™•]e뢙úU×ÜöÃÚú ¹ÿ½…]J¿ [9¹°Î²G­ý§êÖ?Zcçò§œª<¬%ðõ•ìNßëìýE²7kq?{Ÿâ×eøöÂî
+Oÿ3kü‰¾®¼ÂiJÒØv½Iœäêv‚§PBs%|ùbè ¾ÇsÝT?Á1üácßôñGHôå`…ÿòŒ?ŸÃåäåéÛ—§ÑÅ8üŠVfôj˜m—¸þn\!“Òù€*2®é#Œ/iû«“üçV\dendstream
+endobj
+1134 0 obj<</Type/Page/Parent 1119 0 R/Contents 1135 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 283 0 R>>endobj
+1135 0 obj<</Filter/FlateDecode/Length 584 >>stream
+xÝ–ËnÛ0E÷ú
+.“…i’Ç´*ò¨»*ÐÖúÅUR–„Z²þ}‡‘ìÊÙUp¸suDÍÒÌÿœA@“C_0Ê0~|±¢e…¿=Q‚ê Žd_d²'ÆPȼLö„sö˜kt¥ &C•´K‚¢%.i­‚°Kf²'%§"ó<'ì3.œ‰ žç¢ç9VQ9'<ÏEÏqªÒøa=/"·xŽKžçJp%u )'<ÏEÏsºJuQN$.xž‹žç”NuQN$.xž‹žç$¤º('<ÏEÏsÀ²º8‘¸à•÷]EÏsÜduq"qÁó\ô@#¡¸ºàM ËeÏ‹½µ¿Ðz™ÄCˆÁ3ó±.¶»ŠFêWžE´‘¤þé^ îêæåØ’ñ•<ÃÜót_¿#¥ð¼[j°°ØÝs×¼ ãÔ oö2|wp÷ðåC‡üÏ'’bSÓ¿46@•K´=]Zwív'—uìŽ ƒë–ïW·ÓlI^ÒJŠ@
+Á¨p+º¦?•}¼ÐW²€›ÈB®: É>¶ê&²Ð7‘…Ywüc'ª¼‰,ܧlµ_ZéÁõ/-w_Žmj…GFw¢€Su¥cpwöVžÎ×Yû¹;m~ØÀA.­ÿWs ³àˆ[-}}>gC¦OÀIZjßðÿc{»³Ý•aBCqÄÅaJúeÿðõñ|;ïía&ÏãáÜãøÔÌÝ8Ø,
+endobj
+1136 0 obj<</Type/Page/Parent 1119 0 R/Contents 1137 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1137 0 obj<</Filter/FlateDecode/Length 159 >>stream
x…ŽA‚0 …ïûï¨g;æ˜Gˆz3Ѹ?@ÆH$"ÁÿoN^LÓ¤é{ïk_ŠARŒÜ sˆ"MpÙA[XŸËl¤Ç„f ió+”Aí/GBh„årPC8$›¸yײÀmÚ'œ†øîR?UÓsè·¡ýFÙ.Ñ]Æ‚õš ©ê‹ójqÖéùÀ?®õ¤½·òxyÆœƒº«•ã;Òendstream
endobj
-1386 0 obj<</Type/Page/Parent 1367 0 R/Contents 1387 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 328 0 R>>endobj
-1387 0 obj<</Filter/FlateDecode/Length 2699 >>stream
-x}™ËrÛHE÷úŠ
-oFaCøöfF¶ÚnÅX¶èÐÆ„$X$À@Ëúû9™E ’’g¢#l_ÞÊwVeú?G±ð_즉N\¶9D~éÿøúù(Ž‡ÑÄç“hà6.‰§ÑlÖîFÖ»ñ,á·›N¢ÑôÔPl\<Ž£¡+NVŽ&#åFã(Ù¡ ܸù,Š-7’¥ãš›ˆ'¨Ê
-¬wŠÁä/.ê„"ãTÇz'k0fÙ‡(¬Á°óš ö™YÉ\‡akÔkö.s•Ó+‘Ï£"ãrÇzkpïr`½Ë¬w1°÷.÷ìÞå½lÂINýzÖ»¬Qa–HØ0Š¼ËÃ2óˆ6°ò'Èr` –€tÖ`X®s´M` & ÎF«Y]Žg2þå>:G½ ïrÀ°ã '˜a †¥ÿÆ–5Xò(×Ò k1,cŸ·RoWìx*¯#3RQ¬H2– 8°ÃrÔÅ–5Xr!5²Þìd°?ejÄŠÔì0`ÓCˆö¬žºñhªÍ:“ë’"éS¬âÜ–bE>š€a©¬Á°D95¬7Ê<Ó'âPò @ô²´ƒr™E°'-£òž1¬ÁbT. †5–w š &Áì ‚íY‹a9‹­]‹åò ó2ÈZ Ké¬fŸcÞIÚ1·ŠúP\=ûhÄ‘S é`â9i
-\€’¤1• \€’"¹A.@‚Lħž3Ž…qà4ÆŠ›
-‚›§~.ÀÎÍÀ©›œú¸
-zÎ@8~f vö „›è츋£“OظÅßì&Ó™[¬ôS¿dǧ˦­Ó¬ýcñƒu¼õëÞ¡<aåñ—´iÝ·í*ms¿†SM×»÷nñ°s§»{¦'-ú~4{?»g Љ¬¸wzåAÏâ¡hܲª§.«Öë<k‹ªtÕûëêvqÅÏ«U¾rmånÒÍ2u«*Ûmò²Mý²ŸyíÚ‡Ü=çiÝDîܵõ³,ÎËfWçPiëÒõzoWï-ØM¡²]]£ç­[îZ×T›¼-6y£ÊÔ™uZߣüGµ-xTæn›× ÎeÀMZàDQFÄ›»MEBê<C¡Ã¥fBK|/Lwþ«’eîîª]¹rxùжÛ÷''OOOQ#‘FU}‚UõèÍ™ ûÛ¦÷yä®×yÚä®ÉÑ°ÓjàõÂ༮ŸÿÕ«Œ~W‚Î)ŸTÂ_t@AfH=þí“üùò›ûœ—y®Ýõn¹.2÷¥ f|ø~üùúË÷?úà“ÈRÏí³T’½p
-QÃTQfë”ø©h4X_è¦ÚÕY<!¥½N)@Ÿ»ª|·.(NªýJwuU6½kî4Ÿ{»ÍÉývµ¿:‰®?>äï­Óœ‰Ë'Ÿ¸EôÝ/‡€tmº\ç×Ǫl©¸–ø`ŸtœG}¾Š²iiDÍ°hæyïh¹¿ª'iÛs¿Ê¥Tt‘ÓS7§N_¯Gâkž²-¤÷H†ôÃËNc®FîîX¯Šò^W~(Ê´.üÂw&QÜ;|ã +6ÛªnS¹ió틺ÅÑ(r뜯›Í’*—wÅý®öÍsW¬sí±Cc H<ÏTu/ád©Vý0ÓÇ®eå6­7þ÷îü9T8‰ÜM›Ömž°H[É?^y=Å<Ú¶î88^~¦ÅÚ´ôÞ5y͇g^á–rH‘Ó¾cweñËeë‚fxezþJì®®6œvgW7oÝíÝí=åü—þu¹Ð¿’Ç·îêæ$yëò6‹¢È(?tŠÿÿànå;¿ã ©ÆUå?Zw[ÕÿÔ l§Ñç›m]ýd¿-ëê©‘0ŠÒéñ «ÓfWäâg‘?I¿w/bäYN£uÚšÝVè@«éµDzíº®ØBN̦Zïä$WO–Ñh½Î4««¦qÍnYæ~»,¥¹nòVK²Û’ÙÛóËNÅ®Œk¥oÂÚÞ9@îêë¿?½úvýÚèŠ]]œž_¾J
-ýò©ª3É°¦Wö7‡–ß²ì-m±ßh•‹ôÑ°»W•L6ùo%¤ü—›1]VŒ1
-”®2ÎLM’Û¼:xRԋݺ-¶ì>fX^ߥÙþL°Õ§LWÛu•=ê¹rÈ B›Næhå½î5
-ø÷®È9/¤x7Z¼PÓ“ýïÒ¨÷uEáúbÜN kuaõ¬h²]#ãõEºù¶¹o "?nÜ›¯ùFòrZ– Ø,—‘Y§ ù×;› ÜoEÕÜÝ<—Ùÿ•&νaé»W~Ñœg•»¼Z¸îm*+ñ÷‰ïÇ13“ýØVÜ}dØ_ÜÈa°bgRòŒ ýª‚£ˆ¾$&@·{ÜU֮͌µ)Ãô—´¼`>ÈÁx¹p×iÓ<UõÊýYfõóV¯P4—\‘>ù4Û»w¢G? 3ðì}pÄw€ÙlÄ­Bïs.Žþ>ú/(
-endobj
-1388 0 obj<</Type/Page/Parent 1367 0 R/Contents 1389 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 380 0 R>>endobj
-1389 0 obj<</Filter/FlateDecode/Length 3545 >>stream
-xš[o×…ßý+ÎSÑ>˜æýR (ä\±ãÆJÓ·‚"Gc^”á0¶þ}¿µg΢”F7Kkö}Ÿ}öŒôë‹Aêó¿Aš ÓhšV»ý^ŸŸtÿüøóyo’¦ói¯Ÿvi0žö†g´MÎälØ›‹MDév:ê œ5 »^²†wi8ê÷&›}š,zS™íÏ0? f ËlŸ§Œ5Œâþü’íË ‚£x4V8¤×à.'ÊJÇÜ¥ÅqãBÍh„²1È×
-YÇ°tœ{•Š¥Åµã8P®_Á°Ã‰²\XðìCg ÃŽ5½MÖ0,‡bá¬a±š…&k˜€è —u¬dè*²1£ÆLqƒÙT’­Á]š/ÔÉg¥¹W8ƒ8ËBHö;AÇ°mõƆ]Œ/dsm¸éò‹Mœ@Q–VTµì8Z±°†¥¸¯ Ö°r¤²°ŽaÑD&:YÇ°s¨Â†ËÚžb„‹—;6\4Öpë²±ár+›],¬ãÖec#„N–ñ¶ˆ ošäUvy>$›˜å…`ÂÍ&.†]¼°Y4Úr ]u(D ÃŽô’g¬a<f9ÐÛ¯½øDsÄ´fу ”}*XŠgøj¬aXv~œ*²†1;вSØs*.¦Ù(P˜5,³C%ª°†aYô0[XÃrj~Áf³±ÌCõ–”WùmÁ°\?xÏk–&q6+f»Òòÿ$£`ÔϯÄqö3gð<
-
-£ •‹³_8ƒxCv©LX_ Ã2ð©ja +îÂF$CÂË ¡M+£PÌžÐbD鬾³†e¶<²†eVoš «]Æ ÓÂ:Ö©Ó[„±†a¹ÁFÆæ€Ès´Ztø0PHž1NÅúe¬aØùˆF4Ö0f™[˜í4;†½¡°Ù)<ÍËŒ–
-ùçÄ`P0f™ó g ÃŽ44MÖ0,Ûð…¬aؘt&k—y»p¯ÃæZw>;†iÙ7ÍÉŽí7„äÁg—‘ÅxRõažâƒ&^‡™]ô[ (ža‰êkX™Ð1Ö0þöõúQXÇÊ„^lŒ5 Ëw·ËÕŠ*J ø¸‘‘\ÎdÔŸ¸»‘ ”›±`X¾,Òš…5 ››¯°†ay« o…5ŒÇœ.âéXÇ°S-+ƆåÆuŸ# üY¦ (£PÇréÌqMKc°†ÖEc c– u ˦8qÖ0,ï° g + Ý}Å®c¶rc·›ÃeÉs~&³" Þ[L@q…kXn'ë6®&c Ãr¡Ì\Ö0l\Á&k–ÉC¸Å®aÂ%‚±ŽaGº×Š¬cX®+ÊÛivÌ["Z›åÊ1,k¸Û¥Õq’OùØkïÎH¢¹“ó æ`@-r
-¦Ü9X-¬aXî¬Ö°j ©SXǪ>k–9;uÖ0ìLŸ”LÖ0y¤Öä±óÊ1,Õt»ŽaIœGä8¿©S¿N³ÞÜ[¬Œ/¼Êi¦µâÞäSŠEù¢Ö|žÔý…û$*€8ƒä8`!«>Z£Œ5 Ë€ ÖN±c²È+$9îXÇ°¬Ód±°†UŸÁ…fÇ°üJÃí:V}¢9;Í9OÜ[1XN1(ÚÑ°ÂòÖ0,£õBÖ°Ò:U4;†åÓ.wšã2_æ¨^Ç:ÎQ„Â`k –‹Þ5;†eßá¤YÃj8àÂæTÅ('Ü<-å“Ó³es½
-kX‰Ôý6(¬aX>KÒ…5Lªr2:Ö1,[g³°†U„¹YXðL1÷Ê1lž´l$ƒ‰“×µM€Ò5-o«…+P-££×q¡’ã—ßâ¥2@QÙr¡£p*yêÑÂHá|ÇÌÁOŠ\¸2=¿óvÆ凞UI¹[¸á¸
-„‹õªÈˆ9¾NécüY§A8âá tÇGCè
-W`^á"¼³\Ž§ã ¶á.Âkåør«¯8&_†*<-lgŽn^8zSo!ù˜ptyLjð
-$„È…+.¾®@¸x“.\„_•;ΠB¿ðÅ \|&-rªzúxÓq¯¯_¼ú–a5H×·ú»„é|–®×ñ7 ýt½ú3²{é;©ëÓªÙö¹þåE?½¤?†<?„ß=êf¹oÒ»CSÓÕÍáÔ¤ÕêTošÇg£^º¾¯Òqwó°<?­ÓW‡Ýn¹_ëÁ—øÐ)ó†'ªt¸M›ý±Yn·ËÖþ€¢{nÚKß>¥æ€¦ýíæîTWéÃrw³LËcZ¦w×ãô¾Þì–õcúú°[nözŽ¶Ûª–ÑK]ü¾®êê×Óæ¸iªôcµ\oöwOÂà/3zéõrõñ®>œ²ï–jÓëœA85œ]ú]^^ÈŽ‘­+BEðíru¿ÙWéº>›tµZa­!ªý:ýó°Ù둯¶›J?#~™Éž¹;‘C»ÝaOt‡›mµËJ¾©ëC}|ö4)ýðxlª]zØnVª*“ˆÞn¶U<éó¬—~¾_6é€ uº¯¶iµÜ§7é®jþþLý¼÷¤éöP§Ÿ7ûõáÓ1->¿zûd.M,úáíÕ›wÿýê‡w×?þð}¯ùܤ¿vbﮟ*ýSÎy¨ò"ãì¹a®VMn•òôðDýAãÑBïi©í㹂]ó¬-ח꿬‡Xðÿ ‡¸ Î9ýõ´Ünn£¿ã UÙ÷UóéPŒ\{ÞøhJå)En¿›Špþ_°O ÅF”3µ>PÉcÕ$R´<kzýõWÙ˜‡Naíä]}ý!­ó‰ÛU»›ç§ÛIã%Žv{LâäÕÕ:=P’å§ÞøººÙ,ŸN¶/ÿ±Z·lžö`œŠz:ûý¤SÙª ¨jûñpªÓ«ªY½úXßLz+&ͳ‡uÆtp«¨Èê°{85´Ð2ŸÚçÖ9e×Ç:t«ú7&˧‡gšéX=©}Ú4÷ž«8öÏ•R‚ÃÁxm8?VMÅ?¬ ¿»îu3†þ)Ç+<ȪXÕŸøÊ…ÛÙab´gzØçOÝòhz6=ø6¯NL†Ø=ÿÜTòÖÜcöx¾FÒßøOe(7Ýå=ÁEñî†å6©2º~÷ªà£“®³êN´Æë‡ÎÃó:æGx
-Í3ˆ49¹º«öëå“°¡ˆûÝr§ ãxØžäMº~Úo>¿ú~³?}NÓm¾ìlê#OB¾.òÜ_§#GAg=÷–ž;BÏj¼ÝÔ Sy{ÚÇÝgø}¾*×ÕÃöð˜8z\1Üù‰ìDORðÄB—šK÷i~ó¯+Û!êraº­P{%ê|«jÇÅr$eçê<Û5H†é»ÚâÖaŸûè¢>Tç§woþ“ÞWõnsÔCéõæ|]¶Hsʪ´¤ï7Ç&”=Ñ…¶oªOJ¡.¿íx'&:ª‘~¬)Œò.òõf¹=Ü…bÏï¤Ýõóê“nÔ"…Ëí„=Þ/ëêIòy¥¥OZ·Bôði_ÕÇûÍÓ©¡OSO­ÓzSW«æÀ.d<7¢jÖ›ÛGE–Í|±,UÒ«—Ñuù<)9ôýU¯Ïch•GånyüȬ¯9:È<DÁðû}áå²iêÍ c7í–8¯Ð^^–ôSù˜
-îýÕÛ¸aÖtA]'¤KUÍÊùˆ¦=÷Ð:-OD±o6«n´¼úV_L´;kÿïÏy]œÇ^üáêíë+­K¿læÞê´C²“{©—==þrÖ_h¾ºÁ8ù’·cýyØ|ÌŸ
-CŒô“o®_üëÅÿ
-endobj
-1390 0 obj<</Type/Page/Parent 1367 0 R/Contents 1391 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 432 0 R>>endobj
-1391 0 obj<</Filter/FlateDecode/Length 2338 >>stream
-x}YËrÛÆÝë+fw“…`¼Kù!GUVì˜tœ-BÀ@KÊ×çœÓ •TªRut¦ß== úÿññ_`²ÐD©©v¾çã/óÿ¾~¼(bÏ7ižâÿ;„©—ÐÖ¬.4'^¡Y…Áf)Ö*ÎB/§â8¥¨ Q¬ð΄AìÅŠµ¢Iá¥
-’‚DTa°yì%šUl‘À¼’Uf£ŒN͚ょáY ³yÆhЪ‚;-©âd¤(Rc:$éžÕjló€`f–y9b°q6ûG—4›f §4›L¢Ó¬ðÎD°ƒ&˜Yëdy¡”®`&ѬÍRˆ&b–
-œIH–D¬h&äs&­VŸ™$QRȤˆlÉQ’ÀXäÈÜ—ÂAA$‰Ã¦ÞVa°yNÖZEæl ÌQ"ˆŠ%Ð$ajhŽJX@NAh Rz$'»±¯M92d± ‰ä¤&DRc°iÛŠU˜Í’Ðê,«1X$_kÖ˜Í3gNVa°E¸°k!w‰H˜’çpfòÎA2@U‘_Ç* £~¸P¬1Ø Ç`r²ƒr:<kÖlÊ­X…Á¢ç²
-ãf í5kÆlÃDìDÐ\Ú­!£TÜ"Gf±m
-¹± cÝ}c1ëÎË¥X…á0슗â4° dÈ¢E¢Xa(NØvŠU¬\ÇZÅ1o H ($Š¦Ç|7«0ËûîX«8J·Ž/C,Èå)dÒª‚HJ'Æ~.IĤŒä„ \,Gj µA0¢g¶É‰ª¦Æ"Gæ¡MCâC2äÈ”cFÙ,‘ ’ƒÅ‹4«0r„)ų¬Æ`q›µfÁâY ´¬ÂîÙ‚•ìGÉñÁç›g‘uÙa¸ŒŽX°
-Óe¾tNVc°6b‡š5‹<jÍ3 >°N³”=Ší*!u¶€z„Ã~Á<ÉI Ga°QVs¬ÍDxX3¬¿‚(jILvéþ0¦¤ ’Ö!ß>ð
-ÈžæX.vY™AJ`œHÂU˜ Ç–U¬Â0볓«1âÀv¬5‹þ–A ƒˆVͲÃÌ2$Å* ëÆBVafJê7k¶fƒÃrq&„‚¬Y‡iVzʱ
-C1Ê…bά(ŠãbÆam‘(–{<³)_Å*Ì4f Vc°òH8YÁ‹\i¶NI; ©
-ƒÅ 4«°U›e¬GÌXùä9̓E3jͶ<ña©“/$ñðj7ö+–WÀ"‰G¾fy9žVaăýo!«0|ÂÅemŠ±/ËW,Ë ‡¯¾#dŠ¥è3©1JfÖªõíÒ&ûO @ÔÊu8püàÅå˜I¡6ãXv¬dP¾7À% 8Ô*Tfw½@.º€™J¹$0 ~‚ ¥ ƒà÷Õ̉F yäg"æ Äðòã gkؤ¡¥n¬Ëzää3dæÄš,nÔh0T™bo×o®ÑtYßóÇ™4ÏÌz#?Ìøf]ý„– <³*ww¥)ÛùruûóúÏ ß\ÊÇîzágÞ7ã44wû©Þ˜«ýôX·SS•SÓµçÇ#jÌ»®½oöƒœ2MkÆÝWᔸįDÎ$~éÆ©iLin›jèÆî~Z½n¶µY½ŒS½3ÓPצk­ÛÔv¢ Ý´ðw_ÑÁñÜ^ ‡!Ààjß÷Ý0©‰™˜›vºÕ#jtb°žxË(ydy‘­ks³ëio4ë®ÛŽµX[„Kï›ò¡íÆæ‡Ô¨®öC3½˜mý£ÞÊ™EØÉkþj¸Pž¹í†ÚTÝ®ßÖSm6õX MÏ,™îÞŒç&–uJ=ó­mî4Á§î©5wõôT×­ùÞ´›îi4¿®¥¾ýzó‡ÙÌ/˜;gùÅÒ♫;”©¬Îò‘Ò×Óäë`p<óý±œŽúQÐîGƒ€ÎÊ„Åšíõ4ŸüÞ ½v IfÛ”Û­mYÞ‡EŸ–?|xæS³k&K'3ij‹TØ›²Ì'è/å8nîÌíËê·O¦ßî¹Q‹ÒbÃñÌÛ}³Ý ¡§N`ÿr]ø*L}“RôÛMX?O¦‡Õ§nØŒ¦LÝVÃKÏ›}üóY±gxæc=Éi»ö²ê¶û]k6åTšû¡ÃD—OåݶÙ…ûùå·ÿcþ_1æŒñÛX>¼¢½ÀÕ˜:Ü.\eŽ±ÿ8YonËê±iksUUݾ0€î»a7£²5ŸÞ_}Á¥ê
-ò/ô{á6žv8¾ún³º²ÑÿÝŸø%~ÙÑÂÛBS«zøQg]‚ߪp´z¬wv­mÿMo¦N2ûõúb?3p¦y>„tÚ X‡pëOÍô(œUk)® ÍÏ(÷öãÐíûÑìʹÞaÈŸÛ@ÏΣˆ7ddÒÿÕ#Ô^bûºjÊ-¬L‡wd4¨ÇBúüNâ³Ç3žKŽ+è¹¹60›ÚÊ– ésO±pãþî†U­Ë‹ÍÒüòùûú3Pã!Yc·*NÈMm~4¥y÷ûŠŠO$_yTw@5¯äï«£jQ²äuƒ\ßÅ¡LÒŽ¬÷=ÛXÜ: ÔÁþ¤‘[¸ÙŒãÞN¼…ƒò¦#ò¾šñø
-endobj
-1392 0 obj<</Type/Page/Parent 1367 0 R/Contents 1393 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 468 0 R>>endobj
-1393 0 obj<</Filter/FlateDecode/Length 1344 >>stream
-xmWËrÛF¼ó+ææä@ÏpJQRd«ÊŠ‘ŽrÁ•›
-Óá>’e7ˆ§5¤âãã²Å¡ KÂ,±8à[:dIì é&À˜STã`Äy”Ã:li¯“«;…Û„/ü’QYJ‹•¼b|Z”¿aÛ§Í×E«iÛ¬t÷ûâÇħ) !2Ÿyôµy¥þ¥7çlîÑsµÒ´©j#ž«ߣ']¬¨-ÞÎÕA
-ÏëÆø'½ÃÂ`Éézÿ*óUŠߣûºo›Õ~ìÑ£Ìp‡{ôY׺-6TÕ/ÍiZ¸¾±Jz¹6ÚYÿ%\æÐmºm›öÂä:ëû¢\s®}Cµûš{•vmSêî‚]ýXôåzؽG…»­Š×ºé8ÄG³o©“èà™n¹ˆ“ñŒp{N±³®Ûow¼—ÏÒÁ›×£…îÎ7(®&ô__m6´.~Iyh‚åFwÒQWwÙpÈáágx ¥|Má›Ï®gôØ6?tÙÓmSî·8
-endobj
-1394 0 obj<</Type/Page/Parent 1367 0 R/Contents 1395 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1395 0 obj<</Filter/FlateDecode/Length 113 >>stream
+1138 0 obj<</Type/Page/Parent 1119 0 R/Contents 1139 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 326 0 R>>endobj
+1139 0 obj<</Filter/FlateDecode/Length 2623 >>stream
+x…YËrÛH¼ë+:|YM„
+f1BÅÅT8žŒDËdŠ?ÐNÁÂLÅNÊvÂçÂ9!§ t†sŠq†ƒˆB±
+ƒErŠEÜ'ž!µØtŒ?ȦrSäI¹iL4«0Ø鈛Ê.tl7ÆÈ/ÈÑ‚¤ ’ƒ¦L®g¦ãCÖ:C¤§08wH@¿
+rÓˆ›:Rc°cɾg榋DziŒ"…pl‘Æc˜âäBÍ* 6ž#ÿÊVaT<<ÇŠÕlÄãñ¶VԜŎsÑR
+Ž™('Ê
+ž…RˆáhÆmÙ,z Ç0Ež<«0%/Y…)yÎm½­Â`Ñ]p>Žµ¢&s)ÔùŒÁ
+zò†hGìHÁÆq0Ӭ”ÄÞ¢l汋`çYcf1b°žU,ÚÔ«0ØÙ„%ãlm°ÒÙpy$:>Øžc"ŽÔ˜á°›*Va°è?ÖÛ* v1ãéxVa;áé8Ö
+F§áų‚xÁ=× t¤Æ2žU˜‚GÜÔ³
+[ÁÖ³<`
+f+ö¬Æ`§ìAŠU,Z>ÎÎyÖ¸Àç1ÓèXÁ"å¨7Ï* wN{Ö¸ž¨mm’ѧ¤‘H¥
+`’"£17u¤Æ`ÑüÇšU,¦,®·U˜IžR°ceÀÆ#Ö6†=g¡”¤ #i¾²’¤Æ”$9ô¬ÂV6u¬ä!ZDvf…cìj‘8V˜ÛNb¦ãÅ­u<㇠­#AÊñÀbäñg¦cÖ±b»`Ÿ÷¬ÝóÓN-ÎàHl+3Ùb˜NØ <kM'ö±Õ+¤,.ëÔDžUŽç!ÒéYëï,G2LYMƒ §ÔäY…Áâ½p`«0ØIŒ¨•­Â`ç, ÏZQxvØÇŠˆ¤D ¬áY…áçÇžU,öÁÙzVaŠâxW¬ÂèÈ/r¶V2»””Í£ %y`­DÏ*ì${ÖJl­DÏ*ì${ÖJîm)ççX+yÔ?Ä1þQ‚¬dáãÅêY…ÁâN ËžU˜Ňž‹›…3ð¶
+#ËatàY$‡s>ða*Â"+™…ïXt»°GÂ*LɼšÊVa°s>F«0D¡ÅÍkEÍø@»W4À]„[<!БƒòÊ+Vaf‚¯BÏÚM1d†÷<LÙLpZÌX'XåYéåáx&¥Šˆ•h© ¼a§ãð† cá©zRcÆÂçŠb‹/„8çXcDŠËƒH«1XŒgÆœEé}5ñÅè=ÛÆöÛ&¦‚˜ KÊ/ § ¢ÁžÈ„#5‹Ë3÷¬Â`ÑæQhžU˜™,:Vcf‚_+½­ŒkÌ2´
+xÁ=× t¤ÆN°g­àÁÖ
+ô¬Â°E¹£D<«0#v¬Æ`1£‘FÇJ8øvÌú–häß.˜ž±Ú¥ ÔD|A9NbúÉ÷TÞù·8tFÃSO)H‡<-g¦ 8ÌåRAp¨÷™²óœ¼¼Oíù/¼ýÒGÙ‘‚L%Ás‚ÃHç!ïÇ—³Sº‘ŠO’‰KÍ— Þß3þ°22L¦G×tâ)™ögg&Mib¿;£Aâ7!þ›=’î:ñ ª«Gp‡»2ó”‚ààk¡8™ãéà„›)Îþà5Qœ¼½HùM§ÿ&-e2&ýòP°ßgÙ ðj ¥ “#bÏyÈdq¬xÎCªäNŽ»\œä¬6«-~ß›Îæfµ‘ŸõðIzz±nÚ:IÛßVß°)´ëÎà ÂÊÓÏIÓš/ûMÒfv .¥¬95¿›Çlcþ“”È(¹‘9“÷¬VÏycÖUõÝàobÒj·ËÒ6¯JSmÍ_w«;|¼ÙÀ¼­Ì2)Ö‰ÙTiWde›Øe?²Ú´Ï™yÍ’º ̵iëW.Îʦ«3PIk’Ý®ßW1Ø7•vu ?ïͺkMSY›Y#ÎDÌ.©Ÿàü[µ¦(*3³ÏêâRÀ"É!"/³ÂöE…ðë,…CIMB‹øŽ¶ô‹“uf¶UWn T>·íþ÷óó——— a¤AU?cWQôîJ‡ýÎ쓧,0÷»,i2ÓdðÐIî¡¿:Úð[Vׯÿv.M…˜²]‘Õþ³à­c„ÚD#%›5#[8hîÿéö‹ù”•YìÌ}·Þå©ùœ#ÐõõôÓý篿¹„D¹Àï_yº8´#¡03l•—é®ã±¿äí³$À~Suušy%H³óÉCqù¬Ê³]ŽK¤bQqÃÉ«,o›­ä¸ß·9Úï‚öç`1Ôè‡ç úIC)ùü#†•«~Û`%'ë]Ƹ>Te‹*c?¸)ƒ‚ëÀå+/›Å)¦gü î„þU½°Ž¯í“àˆWŠlyqsyq¼ø!KpEX‡Hkã¸ê.»|·ÉË'Yt™—IÛ5g*7,dÈ1y±¯ê6A)7m¶?:¥u†;.~šbã,·ùSWÛ*Ùæ»l(¦!^QýŠƒë×.’ƒ=Læ©iß>© ûùÐd´Âe›Ôí¶ÇÅA^JüãHå
+]`‡zukŸqåÑK~$ùΞTiDS“Õ¸¯´ÖûБ•lFHš«Â®Ìšt—ã€ßØPYlëª@C»º[¾7ÛÇ'ü7/?åÏíJþDßß›»åyôÞdmÁÛ~ÙÀ®·h2Ò˜«ªüWk«úû¢YWÌu±¯«¸4ëºzi¨;/Ü{.Õ+ïò<{a½‹â¹|4ÝžÕpàKÕÌ}]¡ð ô¾¦ÚuìÉ¢K­pž’´®šÆ4ݺÌìýP«–Y+©îöHÛãõí]m8™·—9¿ˆ&wÿýôp÷åþ(å÷ÐàêîæâúöXìǪN™9Iï:Š½W¸
+R&JÌMò]­ÅåÙTœ
+¸„o,¾­pk’u…a³®«d“r`b¶!qÍ/×õ¦Ûµù×3&«·IÚ_V}ˆwyúÝ|œ.%§ÆExÞÎByª+$ÕQO]¾‘Ϋ}]åMÚ5œZÇ ù‚>n»µy÷ â¢,1³ÒŒS¨N07IÌF²f–¯eúv<þ£c¼ªÌíÝÊtPSTv®Û‰üõ4Ä„Aá·^—7KÞµ ®
+endobj
+1140 0 obj<</Type/Page/Parent 1119 0 R/Contents 1141 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 378 0 R>>endobj
+1141 0 obj<</Filter/FlateDecode/Length 3534 >>stream
+x¥Z]oÛH|÷¯˜§ÃîCJõqÀáà$»·>lœ\¬½½‡´DÛÜH¢–¢Öñ¿¿ªrº¤$@€C
+‹c'Ùh0<¶í•qO†bœÓ¨É)+˜ËZœ\V0Ó“s$V1ØÜ"•ØhÔ˜¡¥Å9½5dF Žþ RÂòÔˆ˜Šs&/±ŠÁN̳‚ÁÎÍygs‹X0«˜[„gˆkV avYÛ1#*ìO˜Â
+‰Ã”0@M (‘ŠÁZ V0ƒŸ1€.+/èfb3øÖ½œS3ØÈ00UfjF +áå ~Ò¬˜Áçl%¬` Wè js¬ÄŒ{îÚ)V²J ÖN5gMt‚‰ÐOµˆ(Iœ@ÜvÖ&È „VTÒ"8©,¶àHYÁ`çc¤Vd#ˆ9»ˆ³Š™€âDV1Xë@"+!ÆĨVEgñ·3ØdÀœuƒÇÜ®N*f(¦Hƒ°‚c(&ÊZwŠO3¬T‘ wF<…U vvjUt#·ë‚ûÄ€¹ã‹bk!‰T Ö&aƒEw@Þ]V0X\-fÊ
+&Ë(²‚Á¢
+¦Ê
+f(xò¸¬M¿ëÏè?V‹è¬@\!xŠ’ˆ[guçÂœŒ’“Šé
+¯Â
+¦+œÀœ™s
+‰€”¢EŠÁbô…bgƒ±Á+˜1â$é¬b°Ð„bJšƒEÐtÝh2†;£É†Ää&:+8™ìl4¹—íML¬âd²³Ñ…A—8D9±frŽ.e§3Ò—‡ˆÌdÁ0ÊŽ g£(
+ζÔÜ
+³NÞ?k²‚Áâj)+˜=‚ã‚kŽFá²gŒq¨wájaðÔ®£ó0<`°¸èä$ª,ο™²‚ÁZ‹¬`îÖùɺŠÁZ¦]V1XÜà¬[ʼnr<÷ý‚/ú#&A-ܱ'IÚÆñök3yäBƒ'ÒhOÆ(9fØd„ Ö^;
++˜žrôqV1Xt]7¦7üaóÀUC4*’¸ùXÛ1&Èá"<@ÚËúvR1Ø‚»NXÁ`q_…¯I±búÊÙFXÁÑøšdéÝ€ÁÎø2ÌÙèÂc%löpwzŽSLJ¤bºÃ‹ª°‚ipÆP¸¬à˜„-±ü߀ÁŽyX +˜îðZ"¬` ᘥu]s6¾®è§ÖÌYž&Ç1»èIÅpgÆÂEƒÅÕrÐd²‚é,s粊Á¢ÁŒ• [*WV0XŒá'¬`^Ù|]ż2¹Â
+æ…ÈYÅ`q"躊Áâ‚®šc
+æñžoÇßÈ
+F‘L]W1X´ õH1Xkg®Y1‚Œ÷(›äQ ²m’# ω±=ÖŽÙ~ØÀp…I˜ÄĆRM¤b°x­„ü8+lÁû¢°‚ÁbÎE]V0¢ˆë"‘XÅÌ•ª³‚ÁbÒu#Š¸”c['Ù'LqŽd£á˜5œÑŽa2¦å¬`°ˆ.–uV0Ýå /¬`˜ŒB’¬b:4:YW1Xœ8pÈeÃ]{ ä¬b°Å©fÅ,8«š¤9†
+l“±õJ¬»ÿzn”ÙI¤âFÊY„qÀ`q @M9+,B0:+˜Aæ a#P3UV1Xì •U 6¶Ù´n †^8´CÔu{Á`q
+c 9+,¦ed/±Q1j4ΦØ(بÈYÁPŒiÞ:+¬¾Â
+f,øu’³f2ls7¾ïóuO§X‡\“#‘sÁaT›
+çÖð0u9‡°å·pÎLÁuÊv+fæ_¸ô›Õ!—ãÛç‚ÃæŸ çËán+rž½I§@p6ê:ç·Ø){ o¬Äs¯½R0 Xòî9gî ræs÷Ýëå¢?Ι·‡œ_`Ã0ÚÂ)º‡Ð‰¾ÆLœC¸—³PgçŽ}ñ‡k0Ïvû?5:‚sø’_’ð„9î^Éð…sÍ€ßc œCpñeâÂüÄÌïI§@æ.~oÒ¯g¹ƒ*yùB`.Äw1=gwQ{Ð8‡0ÛâAÎTâ춇7i‚ ¢X‚ôœ(q¯–/Ĥ7
+Ë{þ„c:Ÿ…åÚ~¾‘…åê»åcÛ»}y8<­Ãëf»-wëï—¿_¼ÀÃ/pbŒñøw××—aù¼¯BsêÝ¡+7›²«›ÄBÒs¿ª6@A¸},[(®VǶîžÃ¦ú³Ú„ß¾»oZ|ØþYµ‡°k:è
+eX7Û²Þýö=•e®ë§æ)t LÚÝ×Gh»-·we(¹YNÂû¶Þ–ísxcâ|®k›Í¦jÏzßVmõDZ>Ô]>TåºÞ=œ­õª\}|h›ct]ŒV‡Hèªh×T©¶Bx ò¶\=Ö»*,Ûã¡ W«–èà
+¶.ˆ3âx@ý2¢8b>· Ÿ/ÎÍu×¢§Ñ›ûãnEb}Œ'ѺÚošç€ÓMØz8>¡„Iôh
+’×b¥˜‘òÐX O–B>6ñ̬¶èà„¤y<{E;ZÞjƒÅa´¹¦áþåæú?á}Õnë¯êþj EˆÃ‰ @ Ñðs}èL‘êùw]=1<<¿V¨§S¾OÊz~ÌþµÉÓu]nšS)V÷=þO(<¤üy˜9ô·‡ :%‚ƒ)&Ô<í0Q<Ö¶Ÿ¿úPÖu[­ºCƒØ{¦øm³®ïŸ­hß·Hq+´¥ÕL,{ºJAu´˜†lrYÅfµ-ÑY[Ô,d>ۺߢɜ.»®­ïÐò¶ÜïaðgiG.móÒ™÷Wo­‹¯‘×(¶+ -ƹgh١ׯCy„í»®^}qÏ{‚F[QâýF”_}¦æå¸HÚŠ»x6ç/}m¸¼½zûꊳÍïH:Úê¸Åúiõö¶¿˜e £Wwp±æê\Vçó ~  "ç'?,/þuñ?å>&½endstream
+endobj
+1142 0 obj<</Type/Page/Parent 1119 0 R/Contents 1143 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 430 0 R>>endobj
+1143 0 obj<</Filter/FlateDecode/Length 2227 >>stream
+x•YÉrÛÆÝë+zg!3¥lY¶ª¤D1©([lIˆI€@ ïëß9·Iô%”¤*å*›‡wºAÿuš
+nL˜³¹"5;G=Õxc¢0žEJ6¦¹ ¦søÇJ*®˜…šó&#ñV´ˆI…éÐ|–*QÁùèÈ* wãp+Yb¸¿÷7JÃ#§4†l–Ì
+-«0ØâØ+—}d6C"ö ¢S.KI6K˜¥ˆÙ Yò‚a@5‰ôÆÌ9µÎª ½$`„& '”äÉ “Âä93(€œ‚ÔzLj 6‹éí(*a¦Eì 3üëõJ˜iH˜Y¿ § ´ ïIÁ&¯X…ÁJ‡+Va”%ˆ+Ïj 6
+‘Å* 6)Žìj vžË*¼11R¡5»<esW¸ @mRAcmÒ4q…“ª:äÉ„£„1N
+"qJ­#I|x,¦)Yçl±? Îk*@ÔzHµ‘Ô¬ôƒujÃDJFìåTˆ* Q”áY…Y8ñwdâ€ã
+Q(B0‚¨XÈm,/¤C$¥ “y" DÎsã
+ƒE?hY*Ò*é $‚èq¨0œÂR MâY…é2Wžb¦Ë’ÄQVc°Qv¤Yc°)ÄkvErUtôØ}Ï!T¤xä„»QLwGRòcèd§‹·UóÈ•<à¬C$Å;Ý;§Wˆ ‡0 ÁT‘ƒECŠu¥îˆwÇA,ˆz5†(ÎÜ<«0SŸSñÈ:ÅH.BðI(V˜ŠÅ§‘u¢‘;øŠ€jPRAÃÁ“ƒÅÀšU˜ÍÀr{Y—_ì\¨ÇŽ 814ª Ôb­Ì©1²à^Tc y–xVc°YÆXG³ƒEÑd‹¶C°^Vaœ%˜-«1X´³ŽÈå?Ø_PW‚˜ !#”Á-JÞò$Ž1WtžU<ärÉbzŒDa_¤šUlNë^ÖYÅIáæ† ¢Õw‰†h”R±gvŠsÍÂЃÅd†šU˜ÕãBôš5‹ëR¡Y…ÁÊÍMÉ*Ìúðð¬  ‰ÍȀࢠWa°)/[ŠU˜áL—U˜Ñ‚gÙxÅ@¯"ZAbVa(Ƶ{Va°è¨#Y…a{X³Î,nèîpà rÅõŠqÀ¨g‹—djdb)ž„ŒØucá!£áxRc°XɈuÕ˜F9—ŠU±â•ጲâRˆ›¾42¾N¡€È¥ØãƒSŠ'GYhŠ´¬Ât™·%«0]æ¾W¬ÂpYFdzÎå|! ¹CAtYÖ&_èäXâô8@nî!lbmÂ#yÒÕÕc°¸U"žU,\È4«°‹F›etÌg{̓ÅjÍ.VŒßn°@ÊãÈÄ] ö(€á(ШÍHj W5ÄêY…Áæ¼yÖ%X¦ çR‚6u£G£
+B[‚ò¤K°Ç`±^‘þ‘uj¥˜P›bs…D­‡D,šÔl±.E¸ÏÉÇ3ÜD½BʹDoÉ pÎŽRxNÄäƳÿB>SJ~ƒØ3!~F(ÜÅh´…¸äÝ„¯hòY„FKî·>6
+¥îþ•óçùLÆ#
+±GJÜ튋CòY,±·öLˆ×Ü€øØh km†vÅæg-É¢<PŸ–'/Ðt¡Y>ðg›,Ÿ›åJ~² ̲úpsvm>·ÍCý¸ëÊ¡nS7¦ßÜÏ*|ùóòÏ“SüÐs*!/W¾µýP7¦4×uÕµ}û0˜óººú~7Ø•¹¨×Ö,ÞúÁnÌÐYk oQnîKjÒŠ.í*ìßY¹éêFÌ,vÛmÛ ï…‡®]9irwð(” ·|²ær³¥òÞ,ÛvÝ[Q­ÄÏëò±iûú½O·MýP#«ö.›{;¼XÛ˜»ºYµ/½ùeiÊfen¹üÃìz¦Ì=È©ïg÷¼¬¦†/› éî©ÚÌM×>×+ëüSŽk_ÆgîÚî‡< xæ»\¯]…éé¿%êªÞÔƒ<:U©jøÚ†qµÆMÙ÷«{sý¶øíÊl×»ÇZžÑEÿ´«×+äfR—ƒ+ï™[Éäv]¢döu0[Øxi»UoÚÎئêÞ¶ìºÃ×½_í ]Ô´ÍiÕ®w›Æ¬Ê¡4]‹îD3 åýÚþS \ÿÇ0nûòñ½¶ÅPV?hÇü~±0´íÚUO'FW_ú¨Ò9 ë’%X!l¥LUZ™1åsY¯Å¸E³¿<Ùîïl1nLêÍmo»×eõT7ÖœUU»k섇¶ÛŒû¡lÌÕùÙ F¿³ÕÐvotQt³ë¶m/Æ”k:ÌIPûIç€QñÂv϶›vߢz²›Rôݺ^îŸê­Z)ç÷‹Ï8›ƒ¹éúuﺔWù šÍ…l^êáI¬N\Ú+èÅÞ×®Ým{³)yc›éü.lµëêáMî¹ñ”}e^¢ë·¶ªË54ûÍÙä×h¹iì_^ËÍ]tu~ya¾`[ÔÖ •Gb“>·:+ÊŽ¦õÛ¯wË_Y^Û÷û<ôí®«¬©Ú•5Ïui>ÿ¾ 6]ÖiOUdxü õPfm'³~dY2‰Dn·ì:ñcâ´fk;é¹>Õ}¿{?5n[vu8B”3‹¶úaÓnÇF‘ßm¹2}ý¿i{^—¯æ›oâ6¾YÛg»æ÷:bÑÓ•/“çïÐÖì¿ÿx ”œ½x+ rü4žG8?,ή?q›ÿ‰2çmµcdÀÄ _†øøé<(ø¼>6¼åy‚ÿˆ‘ðñ/Ë“ßNþ”%æ«endstream
+endobj
+1144 0 obj<</Type/Page/Parent 1119 0 R/Contents 1145 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 458 0 R>>endobj
+1145 0 obj<</Filter/FlateDecode/Length 1033 >>stream
+xu–IsÛF…ïüssr „e°R”Ù¬²cF¤ã\ApDÁ‹,ÿ{¿î¡0-¨Rªbéá›×ÓË`ùo(JC%ª<-|ÏÇ•éçþý" =_%Y‚ß“Ê#O_D­¶ !O*S/Ðñ›MFÎxaA˜xJ&ˆ°cœ{ 3/¿6:I;ænW "Š£äxRI¿Ä"* ‰"/Ë"/½bvÃeƒ~@e°rÐOlTM‚Xî$ŒAB©N£Æh—‘bG+¦ qæs¦cU¥FXä¬%4§8/—')—™ÄHÈ
+Š+$Zc‰cBR%Á+(5%”¢ÍÎ*5h’Q1œ«4Ö¶·AFµ°âJ…†5Ž_QÛ@íÛÎûT ræNˆaaÏ Z#Ž#u>BÌ3fe÷tš¬)ÅuThP´¥NÔ´› ÌJ~¡ZSà‰Z+οKN¬„õ…Ú;*4¼ˆ„É9*4hN‡PP¡O*ÄI“^>-:Ëx88¾²‚ra})8ÈÕè”.¢?p²"§…I`ÛïStÍŠKÚZsA­UÓ)¡MéNÔ¬¬Õi²æ˜£ÖQdMB³²V§AÑÐTPk 鱈‘¡TVlšv¥g• BS`M;¯Ð i€Ù*4Í&{åµIá"·˜Ÿ*š%Ń‹rznàV¦ç®Ä„¤jüWPjP Î*5åKqÔÊ,´Ãá¡G¬hW “ܶŸï˜ˆ•ƒñ墑uÄÂ1m_YNù°àRœD:h«PjP<ï¥õz·¸ºKP¿Ú=Ðë-ÉRµ;ð«ÍW»ò·mÝþP7ueš¡ÿ}÷má«%^!ÖXô±=VÍœØõj›ª9’k‰È“oý§Vç³iÕ³a+Þ©Ý´ÝP쫺~’S¢›/ÿÎs¸ù¬¾4Õóìòí_ëùÊ{søP êcÕŒÏêÞœö]цåzÍùÉm¶Åi_(PÕ¦S7ë»­*] äÚOEY5CÛ?¾,øc–Éçmxiß |­šCû£Wm§¾¶Ý÷c׎gîÆRôøeÕ»<¾z—gÿ#ôñ5²5ÝSUµ)Êï*|SÕ½9£³˜‡ºoº¾n†®=ŒåPµ [EïMcº¢VUóÐθ5ûñ¨jódêù@DÓ5°™®k»9] CQ>R6C«
+Õ uîÚÒôóÅ›b(íIYÊæßVűi{2þlÇNõ<¸}0%*×Î õ­ú~<©òùÆ;Ó¿=õCU×ê±xâä1´}mzžúÕ]v¹ðÀñ3<kð%aï”Õ§ë•Útí7Sê¶-Çî§bjv€Ï
+endobj
+1146 0 obj<</Type/Page/Parent 1119 0 R/Contents 1147 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1147 0 obj<</Filter/FlateDecode/Length 113 >>stream
x+ä2T0
endobj
-1396 0 obj<</Type/Page/Parent 1367 0 R/Contents 1397 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 513 0 R>>endobj
-1397 0 obj<</Filter/FlateDecode/Length 2872 >>stream
-x}YËnÛHÝû+.z3i aDR¢¤Ù œ8é1:~t¤ ³è -Ñ6'"©!)»ý÷sÎ-²êÊ
-ÞgÝG‘ùßY,ü‰ežHšÉ¦:›DüÆÿõõ·³E”Èl™E©$£Å
-4’
-¯Ùb°ÉâÈ+‹¬&Ù˺`3ι1X!Øc¿ÂaOZÌp8 k0XÅéYƒÁ.bXƒì­XçðŒ™V¸ÁAOZL‡g4XƒépJ£5˜Ol` †Ãq‚.
-¬Å`§Zl^Öb°Ø8ÙÀÌ¥ÊñX‹Ábã Þ¼¬Å`³9«"°ƒ]²ã‹–Lç:0zGÀ$¨› «’Ãb!Ò„Š{Òb—b$1°Hñˆ™bTÃN²Ét˜#YE4£ƒGÌŠ‰=RÖÉÆ14@3î"xV‘²ƒÅ~ÅVeÓ%óA–CÁ!•5lÆè k0½š"›µ,¼8Òìì"×,óxc~¥ŠœÝ€i—KØ°ƒÅ™Àn5Øyµ4,½1ؘgd-;åÊ°ƒEÙuᎢ+fÊy*
-g”¢îtO ”¯"oÀŒˆƒ5°¼w¦h_ž®‘4P—?BÓÉa3:1eF-Ο€Á¦‹Õ”bݲ(à "Q jtjˆ'ifÄ`¡ÇŠ:µØUz/P=
-‚Ú‹Ó”™÷¤ÅP«£Ì°ƒg</ëŒb£ø‹iª@òžê Õr÷R,&ž˜&ÁïíÈÅXHK ¤ÅP‹¹ŸV/ ®'Ú¬ÉÍêõÆÓ#–§a ¦bê0¬Á,ü ͪj¶˜¥Í× Ã šbË »Õʺ<eî½cmyZ59d‘Î@ƒ+¤´lÊ¥D-f"¸6ëÂß,3ç‚àÐÀ9<g ”"#PêI‹ÁÎ4ÎÀL‡¸QŒ¬ÁÈnŸÆËâÒÝUÜ8çŸç ôîzrpwÜ ¬swd{5îâ} ÇæYç.VŸ¶o󉺫w}áR•H‹Á¢Å¶µ˜á°‰ k0ØŒgkXƒÁb×[ÍÎaôȯ¶ªÍo€tÍçI‹Á¢¡6°ƒóÓ°3‡¼~V¯ìHÎWÜ¡Wº ÔêËr -‹kúÔ‹ZL£šϪÑ/Æ:}¹ðЃ jQú‰!¹)b}ëÄ· ®&(§¹3÷ö3çßr¢÷y£œ°‡;ÒÜjOo¸¸qÖ¸k uX ®ÓÉ{\´3ññòH‹ÉrøY6`°~Òµ˜­ÍLÖb°sÞù k0"ÅqYÍ.µ©{q‰ñ¾ RQÈ;ê•g‰RƒQš÷
-…<e 8cžãš¹×|ºÀÇ/þL}áÐ8 <ÐÐxžÑ´Å ÍSÂÄjè’oX£<‹"‰ wžç4x§Ò7ÔÞ, è½R¸°êöÖ $&ƒ–º^P~ÑS@*~¸­3ŠHùzåå>¬ÏÞžÈú_׳ùBÖ[ý¨ŽßlÞ\Ö}Ûl›¾lê_×ÿų˜c±{ö”$xúÍú±ìdŸ·½lšºÏ˺“‡¢.Ú|'e}ßHSËcó,}Øõùn']^Ýå’×Û‘€à}ùph é ÕÕIs?<÷Ò乄XÕt=½˜È;]ò°½+»©‹bÉí—Oç«OÒùzÊ.r.c<x—Y­t9¿Û´ðuß¹'11Ç'Gq$ÿvÎ_ÎÓíuÑõ²:¿úpNAüw„w’"ùê<(¤ÊkDóP¨~ã6J$ån[Öó‡²ÎÛÒ=øîèÉ4’5’¼•Õ¾iû¼î¥ë‹ý«TàSw$|ï²ØUw<ÍkΔûrWhNŽôÏ Ÿá Íí  O"çýãqßH'qÔÕq¾ŽÎ"Yõ(‡148²ÕîñÃi¾pC2÷mS¡NŠ~Ñù“ñšÉù®/ÚA=ÿD*[e/y'¹ló¢råúîød戴}‘]Ùßó¶€ÐS^î\MÔ.]Ñ>í‰ù…S×ê]Ãc–ôuù—lv%ÊéDly"¦qærq³z+ßï¿?àï²^þ¥ÿ\¯õŸäÇ[¹Y½OÞJÑo¢(2ÊŽù!ßó^.ïQ*pª“‹¦þG/ß›öÇ¿N3Žç‘ò‹2¨›Ž1ܶ ú¡:­RN&ΦÙry¡ü‰iÔçÇÇÆ)b÷BYßlš|)žŠÝI* uzÛ–µ¦Oóðíúò?œ¹|ÔüÉíGʘB©~i6?àòÏÔ¢î®òýž}ÃñÕy5´þÇÐ÷'¹¬ömóTlå®mž5þ²v£æuªpˆäuðTÏ£Ä+óØ«hçQ[wسMQÅA«é8¼†0~Í8fU×ìãxµãŽht曶é:éwh =[Ú|žrPm”³}Øû,ϨÑr8ê \jqÄE¯ÇqØã¾_^¯ä§ €ïÊGÏú˜+än¾þþÛ×›o·¯W´¿»¸¹:¿¼>I)ZísÓnxœn_ @îÜh«rÌ¿×͉ïÖ,
-Ö¸ò¯×r›wšh+ŸêMû²×ŠÚZñ6ó:Ýø¿LšW×'“p|aÒI4ìsa'çZ…«bshËþ…*ß^ wu S½¿¼V<Åz±˜â‡ËÍœ‚ŸÖgœýAk†endstream
-endobj
-1398 0 obj<</Type/Page/Parent 1367 0 R/Contents 1399 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 517 0 R>>endobj
-1399 0 obj<</Filter/FlateDecode/Length 343 >>stream
-x]’ÁRƒ0†ïyŠ=ê4 ±ÕÖñеy$A혤ÕñíÝЖf†Ÿïßü» _„ËC% —Ð:Â(Ã/óãåÔ’*JRxÉfõ ;’j¤RP~öN4ÑHq<¥‰v òŠÖ =ÅVãæØI%±zŠ¹ÒDÇ… gšj¤ŠÓ"¡¥ %Ȳ¦c+‡DLM$¶$
-ô\aª‘b\JqGA5.W¨
-ßÞ½…Ž¬4Yl$pº‹§ UÚL'À@·7%Å-¥°4ß›7;@è`·]ÁÚ·ýïaüþVï ƒŒç8¦6S…ø_áƒÏì©Â84Ãðz3ÄÒ >)Î)èw ƒ{\î‚s7Ѻبs§<甩§ÁÝÃÐÝr»ZÂSö¶á>´Gg±ßK{—85ú³ŠÕÑÿèÇ>˜c{1
-ÿ+U࿈PŬµ&Ïäª×endstream
-endobj
-1400 0 obj<</Type/Page/Parent 1367 0 R/Contents 1401 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 520 0 R>>endobj
-1401 0 obj<</Filter/FlateDecode/Length 1086 >>stream
-x­VMoã6½ûWL·6bÚ²ì-)ºÛ=´‹n|é‘–(‹µDª$µ^ûãû†”ç£Ú[$‡oÞ¼y£¿FMñ—ÑrFù‚Šv4S<¹û÷ùÃh¶¾]Í×bF-åë…ȇ_ Ýò~ºÊ×bNóÕßgø8EU\Èò9=³ÏÄâñó›Íhò~M³)m*`Z,W´)#<).~ªe”£LÐ/ö@ÁÒGãƒl’¦¤òn¯½¹þqógŒ“-SœqÄ°)/2£Ÿ•,)ÔŠZi¨“;åÓþ9eÙ°¶6ìßœï¢Rûàô¶ª¤ƒuºŒ
-k‚Ô†<ÙŠz¯ª¾!m*‹kdÀ^ ¬UÓ1â
-t´=·C A+þͦ4Îr…‹KkÞÚdY§L£¾CÌø w$o[jmvÔè½z—RA9ïRY .ˆøCZɆ•µÈ¯À08¦o·¥X=¤á‚¬£‡ážAå³<…1ÎVï£Ñ7j­SO‚²M‰"öFU^ðúx 8‹œÆ³ì'¤çZï
-9e2]+ƒ¶†$´ÕYm¸ t{ŒÅ¼•íVÒAmÉë .©¡{7™áyIX·KXÖt®‹HN&f‚nzÝ”L$kãFéôKÒ°Tr}µ¿¤J;HÏõ¨ŽvÎîœlÓeWß$&J¥wýSN >˜ò…Ìœ*‚uGA„'_Û¾)IöÁ2ô~dÑÝÇ:N¢d±¨ÙN9œARþèƒjOr£Z~Q(Aï{ÙQªô ÁDi¶òÍúšÙER)‘g$å¬ ß§Õ“¬ò+±tu–/Ç,ÿ´õÔfã´÷®æ‰D\é•¢÷ïT¡Ïv\w±P«2rÛ(f€ÕWUôœá„ÙÊý#>Û·@ÿË´¤!è“)éð5ê (Õ£ïcmÚN7P'÷9†#¼œ$šÜËô¸aßÑÑ”\æèu‚þPyÕIˆCñ?œ@G÷žÓû×Ñ|º¾œ Üüà À_¾æ7+
-¥éèÁÑYúÍm€›H¢›Õm{O_”ól?pøÔd\ÝVïê—›%úu´|ngØÜé{c9kTÞqRRš[…©id{š.’ÞÄx‰eøîûÚíà{²Øó¥è HO¯¡I+^¦o ­Ò˜½ìƒ§dA&¥„ݸïR„g7 L<½uÛY¤AËõÈ&@Ùi_‡tºa§’SõðÝJ…¢æŸÎ«¦Âí&<å³ ÇQé´ÙÇý«ºí›èŠ‚>¨í‘Ytüòò÷³ž;+š‹åæ–ŽcW·˜N(Þ
-Šýñã-Ñ00¶°©c4W˜DtœÌ0âÒØO><\†ÂÇQ…Ð^4›dÈñ½ÆûCœà(F›¼_ÝÏùyžæü¿yGš¯¦bµš§¾æZý¼ý>úí.
-endobj
-1402 0 obj<</Type/Page/Parent 1367 0 R/Contents 1403 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1403 0 obj<</Filter/FlateDecode/Length 1387 >>stream
-x•VÛn7}÷WLòˆWWKN>$iA.´F\Ü]j—1—”I®ý}Ï»•½U4†mÅ$çræÌ™¹=™Ò_SZÍh¾¤¢9™dšŸeç´8_áó ßNÒ&Ìf«ã«y¶>x¹>¿yNÓ­7ð±<ŸÒº$ØŸLh]Œ¦Ù"£WNŠ )Ô’|“SaÍFU­AYC¥eötý f4Åk6sŠ–04Z×q |{Ñlµ<òØ“2Ѷü¯xòm^*'‹`ݾ?,•Nå-ûÌèwªJú@{Û"sQ²…†Ã€óé<›±ó~7­Ö{ò6^,„!/%Õv=Ú-›óTY
-¶’0áØßÖ‰"¨Bft‰Ëœvƒ‡[QaëHh}ÿuLžS^Ý”2yÅÉ"¼ÖsG²¦muI9€± <+S‘V7ìNù_žzÞùH¶©û÷µÒ6ú¯>á
-×ý1~כּ©œm·ô+½¿zûùã—OÝåÙ4•æÞå¯5bð?±†»UËùØØ3öÇ~q3–ÃÀÞ_}@ù2»«UQw0
- žÎhT|hû…Þ‰½g«‡E%ÀÅ'Äèµ0˜nþ
-ƒ‚óî¤9Ò¸ÑÇQÝâ²ÕE
-endobj
-1404 0 obj<</Type/Page/Parent 1367 0 R/Contents 1405 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1405 0 obj<</Filter/FlateDecode/Length 1295 >>stream
-x•VïoGýÎ_1v?”(æà€
-÷îå—ùÇßh¾DçzÍžk•ç´”ª,“F–ŽTF[]Qe%]^Ü6üã-9 ëŒZTN¦d¥yP‰´Tˆ•8á€zÃIÄuvÿÔúž„ã8†B1x¶/¦Û—.é7ÞO íFôu 7e)•ž“r•6ŽâÑiß%«ˆ.2*µ[ré;fn)K)ì)‡>îe]S<Š†\|ìYÈï
-¬_H·–à\Uª´5Œ ô”Æ7Ÿ-U¹3˜ž1¢y{ÍÌÛJ¥²=B<«gtƒÕ9HäÀ9Ýv1µ8ºo] Ö?
-yBPvÊ„Ê-–‡ô¾‘A+~ì¤õ»‡“ï%6ë‹N"ˆyê%;ì–¦1©Æ Õ³õqttôõüúòâòw|£ÏÜÚ0g¨ ª+’D®PºÑ 8½£•€@ð£|Ý Y¢ "õB·‡úia9ªv· )0X
-Z÷
-Žb”8±þpàV©ÛÐÈïΰúÜРLõ‹_ÞÅ¿…Õºl`<°R/äÞ¯Î\ÓÏøúþÔ¾O®ÍfۂѬÌqpIndR9±È%nNç‹}Ô®.%ËRñvZñ nV}ª}sÏG‡xÜ)w
-endobj
-1406 0 obj<</Type/Page/Parent 1367 0 R/Contents 1407 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1407 0 obj<</Filter/FlateDecode/Length 1161 >>stream
-x­V]o7|÷¯Ø-*ÖI')úðC¤Ž
-ɳ­ŸYRgK–“ºEØ9‰Çݙݙ%?Ÿ¤ÔÅ¿”F=ê)¯NºI—†ýa2¤Áx„ç~­¤EX 'øøÂB¿›&ƒ—BŒgÞe'Ë¥)e $ŽG”„ÄÝ.ey+3´VeIÊ““º ?:µÔ¢$oȯ$m¬É¥sÒf·ˆöf­Eºšñ»&C‹„Þ}õôš;~-ám]j÷† ’­«ëìý9}XÐÖÔT;òNÿøm@ÎoKIJ3­ó²â%Þ«Ä–JµÆˆJcÖ$|Ø!¡ÒtK>ˆjSJ×qwvÐv^X_oaIÚOzŒÄåVmÇP%z*ª¹ ²+ÊG Ð¹œPŠ’rmÛýA$“&£„2ËàœWz@¹•°Ò‘¸ªsP2„EÝí´‡˜¹2#Èx¾+éŽÍ$é¿A.ZÍóRIí©ý‘âKý†2ªhWÆy-*yÈ´<ÖýO”Û­L]´”žæ"Gn2 ¬|sÒ4¬0úÇPzMÎTÒ¯˜´r(Yn¬•¹/· ‰ª7moŠ}e<·:ô ïóVSP.4‰ÒšKÖBÁÍpRÒ=¿Ø`‚Oji K…þ$´Xâ1ÇѬåê|E"¨w¯Ñ7‹›åì´AÔq'Á|e Tˆì–Jy'K
-¢»Õ}«=vû°-¨T#ÕSÃX*¤‡¼\Òl$.$¾ÎCr6É.uSÄ{…z×þ
-•ž<„ÿ®²3ŽÇšïÆk½õ]O;½3’>O’äÀ&MƒölÂ=ªL­ƒÁ
-åÖrùuÂ?ŸÏf7®.®o¦³ÙO‘Os&Ód²;”4>¾‹sšá'ú+Ÿ]÷>žG kcqÔÂ÷ÿ+ rãÓ0mŒ)ìÞ¨¯ý Ø+ùì¸.”’IÇ25Õ?
-)K9·ÂË3‚pÃõ Ó@м^â¸1ÖŒws%â’8îÓ0Mã]eúöÓ»·ô‹5·ð]˜¼®pl'ÞÙn6´GÝ _þëÅd0$£á8Þ;ÒÇ~Ÿüzòù2Eendstream
-endobj
-1408 0 obj<</Type/Page/Parent 1367 0 R/Contents 1409 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 523 0 R>>endobj
-1409 0 obj<</Filter/FlateDecode/Length 1504 >>stream
-x…V]oÛ8|ϯXä¥)¨þ¶[àpp¾
-‰›Ö:ä…–h› Eº"ÇÿþfIÉMÔŠ †e‘»³³³Cþ8éR]÷¨?¢¬8é$öúÉ„“1¾÷ð_JZó ,=~|û|ÒëL’ ÆäGõ†Ã¤[?iZ„@ƒÑWüˆú“N2úÝ‹q÷× —éɇÛÔSºØѤKi t(ÍκI·“Ðr+<ÍÖ”n•Ù8º¶æ§¥-Ÿþ~Ÿ~Çþu±÷_ôÆÈægXm¬çõ´ÇBGÂät°9/JOÞ¿|¢ÓýÖÒ¾´^òŽvJK²kò¥pÛSü& ÍÈU›t>È-bÈõHl„2ôx†ÐŒÙ»}Ð…ìáÍã{òJë°)º ÜîMR¯ìÀV¦œ€qj³õè†È9)­Çõlúyþe1[$þŇ
-øÕíôkÂlð.ö¹Åù*{Šx}y1
-¡4  Û²…ÑȽ۔¶Ú¡mí¡ÿífz}Ck[R.=B¸Ç÷ -D±´ŽVˆ]•eÒ¹u¥õAªÖ2'´ÉomåÀˆcòÒµò¢:ß«\ž“³TˆÃ
-%ØBZ#Ij'C’­
-d—´+íJË"ÏÙí³,3¬&åú d¶ÒH¬«Âf®`¹\¶r2î¹Ë„¡•
-i¼ðʲRÀ©³U™IÀÎ%ԞŠ-ÈF¢å;Y:lܳŒÖ
-y@‹NÉ2  “å÷yº ¨02Ý„®•ØëX
-*Ì\¹?4¥ŸÐÕÖFíp&èÇÛÌjº“ÏR3âߨ(ÅÂÅý%÷=.æq-„A÷”Ð2óQ«²Ä8€Íè'®Úílé Ï ÉrõåÛÍyø|¸ûgqNwÓùýtÞ=oñ†£¬yÚmmpÌzÆeHÚóŒâEUñ ¨ª4ÞKÙŽ“³×=úYñY0gÖ¼&”µE#žA\ óŠØ(IÏ…ønKåG¯l×13duŽƒí9#8V䎕÷Œc»¶Ut#Ù—EœEÖóÉLF¼Z*ºP¦ÜÛÐ ¤ ³Â:îVð|øŸÌ¡«P±{ìu‡Ë“ÄŠì(þ׳VáµiZ‘X£­´¥Ä‰eXÍ"Æ´‰M8Š›
-"©ÀÌ·µ+—U81¡l“ËõrƒîJ'Ëgö`ô' 
-endobj
-1410 0 obj<</Type/Page/Parent 1367 0 R/Contents 1411 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1411 0 obj<</Filter/FlateDecode/Length 1741 >>stream
-x•WMoÛF½ûW t©XŒ$+’}ÈÁ_‚:¶kÉI)Vä2Ú„ä2»K+ú÷}3K*
-íŠ"-îÎÇ›÷f†?Æ4ÂcšOèxFiy0JFôæÍqrBÓ“9ž'øç4åòâô4™ö?_¼~wJã)-s˜šà!#˜h™Ž“ñ(™&tçLLõ•rgKz¸yÿ7KŠ.
-£«@w¯–ß`hJãq44œÌaèpi©ñk6 …µ
-d<©'e
-µ*4=…÷¾\ WÊ댼vO8(Ž5•ùIkëmLXÓõÝ=mmƒ?Š‚*ã#µem
-Í!Œh8>N&ì:¬5[Mc„µ³_*úŒÛxUín›Êkr>u¦4À= xнVp[|Î5i0¶Â3›–#”[×ó\Z@žé€ }Ò¾›Ì€=²ÖxÉ
-óœm˜OÀ¶ˆ†^Æ6(l,…m[6ïN·v;R­4ÕÚ1,€{µåR}8oÉ™ÊH¹q %Ü œN­Ë:Cƒ^ú1^ÔÍnPvj Ä8LüàTõUs «m@Dà–"[ƒ¡9H]y8¨2öÅÕdºÚRi3íø‚âœ|­S“=sSJŒ±¶Üæþ·ø‘$¨L꡾ R|` â*d¹¥Ìä9( Ñ‹BO½½ðÉT’Mè£vza˜{Q-T¹R´Ò
-œÄïyZ…âñðñUì }Ð¥h›².tÉ!Aå(:Þ~=zžW:l4 ù•HŒ%ÖA/×È5Uè6 BÊ›¢ØB_fe "³Àh@= ¤G‚m™$’H
-Ž>Wièy墡Ž p(üˆÉ·¼`:´ä€
-ásòåxBPëäËlz„ƒJf¬K4$öÖëv!ÁôüJmu HÈ7um]ðB»èïZ
-ZÉ°ÍúÇW ·PxK±‚¶uÈ¥"XW¡…`àî- =|#H\W )tì’ö °Á>Ò„Û?û-ÑÚŸ
-ßÛJpcØŸùÒFy«æ©ªrýwÍ̈;œP©ò°çƒ7 P®1VTíJƒ½jÃKÄn!R)‹¦ëÐ!Êo7àš7%xª*mß©Ú`‚ÈNAgÝbµ*/£çñòêæó?7·7WG$÷Wg—íã§û÷Ë+žnòâìúzX—dÁÁÈåui®LaB»õÜ´K²Xzwq."•?.1ù쯡³„>
-›·ˆø……Ã?EdqéfX`¾Æ[ÝX¾»ˆ]‚«‡KüÀÁß ·žž› JÀ•î, ÷Ô`Ë[yǘîã¦[ä±r'X sž™T+ì‘Ü®÷¿=^¿;i?ÊÆ3|žÓlŽO:þYœ}8?çýÆ‹Í¥M^¢„A Ò°»0œNùüÿúœÎ§É|v‚oJ¾9eƒW˃¿þ®ÂÓÚendstream
-endobj
-1412 0 obj<</Type/Page/Parent 1367 0 R/Contents 1413 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R>>/XObject<<>>>>>>endobj
-1413 0 obj<</Filter/FlateDecode/Length 166 >>stream
-x5ÎQ ‚0à÷ýŠóh®M×6Õ
-z(Œô*Sc’Ždýÿ&—‡{ùྠ‹Ã¡2äv"Œ2H]P¡UìYÌÒc •!Û£ç0¸Œ7C±¦CDŒÁØäVž«ÍâÇÞì½ýLýÚàü¼1#Iÿ.ýÁ„SΨ Q¸9¸ù‰añî—ÓÁ£EýrÑ£©W-” Jêø¯é¾[WC®ä 5 1†endstream
-endobj
-1414 0 obj<</Type/Page/Parent 1367 0 R/Contents 1415 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1415 0 obj<</Filter/FlateDecode/Length 1600 >>stream
-xWMSãF½ó+º¸
-0h¦?^¿~ÝúçhAs|-hµ¤ËkÊê£y2§«›ëä?Wø¼Ä·×TȃÅ|•ÜLÜmŽ.>þLË9m
-غ^ÝÐ&'Ø™ã?ÙéûR5­ö0D÷uãݳÎ)õnŒÝ’±Tª³Íßbd±ŠFÎ/¯’%Ìœ.“EBÏÚ?½#WŒWã+Z,úËbÆÇOwdu»sþ {`&×Õ:+•5¡¦tO»Òd%e•Ñ¶ ”)K*Ëtàs• -»ªUV‹«ˆR 6g$ÁÎé|qC î<SU…´Ž%/-ŽÚ”&Dc™³­26¼˜lKÕ’°^«|O­ƒÃ(¦Ò¤l~á<B7¶¥À¹#29Ó–ÚsæîÇ(w¦E¸„#C¬B‡ð[Ê X×"•¬êrýHÄ‘Ø“–²ÎãC[íI¥ˆQåN@d­
-_B2q¾³ƒ¤ —Z=Xè–ªŠ¸&=Ô ½w¶0ÛΫÖ8Ë8óÓ‘¥
-”jm¹pˆ¡Æ©Œ
-7Í:¸ZÓ#S‡ù0ƒ_›!dÆ<wYW#!ÚåurÅÔ¸h·3jý°!f ™‚¬‚9¯ƒ«:‰ªð®¦µnïîå¡Àÿ™TžãX
-ˆæ8hÈÐJµ
-¬˜
-ò²2âæœdV½…ËÅÝ Ð;Ü(áC²5 %hÏûhbd‡Í!]øÌÂYEg@J½Ÿ¸¯ªa˜?Ü(€–MÏXxñùU{³ì§èŽHh)éÞu~ô1{­S„×ÜÄîQ(]WåÒ“A·½ "ë4üö)ŸÄ
-ë­Ð˜Pú”ù8%úzC„XïÐŒoaGTw<<-šPcjS©€³z Í„ ŽŒŸMPõz«|^ñP††ìJ8}êz3ë³å&Gd ‡_'¹ú]€@ŠÔOÖ)¼@,ºÀ}
-<¹ÇylA1¤c´|Fi‡RKµyÈZÍ›„ò2×C£3S^d(• ×t¬Mh½¹}”Íäw¡Ì«³`1óÑ¡Vœ ’~iÔöÙxgYù' £œ˜KÜ"·Ü"3\r—KÌeÊŒŽN«ɖ©&J”ÑAúëÍÆÄ1G’¼öŸ>™Fœ’\ä?¢lG #øsZÒ£-Úc˜¬—2ù9«ãØõ v¡SU¬ªèÏpfÈüxäìq?ÞΆq.ÀY?NÀa´ÿx·'pÊ㺢¨Qv®˜FÇ…Ì%îVÙx0çϱ­ã¡¾ðp×IÓ]a4¡IÆä¹â`)÷RèR¬Ê¨SwBŒ7²%=G!ËšT€äbý¤³Ú 5o¤wðbv#ͬÃyf$Ó²¬=ÜÎøâÄ©þªêfFÇýÊ2Ø9Žòú2^±ÅbOT[-ˆý`¡¸Lès\%6*v{ññ;›Ä}A¼Z"W¨¯x¼ Wº¥Ò5:®œ †lÆÉ/D)uÕˆ ¶^e_``ò~™Å„ƒ((ÊuÚm'©WÐKÔ´ %æ]
-ª<Sú—Þ…ÑM·<VQ½~pýÒ>,òö"µ€Þ€õXuZŒñ8›tì5#9íJyõèßdâLrwè‹7//Z—óøÞó¿_ì®VWÉêúï†ØÁל÷/›£_¾:(ϳendstream
-endobj
-1416 0 obj<</Type/Page/Parent 1367 0 R/Contents 1417 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1417 0 obj<</Filter/FlateDecode/Length 1738 >>stream
-x­WÛnÛF}÷W Œµ‰eŲóRøÔq][m^+r)mLrîR‚
-Fô~4 Îhr>ÅýÿKM‰|O¾óájvpòqBaH³gOiÎhÝ[¯É¯”'“ñ[íòŸ=mlùL‰-ik«èœïÈ­l•Æä¼ISZhR‹Û-ùmÁÇhrº\ë’r•á££9®§ÛÇ?oÉädz/#†§Á>%&Õ™ÊÕëÅÀ
-öuîñ¨ò˜ºŸ³±qEª¶b(5ΓMH­•IÅ ·R¥vAce|LØÊ“…'…¶M Î]”vãL¾¤‚ˆTåÄù-¢çØWj]³LíB¥t¸¬4Œ©(²Uî£ç˜­Ujâö}k¸ ïQg:[Hl@—±¹{¸þ‰"›ç:òÆæx‡‡“ϵÿd»!è‰Ý áW•“ d\[û²ª‡mãkëS Æeê,ΣÔ
-v ,€–Ú{ea¼G®5ÈEi‘àŒqöÖ²µ¥B•H.²äHbÐ)סÀm,ͳEÜóÇäÈ¿öq€ð“€f+DéK=s¸À2‡CœW¨HsRüFà FÍàÇyšéåÆcí¼V1ÛÆ4žzæeó«>gx%¸ï. {½!×!7ˆ­ŽƒœÜnÀ–’2‹‡Ô<ëðXÄ]–H%„X¨²g\Sq¤˜<p
-¡C ní–:Õ
-•5r€Ï”@ë9^Õ5ríƒÌ5ϾëDU©‡Ì£EÿËè[Ÿ±}—Cð«´™x'ñ3"­k=ÓÂ×LM,‡Í2iœØšS´á¡•¾38@mÚ´[Dx»û6°ÚÕgô ³ ‹hu¾º j–¶äoÛñ@°”b–={
-Äé‰ÞI{ cëЀ]‡;[úŒQs]¼ìîïg}"kµNÕ¬v5÷wóE‡‹ ×~~—fÍ Pè‘q^Aü_¯QŸRo¼Dß­TÚC…{¬YV(Wž2æGLø{ñ^4 wpQ éüWwÙ¦úJ[èÒCÉMî` ÒŠ
-Š˜Ï“°zv{G¶Ý@&9icÒ0•Õ!|ía@¿BÜxø¤nBj­â<‰¿°Áî4‹ÁýáºÓE^· 8ųI­â(ÁXå‘ðæ•É…Ï(Óaf×ü óÐð;ž°ÀeõŒ|2ì‘M|/Zõ.1nµÂ(„Da„’jõ—:h4ž«Î4œªç¹š©Zr{B¹Çœdz*º¿‚Àƒ P5~Õ3ÍŠQw>èƒtÄAÃ36£
-io`ÔPò0ßr°ì¸Þ5®1æ€jû
-Î9›{ûîÿ.븻j?áþº¹ÇíMçõm Õ÷£—v%uo»÷ôòæYÃÿv½yÞž;Z†¯¾îݽíÕ;xõno훲ôMw^C`ò(]¿>¿¹š/c|xyÿNÿ›G{
-endobj
-1418 0 obj<</Type/Page/Parent 1367 0 R/Contents 1419 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1419 0 obj<</Filter/FlateDecode/Length 1763 >>stream
-x}X]O#7}çWÜ7@JfóAVU¥–
-µ
-¬öiåÌ8ÄËdœÚRªþøžk{&v&ÉŒ}?Ͻ÷˜¿†4ÀßÎF4>¥|u0}<øt5 Ÿéq§çøRÐ  ô˜õ?¼(\¾ï¼8~ü~0 þpC<¤þç÷vïñQŠð²ûeûˆŸ¦2g£o"ܧþ~5øq‰æšy.|Á¢øú O/)•Ú¼ì|>}½ž=<óÒOW'4†ØõG§ìÜ…®¬²NUϤ4&[Ï+é,= {4êÑøé˜r]U2w² ù¹&£k' /ºÇªûÖôÉ-¥•Thª´£µ°–æF‹"ÖÙŒ¼\6³«_
-K?ÑJäKUIKº"åzÑ¿>i_·/ÆÉ‹Œ&ÖÖ+I mØZ镬¾
-G¢,ƒm‰êV©0’]\¨çÚÀG§i.IU^ºÑæå>¯á0k°jµ.U®œ‚ÉV¼È§ãŒn‚4~»`?B ]eÅ]pïR¯”Ý LÒÐÔèÅçÓ‘’bAós]–ÂIo‚ŠT"i¶õ·µpÇà)Q­l×Shgl¾B§¨Š&X¤EÓžÞ‡ÈÈgX€5X¨ ͤ›^ß>P…xYí–©f—Å'£Óì„S?±6¸³“Œ¹Ö ¶zÝ#Yx
-õ®®BB€?‡к¹ä°K¤‘Ì(pK#ebGÄw‹‘¨=än£ ­“À^¨Òä1Jƒãå«0y5¦~¢Ƥ>¾TzS2Pê\”ðß³õ,‘] ãT^—¸ó5”3¹4$¯¢râ™›h…Y×5r4ö)êúÉë
-˜j0 ç·„=ol\Éî£5ZUHnÇ¢vKm”Y9ôõ[yì2Ê%öÄ ZzU"½Mc 9tÌe.jdX4ÑAVdåGÛGpayï$&ÊW5’¹ ˜g?ª@F—[Ö>û‚YzÔ¢-«…ó0ÒêÚ䲉ø0ŽÐ›Îð m»©=È E³·ö?) :ÈÓœ6KÄ Ì™XIè=ðYŒÜ×´™ò¤Ÿsð
-…Ø»ò-„²á ®=ø;Îj¥«þnfÚ¹ÀU„<­µò#¼_y¥Ö/Üš˜‰˜„˜”¡êYI§ð,½é“». 6Šç9˜¦/%É«¤z^εYj]Zø½¬c#º"Ê@t[q“Yƒ}ŒgƒÁË2;ä´?: ƒî!PŸ-'›†G>ÑŸ¨£Æ È9ÝnÙ%¶xÎ ’=AÏp»ÉS‘íOžL³á·©¿_øû¥¿Ž²FÃÌÓ k´Ý˜êÎo–þêï,kK7v¥Œ;»˜´v.æ¸Ø ‚ëï,+B ßQÕXA€´Gu ‘¦+„fz•˜› L=䦭sìð¥.r£AOEõÖtÙ¸5…âLoHþ#VঠŸ1s «60žÄh* œ€{{ Äx
-4F4s5Lý&±žCÑXi²oU¾4ºRÿÀ {zô+£kÆié+ìüïZš·XÀ;äîéˆó¢™]ß%zEQ Å ,Öê\!v…×á}šuè}½½ÿã÷ûÛ/w¿ §¿Æ¾Ê¼6Dà ÃY 5PˆD×.ÝA 3TaG¯p‡—nã0²’@ÓlÝV €§L®Â,mœŠŒ0ò™D=¤:Y–žþø–  p+Ù›IÄ/q&€§Äßʪàð‹Hè'U¥kØå#k‘¿€ZÁA_.ïÐጣáø…_ølB/ÎÛ¼2Í-hžRŸ ’5!9žÁ®êÕl ,cV‚WìÊ^"ç!ƒYz[Dá,x<žûP&û‰‘‘7 /Â&‰j;yÉç·û¢6_Ê¢.ã”am€’3
-endobj
-1420 0 obj<</Type/Page/Parent 1367 0 R/Contents 1421 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1421 0 obj<</Filter/FlateDecode/Length 912 >>stream
-xíWKÚ0¾ó+æIó ÀöÆc÷Ô®Z©$d‚Ùxì®í€¶¿¾3v‚ÙˆªÝöR©$gb23ßØão&ü¥0Ê B±ïL·7 \Áb‹ Ç(l ‰“$EÑýR­%·®©VGÃá#3–kœþ Œí-î; DiQ¹¹+¨€Ÿ¨Gœ'©¥ãý¤Aé6]ÍÂ
- ˜uG¥ð.îʵҥRPŒKHƒ¬4dk·Ã90¼£&Ê/¾ºV¶ì7+ŸÇíŸ÷v²ymÁ’%wOÎXËG¤Žw&|6ŒdtA~1bÔ}¬¸,8¨-ð—Ö &fAE¥ù¶ˆÙ%ŒTG?iÜùÛ©‚í`ïÏÕÚ2†¼ȲK›µìÅðµä„ó$‹R+)¾sÞ
-¢¬Ný\í_m· Á~ÆÃÒ‰Œá=íÍY'ùÊÆØ÷y"m²ö•ÃGÂ9e^”ÿ²$ýißûÊóMß>®ûöt8Š“qÃá»úhòq:OZÝóÂÂ\Õé%)Ó£F!%ô1ÙÍâA Sêh‰°X¡•ÁVÐ÷ñ¤0 âÑpŒ_ŸørzES׋ÎçÎ"¿aendstream
-endobj
-1422 0 obj<</Type/Page/Parent 1367 0 R/Contents 1423 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1423 0 obj<</Filter/FlateDecode/Length 1571 >>stream
-xW]OãF}ϯ¸âe©„M ª‹Ë"ñ°YZ¢VUÕ‡‰=Žg×ö¤3cØô×÷ÜñL⪮*”„Øžûqî=çÞü5šÐšOélFY=§cº8›àýürŽ÷)^FR1º]ŽNïÏi2¡e#³Ë9-sÂãã1-³ã§m“•F7êoá”n,­¤{‘²!WJÊu-TCµ°NZýbñ)šœ*‰jpÃÒ‹ª*ÊtãTÓJršt–µæ„V­ûaùe4¦dr–NáÿØ•Ê’-u[åðH‚àAä[|'É*×úpÒpl:KÏùØCAR!2CF·Ó/ÒxŸR!Te}Ð…®*ý¢šuŽáG¶ ’hh!jiIˆ¶Þ°%|iHŠ¬„ó\ò@5"ˤµjUIj€Œ6_©0b]ËÆ…|>£äð’9GØA¶•F4Âr©j@ã¤=iï!m¤Z—+ÝšRkÀ«¬³>ù…‹ MRbø²ËãÆ9Yo
-ÀðÌÿ‹Øí ú}¢¾JŒ—/L…‡Ãßh´ãŠYëgÎÇèš&ÅÛƒñ=qO_ÇBêfóQtEÖ:À_xÏ>¸ßO„Æ{–h%åBY›jë;‡+ƒŒ»:…Ç|1•{]nZÛ®
-ÉwX]ì´qÇ*¨Ô©Ýl´qôž¶ÒwÒ!¬A‘~…txÝD‘;d7F>+ÝzJNÒ«,çˆÞÞƒVbáÊe!ÚÊ“æS!’R<C ›-é*ÇS(E´>À¶ó8pÊì¤ ì`]uô5øaÛõZBYso»Ý¬€¶¡!..þ
-4?ñm€`
-í¨(<´°øÒëúŽ.ÒD)7{!R¨ò`òžð@«âèÁ8Ž³íáqç/tËÑ£Qµ€N÷Øt{ÛtØ\>` 7ºØ|¬’k¨g›\?ÆŽN®—“냹•^[Ž12øê‚GEü¶Xú ÀI$òfׂ™~àÂõÒ1öP{c à Íìä³aŽïÇxÐþ¸ ²äUÁ’ß Nïÿu¾w¡½§k¿Þ!­}„?±Á7çý ´I¾y„k~œpÈ<X:ÃÝO‰~²±²ð‰-µç×·ýéýeXI&3ü”»<£Ùì¼[ýžn>ÝÞŠö…ý»¾örÄI<ÌÇWßµ*žÏÏÓùì? y±³‘ËÑÏ£
-endobj
-1424 0 obj<</Type/Page/Parent 1367 0 R/Contents 1425 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1425 0 obj<</Filter/FlateDecode/Length 1414 >>stream
-xÍWËnÛFÝë+.¼©ÈŒ$Û’\4â棈“Æ ²hº‘C‰ 9£ÌQõ÷=w”ÄH)²jmøÉ™û<çÜË/ƒ1ð9¦Ù„.§”ÕƒQ2¢ëùe2§«ù ¿Oðe$ƒÛtðäåÇ”¸2Ï(Í ÇG#J³ó{ÝHjV¢Á·ÒRU*I¯ß?¤tÿ&¥Ûôð"¥Rá¡$[/’L«‚Š²’¤ ÷ÏQ/Yi¾JC"kJµ$aÝ£w÷áÉ£ôÓ`DãËdïçeceU$tWÐV·8ÓÐB7+wëŒÏ>yy">ߔʒm×kmzJ[iý˜ÒùéuSjEBåß±à#|J¿*QË_NÙ@žŠT½È{oʪ¢B”5šl#L“„“irÅ9¥+‰z |5Mkmm¹@™l&•0¥¶ThÙº
-µkÊ Ž ±…âìÞX”.!˜A}m(— üáÈñ;½
-zkÊZ˜m´ùàctUI3$Q5+Ý.W.E]圅:­+±µžÐ¸,íÇG =Çüȃ'$Pû‘
-æÎfà+67ÿƒšEÑå{g
-êª#àÿéϵ+wè¯Ó× ²ÑßZ …{p]á†l=$6b1À‹†4¿VlV%šùíhs»Ž´,Ž”>]Rœ;ÛïíÏ|LÞšë¸ ³Hù.Ü6Cg}Ñ8£L
-endobj
-1426 0 obj<</Type/Page/Parent 1367 0 R/Contents 1427 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1427 0 obj<</Filter/FlateDecode/Length 1346 >>stream
-x½WMSãF½ó+:>AÕZkË`C*›*›…Ä>²VŠCÈa$°@Ò„Wÿ>¯gFFf‹\ØÖL¾÷ºùç`L#|iæÓdJQ~0òFtr6ñŽéøt†×>~JI‰yàOfo,‚ƒÏ—Ç4SÀÖôtFAL°3Q.jTMkñ"ItP.¢uZHRUkIº YᥨÌÉMª×T)
-¥yœ©Hd¸£+YRXªÆ_Ü+Ìá&ãT‹0“GÁãÁˆ†ã‰ç#€Ã•ÈCAI©rXŠTž$h¯µ°!-«ŠOp@‰Ê2µáwê¹JU¡)µ‘þõ©PdãtÄH%|¡çXç¡©"¡$Í$ýÌO?_ŽèÌ–g裄ˆÜW¬rû.Á/T¨ÖÞÈ;íÜ ýçžK™È²”ñl*M™|‘}¡‘ ôŒÆè7r81qúÞÌ£•+OýL nA úzs5_^Û«¯ú3oʱ»æ HÄ1ß²mA_d©¹Í‚îÒ"†M†ÆW[Œm{óZW¨HÅý!8;÷Ihmµ\ÛwËéðâÑ¢¡X&¢ÎªO»oË4eÓz>WEU¢ÿÀX¢JNÐFTˆ\R
-w™V{zîNõPÊ ¬ù6üÜ’¢Ág¨„¦Mše@´O”&ýÔJù2äQ#@ÒÚï¥Úóv-«ÅòfE&ÔûCÛ™_Ç‹_îàªZÓÝòz…®Áªˆtéöë¹çÌúS ÌKDm9©IÁ¹ÉÁ@µ€vÀr/9²Nó`Ëp2†OܯÝn£]Ä?Ì5Öè•ŽÊ4”±GBÑž€Ÿcx»Ã‡V'Ö{î¹~‡Ñô?q¸‘º ¨Gö=$~ÿp‡ÅÓ6ØÕã¡ßeb+®VŽwKš¤k[=™93¸qz 48Áf.8ÕfioûÍu¨mFŽF_ô,J\c ç!¯xažhËMeñ†±EVõªØؤ*c†Ônã0œ²ìae—B(k ±•uÁ
--­óVé—7ßΗ׿Ñj~µ˜SpC‹‹¶u.Ñà÷ ºš¯‚‹oL¤Ø'Vwvh³›‡—Ë<dæÛñBNÒP}ÁpÔ´rÂÅâºÆ/“—¥˜È6¢Ñ<O]Þ|òÍøtX0³OÜô¬b™oÉÕÂ…”an` oGkÏé^vví{¥ÿDÉ“íÚ˜[ùrÕêÌÓ]¥àÉI{è…O;<Ú7 ­}ß;5¸‰¸BÚ,¯ËŠõú–‚nÞ­y­aÈZYìJø€' (Kl+˜ß(ˆÐVA«HjMµ¿hŠˆ#¬E`Ð6ªí¹^#žEôQt²ÖQQ3¼][Rb­SØØ:Ç{¬c(S$cYD’îÃThŒAk…¡¬×ªÎb»ÖÙõ¨ç· »;{Æjü? KA× «Z×<(øPkÄl
-¼ ˆPÕø]4<‹d¦å;,Ûˆ¢rîÐls][ c­-+G²;ž[ýýÛY
-›ÔÆ”ËL²´2ñ0™_óSÌ&¦Tㆮn0¨sÔ]~äsÕ~Ê€ëUÚžÔ?ݹ-æ,Çm^h·ß‹"”èñ]r‡Åe‡$|¢ååë:˜¯<š›¿­1ˆÜvdzh¼ÍÄo«Ò†@Äsñ=Íëü•b@ºâ†Õ©cñxŠÿ8N'4šÅ×Jím©1°Eu.±{ðæÍ>‡íñál„å:>üè¦z<;öfpOpÉg[ÁÁÿê$Öendstream
-endobj
-1428 0 obj<</Type/Page/Parent 1367 0 R/Contents 1429 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1429 0 obj<</Filter/FlateDecode/Length 1591 >>stream
-xWMoÛF½ûW t©HŒ$Ë’] m
-ßQ'ƒÇV*³u¾E.~d·XeG]ûIŽ—VŒpŠó1*ÌBü¨Ÿ»ÍÏoi¡õ%d-¬e r ‹Wç FØ’»y8IˆOáÉ1T ~
-C;UUä`csÈX8»ØF{LŒ>³=wʈf ÃÐÏï4Õ! e¸QoEMá®{ü¤$ªÌñ€¬WDãõ‹êYvSŸÝhz‹™sïçÆÓfˆ ö,ð‚Š 1É¥>'.pÌÃþŸæ]5Å cáV -,“#H‚au­õ–UŽï’¡lcÄ
-z‘ K=ת×CŸÞ%zæb?Õ9:GBøwŠ½õQRY
-endobj
-1430 0 obj<</Type/Page/Parent 1367 0 R/Contents 1431 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1431 0 obj<</Filter/FlateDecode/Length 481 >>stream
-xRÁnÛ0 ½ç+rizˆf%Ž[lvè°!zÉE¶éD-y’<¯?ªIš.†Ámäãã{ü1‘Hø‘ÈXf¨ºI"d2 ¤ëœÿ|¡y ¬RÉ׫ÀC1ùðù2GÑ0V¶–(j0N’ ¨f !¯6Ti‡€ÒYUWʨºvä=ùÛâ™1RH.óE.2F™}iðbCa´î€“¡0M¦(•§úo0lgu _ªë[‚n ÈÔÚpe²½EØ“‰°uÛ§p_¹äÁ¹oïlÙRçž´©íèAŸ˜ÂÎÙ¡÷¨-16Àu~è{ëx&$7þ=-S_zEXU¶/h•y¨pÕ—µ½6;(ŽÕZk±áhÍMà·;ˆ£ZÅçËT¤‘5K-‡6è×ÙM רêúnTW*žc<ó÷èTµ×†§uØ£;ƒÐo Gw°W?é’xIøSè«I ±{¬;ó0½ÔMaû ­‰Žù®•5ML_½x¹ Ø½Å·³;Mª)(Ýú“JëÓNÉŒ—y½„\åG‡7÷÷øæì3Um5td‚Š}#Óù¹`ž'w'mÿkÓ<y¶æ%Ž†¤ëS1ù>ù ïÿ;endstream
-endobj
-1432 0 obj<</Type/Page/Parent 1367 0 R/Contents 1433 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1433 0 obj<</Filter/FlateDecode/Length 1657 >>stream
-x…WkoÛ6ýž_qá/MŠDKÒOÃí–¡È°ÆE: À@KTÌZ"U’²ç¿s/ÅØÑV MH¢îãœsþz2¥Kü›ÒõŒæWT¶'—.oæø\Ü\ãs†ÿ^S}òãòäÍû·4»¤eW®®ohYŽ_âNyúÓZuQ{šô{׸rΖ_äéuzãb¾(fxçt^L zX«H
-–]:ý}:¾ ét8>».®øøÃZ[RT6FÛˆãÚ\Ö¦Ñd"•Ê"¾¯½0gi’ÌMÈùt¤Ñ*è‚–k?§ÑQ0mטz3+Ïðû©G,6jM‘³ŽÃ¹¤‹é<Åì¬&ÝMkp€°†­õMTV»>4û‚nHÓ¸]:7„ ¯ÖE
-ÚVsO}W©¨9{°†3l9h¿Õþ|@\÷‰V}iì¶:îœß¤8TYê
-é2Ñ)ñjgƒ |ŒB Q nlàSÄ
-›ÙÈ‘¤XMÝ¯ç¦ d\p³Ø»mµ€1ržLCRK)H^µCŠ¨ûЮª„0…·FÑÝû{A¦_U.rß[Ëï'"pN¨L²VF¾‡(Ê‚RwñÖ j¬‰É=ßs•F@£/=ßa˜¹.8‚Ô&Ï Ø>€ ´ŒÝ*/ õ‚‹µèçwwþõðñvùŽ.FîÖgZ 0“1–ÚØqrCCÐíL\ÓÎÔëÐTÍóA˜ÍÜmSÿäŽ:Ô/Þc˜FÎqk$\ßT¨Iª[v hÂq®[ã³ÒÞõ…£žXƒm…Zb€Ë ×{‹µÇŸÁT`äf¤s×ÕÿŸ0Ì“uH=Ûp ýÖc&¡f¤î… Æ´hU/Ɔ´‚QÖjµw-x|0¶â‘Â~•˜{ÝÂÑë$lP«: ·R @P žÛ9ˆ@?&Ä<¡\*ÑGCŽKH—‘Åîn$4VÐ{½;6‹0p¶Ù˜ go¹D§·ðSkn€|ªô“©5hÛ-z•D4Fé bc"`Ju^•ÑÈôBü&ØW½"„¼£Êí2ó•»åäˆAª¯aœ1ÃI·“Õbô<Š¸ˆåÔÏ·hzI|
- ÆaÂ×uБf ©Íc=gßY+yÀ8qÅI¤²Ù¡é=£•Ó?0ÚuàÇàHéP·ÛÑ@7ÅK ÂáEAA#äî–Ü‹ÔÊm1Îó«Åöê!ì' ©a8! ð(ΓMæF£FAÓ|Êk¹šË_,2~>¼Ž 9E×ÉC3V fY5t®ô
-/ÿUs«=0õHœôù$OÞØÁËœ+ÇŒc¨!æ `AýHÇ!ßÌ•*-¾tm§#w†”0\XúÂ%éõ¨œLÛêÊ
-í2hä èÅæ0Á¹¦o1Á>Z!Ô~
- a‡ h¸Ÿ+ïΡ¶r{ÞÀ¸µ£#¥ñÆî0x"M6­l’Žc7HCdí<Ê…?Ž!AY²õ¡—j®œæn0
-ŒÛ삼cã7c‘_³Á´[g²S_Y=)ÔëqfK2g…P ž¸c$Æ‘k.—,Ág€sq¡:ÒüGyÉBpÎ…–÷€¼3æúÁaq÷F\§mðÍû›Ã—¢éÛyÁ_¼¾ñ}kq½(®¯nðý Gfßq ï–'œü7x —endstream
-endobj
-1434 0 obj<</Type/Page/Parent 1367 0 R/Contents 1435 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1435 0 obj<</Filter/FlateDecode/Length 1631 >>stream
+1148 0 obj<</Type/Page/Parent 1119 0 R/Contents 1149 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 463 0 R>>endobj
+1149 0 obj<</Filter/FlateDecode/Length 580 >>stream
+x]”MÚ0†ïùsÜ6›ï#¬h‹´[í–H{‰”ئqRÄ¿ïŒÉ€‘¿ž™wÆNþ:>xøó! L ’Žçz¸2=~ÿ ˆóŸÏÍ®ÐÂÆa(! \Ÿi %$ᔄâJÈ7`q %ø^è†LäŒjä¹9S­SŒÏÐid³Z Š ±bLa“ÆPBž’›Icˆõ‚ÌM˜hë%9®ád2jÁNfF qä¦Lcˆ^R7bC¬‡3äI9“šÑÀ§’œQM7æ*ctëçwe9S/Ñ]]Ψæþ]f;…8Á|xR
+´@S`ˆS°†&¡ÄëGš4†Ø‰ŸÑqM"gTSÜÌ*cT3Ÿ.ì¬2¦)Dw±¶“(ÁóŒð<ðß Ø9ËÂyùžãí‡b‡¯K’fPÔö-Á•êi­úN×CÕ7Z}+þàÞ]{Ÿñθû©84Ne×C¥U_6ÊÀ^(Ñ•-4j§A+8è3ôÑôeÛ‚)嶄RÕ7wÍ~@KýAØ\ôîºï¢87&µéÉ…Ï~8Ön›£h/ „¨]øx[-6+l¬¬1OcÜÑrÊ,Óa’årÛ
+ªðŠŽ…ê͸3™wÞ
+ü¯¯ÎÉs!L›Åûrñ`f-Oþ'jØvúlµÇ†Ç6~Mu„×N›a«DË[ÈËuýKwÇ}§‡Ó,퇦©ÞJõ^*;Ë_|”ÆœuWÃJUÝåDÇF64ï±Åln1Žé Åi<žr”áÇ0‹ð> ˜Rܪp>ÿ­ÊJ£endstream
+endobj
+1150 0 obj<</Type/Page/Parent 1119 0 R/Contents 1151 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 466 0 R>>endobj
+1151 0 obj<</Filter/FlateDecode/Length 1069 >>stream
+x­VËnãF¼û+:›
+–>T]“2%­Ùº½þåæúÇõñðx‘bàuyù•UIaÇÔ(C­Ú²O[§4÷[' `ÁÖõù.*µNoºÀ%tØ¥8TX”6TÛàÉVÔy®ºš´©,¨€½
+ÚRÐRkµ‘2€ÐÍ1óV5EÞׯhBûa8<™—¥Ìºm²¢sIDrn:]—¡ÈâFåôkª°TJiµ¿¢J;Îu(Ž¶ÎnjRœYOõ%eCh¤ÒÛî9ÐL©BaŽ‹`Ý1£5®'¿³]]’ê‚•ä ¨ü(z{¸ëL3‰ð$zrd[v8ƒ¤üÑnNJ£ºc°ßùNÕd˜K/LTe£Ž«ß ±H*%ò‚šœµáû´zRT>˽¤Îò¥Á@”Ÿ¶ž:löÞ—;‘ˆž™Ò2¾åBžm¥ä>b+ T6jS³°Àü‹N2ü0µ"ϧÀbçh½À±L›^}1“ïQ£®€H=Z>Ö¦iu aJ‹ `˜ÁÐÁD¢µ½Nˆë÷=ýý(eŽ6—Ñï=*Ï­‚8ˆÿéä:z°›Î¿æSøz.ððÿ/
+cӏ
+endobj
+1152 0 obj<</Type/Page/Parent 1119 0 R/Contents 1153 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1153 0 obj<</Filter/FlateDecode/Length 1420 >>stream
+xWÛnÛF}÷WLòˆ©«%¹@’4 Œ"—Æ
+Z#.Š%¹$7&w•Ý¥ý}Ïì’–Â*AmX–ÅÙ¹œ9sfýõlJ|Oi5£ù’²æl’¬×tx±%þ˜ÐÅô2¹¤Åz…÷«urAVRÛ N?¼t¶ó‹Ùƒí ö½)Íf‹ÓVxŒÎ¼Øœ__ÒtE›.×SÚä!Ø„6Ù襕ÂKò•$פ”]¨²µÂ+£©PµLžn¾À¦8ÈÎg«d £M%‘’ÀͶ–';R:ø–ß‚‰#צ¹²2óÆîû‡¹rÞª´å˜ ]Á¦,¥ó´7-Š9{h8 ŸÎ“Ï·hëzOÎÃLhrRRev!¢Ù²;G¥!oJ –ãm­È¼ÊdB×0æ²ÜŠ}0–D]ŸÅsÉËdÑ•LNq±H¯uœÁ‰ªigÚ:§À˜‘•.©VwN¹_"žºd8§Éb>ƒÿ‹dߨ‹º¯ÏemRQÿÝ— &?†ÕÎػҚvK¿ÒÛ›7ßúÐϦ±A½/üþ\!÷o°)[®ÊÜÁŸ6?Ž ËУ~oz ÈyWÒ|ÌbI»JeU‡ ðEÀ2
+„þ¤{zo´¤òÞ“È2Ójd©ã¤½—öàf%ŒÐI¼(Kµ)ÑR-IÆöwy*~LÂ…†²´='t;zgë…ßD 9éƒáV_áéµhRAÊ")‘7/>¾ÿóúêÝ›Äóƒ¸Ì¢\z¡jwû´oHGŸ‡ üùøõE7S#pìPÚyàŸõó6,à¤6¾N‚¢ ä&Œäƒ›ðàO†ñ¥L‘–Sd(‹Ó®ÂlY'ëbÈ𷜉k1Ô<}Û6‚ÒGŠÐ-¦^Ò¶@•mÝVfªPg~$;愆IÞŽxsYˆ¶Fè–A_ÍÛÍ;Ê´ázàwÜ:;®M&ê1JŸVéxäöé°Ì×p×T©4<7QîDjP¯“Yk•‡°HïA9„“솈\Å¢Nb
+æ#T†Ë0YÛH=äħwWýsýêå§W›æL'ªY>Ÿ/:…é„Ïvº£áñ, Jx˜·#A¾òO ¸ÍÖX/0?¿Ü>Ò»µÊ¹4SpËì˾Íøbqþ¸Ê>ˆ©)­h ÙÅáCÛj7hÞûß9¼æ6×üPmDÂtÃé‚£@õΰT÷Ø0š¤µÜ0é„zØËe៣â ÍkÌ ÷þ±X½œÑ"ÅÆJ%ºVZ“aBÐì¡ïçõNì{=(Jî¸ F7«„ÆöÐòP>Šf'í!0¬p!á&ÍC o¾ïÆQ¿o½ieV*‚„PÈ‚Ž÷’ !Ì…lx'ËšŽHRZúA´QB¿ý0b]Ãn(5¾zD¯¢€A¯yw²Ñœ×ã¤ZqÇ*~€&j` ä+ëtøy¾Ï¸¸ÐäÑþÕòí
+ã ÏLÂÕÈ”}P鳱͒ :ß7p ¯Q>ºÐï´ã ƒ|º{KBVbÞ:*kk=`ÑA ú¥ {”¬בXy/ö¸ ycó¨OŒ°Ï0gšï=Ñ#‘Í h. hÖ˜(VL»£KPÃ# ò{è _ 'Á=ø;lsq
+endobj
+1154 0 obj<</Type/Page/Parent 1119 0 R/Contents 1155 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1155 0 obj<</Filter/FlateDecode/Length 1340 >>stream
+x•W]SI}÷W\݇%@@÷ÉTâ®Uã*[©T¥j«™é‘Ö™iÒÝ#ðï÷ÜîAc´j@¹_}î¹ç6?bêâ7¦QúCJŠƒn4ÓúaîðG—Ã8Ši0á}ÿ$ê“‘”Á¶ ï§GmÛ‹ÑimÛƒ}mº+ìi/Õ–ƒ!xÓ“;§h’¡ÚáoRŸ¸K“¤uë„qª¼£Ìè‚T)]%ºÌÞMî:Šãà×îà׺ú2ùôMf8Îs½`Ï…ÊsšJJU–I#KG*£•®¨²’®.oI~yONÃÆ:£¦•“)YiU"-bn#NØ¥voq­¿µ~ á8Ž¡P  öÅ´:Ò%Æûy¡­ˆ¾Îà¦,¥2ÃqR2×ÆQÜ?í¸dÑeF¥v3.}ÃÌÍdI"…=åðÃãAÖ5Åý¨Ç5ÁÇž…|ñ0uÅ€nª´m[[6¹ž×¶q:«
+• “¯
+BП…@‘FkGÊšN®‘w¬(¦¢3UeÇSˆM0v¯%
+ëç²+*%ä‘Xב#U:i2 ;"=wJso˜–^BÙÔÎe¢²•7¿¼æñ1ÒÚ-(x°€y!ìÈKÞ:tD7UN{Ò( –EZÝ…ÿ72µahjNuù»£Œ-X¹ê©Ñ"MЇú±üø|ÈïÁè\4I Wðñ,lg
+|aI—
+²‰QswìM-ïtîõÏ‚ßô/ø„þo·x{8nÐ ~‹ë1Í¥™a­Ó=¹•
+Yèz›©ã½î/GÌ{½¿Ýà(^›MK ½ÐÕ¦o»6)ȉjpÄúõ7–ÿFw7¦Ôç†øláSõ­ù·Ã°`g Š{ëþµÜþèÅ™+û_ßžÚw}ó|¹sÁkÖgˆ9%—2©œ˜æ×Pçk^+X‹’YÁx¿ }y w®¾½}PÐG‡„×ÄÛ.My‚ݘÉP‹/Ë_¦Cˆ¦QáÖj’È_eÂgãZÏã!¾Œû4£Ó>³ðöüó‡sº6ú
+Iuâg¬ äk7íQ-Ø¿rŒÑhˆ/&lw9õ§ÉÁ?ÿxƒÂendstream
+endobj
+1156 0 obj<</Type/Page/Parent 1119 0 R/Contents 1157 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1157 0 obj<</Filter/FlateDecode/Length 1153 >>stream
+x­V]oã6|ϯØ-ê
+™&Ã7HÃëE^)©=u?R|iØV íÊ8¯E-‹ì†
+
+ªíþþC;rS#ÀZ&”­ÐÃP£6(ÖØ5¾ùi£»‘ž¨u7?ŽU¼`›Üh ÑpÚ°tP£Õý®¥qmëìg•¸öÁ'Ôëí[¥' Ê¿í™l»Q¹¨ i#þÙy0Â>ƒ¨y[“=Æ×lU¨[B%Ü6¥1ŸªJ¾j†‚õ' ž/£K2Ú=Ñ ÍÆ %‡Ì+q+!"¨®Sz¯À–n; Tƺ¿ŽüRU,L=f4:'Ô¨â<¿iPcˆ/详„û›=¥tŒÖ&ÙCøBºÇ¶½€øw#žbB@`Éj!ËF¸â})«ÌåE|ŽJ‹r™ùØ!¿Ýȳ'ˆÚ ñŠÜë…t=Žã´JßßýMbOí¥55Ìx~5;!Oø¯ôô>|\fác°>ሬú~Üh®f½Á IŸ'Irà¶7{áöÔ¦ÑÁ[…rkŒ
+¹|¹ÖŸÏæóë—çW׳ùü§XJ»¦Ét·il¼_g4ÇOt9“¯Ÿ*®}Ø…ÖÆbo…åÿW@ÕƧÏ`ÚS8½^÷°WÖ°ã|PI.:ÒÔ²ÿ$¤¬äÂ
+/Oš ç- A‹f‰cßÆXÿ] pº)é§ÂÓ!Ó4Nfo?½{K¿Xsûйɛ§
+endobj
+1158 0 obj<</Type/Page/Parent 1119 0 R/Contents 1159 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 469 0 R>>endobj
+1159 0 obj<</Filter/FlateDecode/Length 1491 >>stream
+x}V]oÛ8|ϯXä¥)ਸ਼ã¯8œ¯Â@⦵Æy¡%ÚfC‘®HÅñ¿¿YRrµ=1,‹ÜòÇIºøëѸO#ÊŠ“nÒ¥aÿ"™Ð`2Æ÷>þKIk~¥ÇoŸOúÝI2 Áx˜ô© þp˜ôê'M‹h0òŠ_ÑŤ›Œ~÷bÜûuÃezòáö#õÆ”®v4éQš(]J³³åVxš­)Ý*³qtmÍ;OK[>ýý>ýŽêaï<ï‘5ÍÏ°ÚXÏëi…Ž„Éé`+r^”ž¼%~ùD§û­¥}i½äí”–d×äKᶧøMš‘«6é|[Ä;ê“Øeèñ ¡²÷.@²‡7ïÉ+­Ã¦Lè‚r»7I½²? X™rÆU¨ÍÖ£"礴f׳éçù—Ål‘ø*àW·Ó¯ ³Á»çBç«ì)âõå!Ä(„ÒL€V€nËF#÷nSÚj‡
+´µO„Z8ü·›éõý ­mI¹ôáß'´ÅJÐV8ZI vU–IçÖ•Öl©ZËœÐ&¿µ•#ŽYtÊK×Ê‹vè|¯rÙ!g©‡J°…´F’ÔN†$[È.iWÚ•–E(ž³ÛgYfXMÊ'ô/Èl¥‘X#V…Í\Ár¹lådÜs— C+¢”s• y‡ãêÎsÅMnwhÙth­^BøÒÃÝÍtqCNBY
+ʿโ¢®•Øë¸ñ‘¼ÐÖ”Ô3ÂÚŠgÐ{Ö¢ ®}Œ z¬C;ʶbçe^°Úl„Ç‹ê͸ÈìNÒìúO°.ÞZTÚתC_1¿´ÒëêÝ »ñÂàe³LLDj_°§¨ ü Pã›-ºg×Ǚ ²ª÷Ÿ`U ˜‰9 ’Æö ýƒ‡F„ïŒô+e]üŽ\±J2kÖ­¼vÇÒHhÚTðpåÞ ЙXˆÒ{n-g0,¤dƒz¨=‚êò#WîÏ͸ÚÚ¨Î
+endobj
+1160 0 obj<</Type/Page/Parent 1119 0 R/Contents 1161 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1161 0 obj<</Filter/FlateDecode/Length 1726 >>stream
+xW]oÓJ}ï¯åå©1ù(IûÀC¿Ð-miR¸HW{Ml¯Ù]7äßß3³vn®P‘c{çãÌ93ãŸcáߘæšÎ(-FɈ޼™&'t|2ÇõNS.NO“ãþýóåÁëw§4>¦eS³\d3£-ÓÃ;gª`ªo”;[ÒÃÍû(XRtQ]º»xµüÇ4GÃÉ—–¯ñbÍ´£°VŒ'õ¤L¡V…¦'£ðÜ—«áJy‘×î /Š#EMe~ÑÚú@Öt}wO[ÛàGQP¥ñ:ÂHmY›Bs#Ž§É„]‡µf«iŒ°vö›SeB_pªÝiSù `MÞO© pN$t¯œÀ¿çš4[ášMË+”[×ó\Z@é€ }Ò>›Ì€9²ÖxÈ
+¿‡ÚzoX^ˆ£…‚m <>gqHÌNÿl´ï§ŒF‚"xØ\JÛcº‚bÌa\u…Hµ?‚yÁ°/ *Ÿê“6V©£ èdÇßã€Ì†B ANŽ Õ1tÂóbË`
+P‘`è§9©{U‘œ¥ {ð·xºF X `®`î¡éÀYÔûhȈQLcXÜ Bk€  ªç»5 zìB<ƒi ³NJðq=Ó­KRܵ}"—€²ßÞȯmSd”®5ÏÎD‰jeæo™ø@ÈoœOy1c£IÐ3p.4Ð/C.3AöòA@{ÒÞX'‚«Õ÷h™â£Ä‹ ú­Ó>6AW§ ‡•ÉÔñ -JÞTÓܾ* Vy…x•ï9oõ{'k— ¼GD^ª`aœ'’ä
+q …·«g[‡\J ‚Õ¡qZîÞÂÐÃ7‚ÄuÕBÇ.iì#Mø¸ý»Ù]¡ñi¡@ð½­8†ý™/m”·ižú¨*×x×ÌŒ¸» U*{Þ9x“
+wÐsê0å-¼cJ÷1Ó-îX±¬„9ÏJªöGnÓû߯ߴaã¾üN¦4›âž½8ûp~FwÎ~ç…æÒ¦ /OÂgØÎG§ü­ò¿>úŽçÇÉ|v‚oFœOÙÐÕòàãÁ÷÷Îendstream
+endobj
+1162 0 obj<</Type/Page/Parent 1119 0 R/Contents 1163 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R>>/XObject<<>>>>>>endobj
+1163 0 obj<</Filter/FlateDecode/Length 161 >>stream
+x5ÎÁ
+Â0Ð{¾bŽõК´!ImUð TŒàµ¤­¤ØCü#"ËÀ°Ëƒ}š†A–¨ÌJhA!T]pp%S/S„™´šl
+ŒAÏ`"ÝTIkè Q
+m²ksjôÁ/“‰Øyó^'‡h½Ûè…ä—ÿ`Öë¢uÌÁ¯¸wDÝÓ&‡¾û*.y!…Jê1cü»Úkr!ßÜ0endstream
+endobj
+1164 0 obj<</Type/Page/Parent 1119 0 R/Contents 1165 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1165 0 obj<</Filter/FlateDecode/Length 1583 >>stream
+x…WQSÛF~çWìðÌaÁ4oÐ43<Ĥƒ;}(ÎI:Y×Hwê„ñ¿ï·{’°EšN&ÁÁ§ÛÝo¿ïÛÕ?G šãÏ‚–—tuCY}4Oæt}{“Üàß%>_â¯×TÈ‹ù2¹~q¿>ºøü]Îi]à®›å-­sÂ=sü&;}¨ï^tN©wÛ`소¥ êT­ÿ–'ËøäùÕur‰gO_´1zK®ŸŠ‡¯i±è_.‘#?}¹'«Û­óßørfrHQ­³RYjJw´-MVRVmÛ@™²¤²L>W™Ðr¨Ze¥±x ªáÎIžs:_\Åì‚;ÏTU¡¢c)IËÇ ­Kâe™³­26¼]Ù–ª% ½VùŽZ‡€…öT˜J“²ù…óHÝØ–׎ÌäL[jÏ•ï…³ÜšéŽ ¹r
+Òo)w¸Àº¥dU—ë·D"ÈÄž´”uÚjG*EÈ*w’
+`ö‚D}³Y=IÅlÂp$ÒÓÖi΂cêª*8b­z'z{]ÃÕ³L*æ…:Mp¼ˆª}> úíwϧžÏžÏ¦Œ”v»q°AEµ
+-Û
+<Yã<±à¢Ø=ŸQÚ¡ÕÒmž¯V󡼌ôÐè̆·™‡CçÃ5h{—&´Zß=ÉRò.ºPæà,XŒÝƼ";ôŠ+T¢w±Fm_Œw–M2Ú‰‘Ĺc‰`Âp?þ“»Übæ(Sf t†Z¦šhQFÑ×»e‰s:$yKìc2¸$yÿm;¹ŸÁŸÓ–®m a°_ÊÐçj¬Ž×wv¼° ªbWņ3CåÇ#gûáð~6ŒsÁúqCþã³=SžüðE°sÅ4û8.d.±ZeÙÁœ"GYÇC}ã2n’¦ ºÂh‚HÆâ¹ã`)k)t)¶dôˆ©;!Æ;ÛÍÄQȶ&]
+endobj
+1166 0 obj<</Type/Page/Parent 1119 0 R/Contents 1167 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1167 0 obj<</Filter/FlateDecode/Length 1757 >>stream
+x­WßOãF~篡J]â
+šÅðd|1¡Y$ï‡4 î­×äWÊ“‰ÉxŠ¬vÙÏž6¶x¦Ø´µe tÆWäV¶L"rÞ$ -4©E‚í–ü6çc49]¬uA™JñÒÑŸ§ÛÇ?nÉddzoC꧃|8ŠM¢S•©%Ö‹ìëÌãVeµ_×f#ãòDmÅPbœ'“Z+“ˆn¥
+íµ•ÑxpÆVž,<ɵÍáhlpg²%ÅØèD¨J'Îo=ǾRë*˜eb*¡Ãe©aL…¡-3ˆ=Ǭh­5ÏÃMx:ÕéBbºŒÍÝÃõOÚ,Ó¡76Ã3¼à8œ¼®ü'ãØ AOìö ¿*d -áŠxØØ—Ulk_Ÿ0®gq%V°«al´ÔÞ3( ã=r½¨@Î ‹§Œ³·–­-åª@r‘%GƒFH)ÞDnci–.¢Ž?&Cþµ?Ðl…(}aÂgXfpˆ³àrjNŠßh¸Á¨Ù\Àb|»3Oó#½üHýh„£×*bÛýˆFóã^Ǽl~µÂçô§‚kÿ¾6àt¯7ò:ä±Uqƒ“Ù ØRPjq“˜g
+“î
+`µ°k=?®¬ ? fQ™GÊkÐÇB^D* 4¸qežÛB€êä­ÐybB%ăA‘ Î<—êžã´€$Dª0áOh#$É®hëªR7
+WF‹Ä˜\5ª!•ájˆ´ ³
+…-¥ôes%—¹Bw4ë é Ç&DR¸}ˆxq𛵅A5¾ÞÝ?Á÷V‡½@œaÇÝ`7¥{í§w¿>I›qoŠ=I솵¬½ŠÑk‘ne.©Œ7èd¢¹0²¼US®mú^êbˤC5u½4BÛVGCb䘵Q»
+52€Ï@ë9^Õ6Jí‚ÌåξëX•‰‡Â£;ÿË蟱}—Cð«°©x'ñ3"kÓÂ×TM,‡õ2é œØŠS´áyE¾53@mRwZžDsÛû6°ÐUgt ³‹èU¾Ú ª—6äo:qO°”b–={
+ÄéuÞ©zcãP]‡;[úŠ)#]ž÷v×÷³. ‘µJ§*V»Šû»Ñ¢ÅEk?¿K³æÞ'ôH9¯ þçkÔ§ÔGuÑrK•tPáöj–%Ê•Œù“þ^ž‹&á
+Ž"
+$ª[WÿCas]x(Y iÀ DQAóyVÇnçȦÈ'Lš²ªU3ø Uã“Ú™¨DŠ$ÆaKí ­Ãu«}¼nATŠç‘J¾Q{‘ÊBÝã©Ë+“ ‘Q!†§ÁÔ®ùâæ!Þw<UÄêØ1ì‘}'LÙ.0nµÂøƒ al’2Ù—¨ÅËÎÔdªf¸Š‰Zr_BGœÇó):¾‚Àƒ ôP.~Õ1ÍRQµ<ƒ´Â^M06£rék Ò;Pò
+endobj
+1168 0 obj<</Type/Page/Parent 1119 0 R/Contents 1169 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1169 0 obj<</Filter/FlateDecode/Length 1779 >>stream
+x}X]Oã8}çWÜ7@j3¤-mGZ­DaX¡]
+ Œæiä&.õƬíÐe5?~ϵ4 eŠÒؾŸçÞ{ÒR:Á_J“ Ç”­N’锶ó„/'4¥IJ£é÷§ãä3IKìÅÑÏÃfe2MNÃÊì!º¹@ЧËúLKJ“Ñp@cH;Oé!÷ÛNè!;¢Öç'‘­¥t4h=Åm|:Ü>ýyüðãà„ú) ‡<ˆéø‰§>\o-¼“
+“ði_ã—(´Ylßìlygé|ðýŒ×™¿žã$¾\lÒ|È;øù7Å;Þè?xzAï,­W·ÿ¾]Íïyë§Ë¥)§¢rÑL|N»s]Ze*ŸH/i£méñ(íÑ GÃÇcÊtYÊÌÉœoä6šŒ®œ4¼é»îØÓ'·’VR®©ÔŽ^„µ´0Zä™°Î&tr›Ö¦“§n%,ÒZd+UJKº$åzuÊÄË£f¹Yv:³¶Z¤Ú°´ÖkY:Ü
+G¢(‚mÕRtÃÅ¥zª |tš’TéY©mžŸàó f V­_
+•)§`²Ïòñ8¡ëàÍÓïçìG„mJÊv·tÁ½ ½Pv0IC3£7ÿ”L Ú(˜Ÿé¢Nz‹Tì I³¿…;–
+ÜÊHÙ±#¤€Œˆñ‰ÚCî6
+ÚZ ì…rí<Fip¼|9v–†Ôï(…1]ŸK½) (t&
+øïƒÙxŒÈ¾ãTV¸ó5”3¹4$䯢tâ‰ÛÑ
+³J®klähìSÔö“÷p€ˆEØñ}/8»‰¼ÙuB#gPÚÞ6µ¡ß›^.#»†e,ªÌcÀG<B(e¸ñÖq’‘é%ðáçZDB¿pÛ%©Ç‘‘™T¯¾È¬F3G9§g)ŽnœÐ&¯Ñ¶Yì8íRgcž¨½cË°À5̧ƒD?$j!Бk©~kB—ÚtLp,-VŽ¡¶{^m|ø(ìu¸­öÕØÔ¡ ú
+Ý ft”³ý]0ÀÄPƒ
+ÕCªš²Ç _ù"3lU”ouÓG»Èœë ÉÅTµ¦w&d5ãâÀƒ= Ôãqoë¢^ÕˆzÌPç3–w¨Að,Mö­ÌVF—ê?àì¯Užžr%tå@À1<}¬ÿSIóëy‡ë=q¢ÀÛ#Ñ «ÛŽ^‘çè8‹µ:Sˆ]îuxŸæ-¶Gßnîþüãîæëíïéì·Øf™Ò¨ibxu@ Œ¢£k—ý ¤³0Žy¤W¸CS·ñFYIà‹ÝlÝ”`„ Mb®FkíT$ˆ‘ÞtÔCª“EáÙï 
+w–½™Dü:Îðà-ñ·²Ì9ü"òû³²Ôìòo'/"{Ó‚‚¾^Ü¢áGépŠ>à >›Ð‹W‰m޷掴è2¡ý’5!9÷žÐ)«õ
+endobj
+1170 0 obj<</Type/Page/Parent 1119 0 R/Contents 1171 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1171 0 obj<</Filter/FlateDecode/Length 1034 >>stream
+xíWKâ8¾ó+ê+H“zo<ºO;­] Ò^ZB&1$Ó`ÏÄÔûë÷+;&êÕ0½§Õ6HŽŸUŸíª¯Êßz>ñ÷)(Œ(9öÆÞlFmQìÑÓ4Œ¼˜&³u?ðQ/$í0yLAz÷õÐtâùWCÆ«Eº‘Åš×AmS@ÉÝã„|ŸÖ; ‰f1­S;>¦uÒ7¯*É
+­ò¿D™k)ßNÒ”Tj*3IFªT¤wh‰’¾ŠäE–Íw%z·ºÌ¨#À
+7«¶¨¡…Ú# 7 3º–ÅY†.9ìMUDš lôh-Ni5§2ÓE^Â’Ï’”8J㱨ÖþGµqÅÖÈ`(s˜z–úªsUÒÉ°¶Ì\í)WlÃyA0¿‹.^ðÍ÷ÙV™Ö)ÁYŒµL×Àw8Àc$ |÷8à˜Ê¾2¬¯ ò
+Ê_‡6à¼ÉÛLôNbø•“AÙ‰=ó° ®?àåeãluÇèlØ+d’#ÊXÇÜŽŸŽ±©âh*¨4²$
+„ N¤ˆsˆÙØò6‰d¹«s*YÈ£>#\ñ&²S“çU§¬w;ì…aGËRÃÍ ¦½ó&×lôƒœ9Zur×ÛiõßE¨÷fÅ·ã{7íß=Ϊ£M½hêSß{÷‘{ŽÍ?-æô{¡¿È¤¤•NNGx¸}=2ŽüÙYH£xŒ÷\Ú_ðké@$…6È»\ÒÌs'ñÄ‹#<‰yž?㮇uïÞßcGè#endstream
+endobj
+1172 0 obj<</Type/Page/Parent 1119 0 R/Contents 1173 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1173 0 obj<</Filter/FlateDecode/Length 1626 >>stream
+xW]OãV}çWŒxY¶Â& ! •ŠË"ñ°YZ¢VU·ªnìëøîÚ¾©ï54ýõ=3¾NŒÙjÕ‚Ž?æãÌœ3ã?Æ4Âï˜æ:ŸQRâÅ‚õ_F4›Mâ9MsŸ_ÄçTkÊpïOï?½ÓÅ$¾÷Np¿Üz³::»Ñ%­2ÇÓó Í`ìb¶ U*&F´JNè[?ËÉןN¾ûôö”pxs8|w8¼•Ã·«ÏG#Š&ãx'º~Òµ£gãsR$·Ê¼®Éçº$…(+[Eªñ¹­WÞ<áŒ*µ‹ÙÔÙÝ”ÆcŽ>jÃ&sIƒmïª$¯meþÆS¶r´ÖþYëŠ-SjKe**•c_ëÚ>;üWUJ…MT1¸À%¶ò¦j4yK6Išú”Ö)Ïã §äsãÈå¶)RxDRð Òþ)¯ÉßH8>#1‹§üØ}F ˆÚ6ÓOc²øœP¦Lá$èÌ…}6Õ¦ GBøžÝ£Gö†– Ù Ñ–[¶„/i•äpžj¾Â
+dlý…²ZmJ]ù/Âg”<þtJÂQnmarÜ¥% ñÚ´xèŒVÚlòµmêÜZÀkœok¡phã˜Ø0Îìó¸ö^—[„°|¥χˆÝ ¢?$*Ub¼¤0m‡\¨¬çŠÔº´OœOmKv¡
+]ŒÌ‰{ò:nÒV{˜ˆ¢+’ÆþL<Kp¿Ü/ 
+ÝšäèU&ž7U
+ZÓrE­Ìì/—J
+Eæó€Ýé°£L áv¯;±~Ûv­
+÷;žHÄjç®@ò-VA{
+á€05Û­­=ý@;-MôÖ F?C5D2QßÙm­ŸŒm„ãø2FñrÅ9¢­·ªÉX³R©¦žÂ|LàC’+ˆ¶ªvd‹w±âël[_€OÕ{"‚,©Z¾5\³Ùhˆj*¶›í¦V5”#ÄÅÅ_ƒá§ÒÐÂåŽ
+ÍÏ•Å©çC0ô¦²o¸(
+š[¡7¡"­põ0ýÐ6\`Ç/±?ùâ'Ç-ã¿hÍ ÏÒÈŒb·}~:tƒkºFÎ2)Ty
+a²@}Õ & Ëõ +Éó+*æT`‚eåù¸|'Ü*¢K1ÝZZ~\u¸ÑÿH2ô>--:”£bÝ?x ×:ÙŒluá¯>ƒ¥1* ´PÌwÁžª&ÑáŠnm¹„’Ú¤á9(“ZL5¦`–^ZLqѾž¾ˆáVd òÈ®ÖÛÂ$<ðÌ^‹
+endobj
+1174 0 obj<</Type/Page/Parent 1119 0 R/Contents 1175 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1175 0 obj<</Filter/FlateDecode/Length 1403 >>stream
+xÍWÛnÛF}÷W òR'iÝ)m»¶ £ð¥1ƒ<4}X‰K‰ ¹«ì’Võ÷=³KR"-¥íS#4dîÎåÌ™3£¯'êãg@áFSZä'ý O“Ñ
+u,!×Jl¦™B£#[]æ ;pXÓ½°4Áå‰ßŸNQ¸ý¦F_¿C;¿ëxe –… ý*èɤ¹0Û
+YúÌ1:ˤé‘ÈŠ•.—+—Œ¢~×mÎB-7ëLl­ïe\–öÓ[G„Žc~åyãË깇‘
+Q'Új ØŠ}%|"të´$4¹nø.³˜ù!ÒÕœhLÏ•J°z8ð¡míÙçˆÏÐK@åõJZÀLÇ/£°Æ¬‘ÊVp·¢¬@åY‚~ÏÅi‹ÒNÌXÂÄ.̮ޱzIV¹T<]d¤Æ}^Bì‰ËÁ:/çÐ!wB«lÛI—¸&‡³ZP7'AŦ©ÚÎ|´Óëøä¦ä\°ScÊ/ëéSñæ÷e¦ç"ûÝ‹aA«æd{x~ÏV÷÷‡f·ƒ80ïöfwtS ‚_"³EF&ÒðiË0sð‡šÇÍ'ÞôFíh…øM $ ÝÁ÷ ‰6r[Ã1Pl½:ü+TútÁb>Æ£!•I0Ãoè2UÿŽ@`ØóöO¶òl°<p°Â=XIÑ·c–gH=Ã62øBÖkÜYtè‚çar´F¹hêÑÒÐ×ÛSR¿(ùµLìö݃ü³èùMÊ׉ڠ±êÔ$ôšX¯,ûµ ¹³ ´/v8ß-ðj ƒtˆÀ|jú, KHÓn™ ŠˆÜÞ•žÅÚqýmÉmUõ
+r1©ƒ±aÍÌ}ÈW!Uw%ƒ6.ÑŒFÎ5Æ*§‘²Np²G }Z|gÝ´µ%dWÐRë˜ÒX
+Õ’M²a7 ´S¿Ž
+endobj
+1176 0 obj<</Type/Page/Parent 1119 0 R/Contents 1177 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1177 0 obj<</Filter/FlateDecode/Length 1410 >>stream
+x½WËRëFÝóVPtý¶I%©Â<rYðÈÅ)!‹‘4ÂIãhF8þûœžɲÀä®”lI=Ý==çtþ>èS¿}šh8¡(?è³m/å3nz4M‚!fS|Ç×>•’Øö°º¹Ô¶Ãi0õ¶Ø{Ó܇ƒÆô¿Üö§³à´ëv¾8ør5¢~Ÿ ö1™MiÛ”z´ˆŽKI‡™ŠDF¹ÐF–‡´¥È%¾’È2µÖô òPQ$"CB“ ö
+KÉ2 ëkUÊD–¥Œ‘¨´ÔÇ‹—ƒô‡Á
+Za‰0”šN`½TUÓ:-àwó.®¼ý`Œ8Ñë„6ª¢¥xCšÝ.°¯h™’3ä¬tÒ¸hl¹Nõ’wJûú£Rñ‹Âºà2Nµ3ÙÉÓ=)UO‘ÊÓâyOá)ܪ`Ø‚Jß©—RöÊ/þ|ÎT(²¿`íkœðóN`‡A¤Š„’4“ô¿ýrÕ£SÆO? t23|¢:äb• Dq¢_¨PµW¥m¸SŽOìº0úÌg Øô\º§ÔÌÀÍ%<ÛO$üà XÍ·\&†]ÜÝœ]ߺå[ºœ ¦Á¤ªŠ8æUî€
+g–"ÝÓ÷Vþ kV²K'^¸ dÎì1 ³ä³ L’â•Ò¤»µR>§ÜXP#`ÐùïlµíVšùõÝÙTŸŽÜÉüÚŸÿütŒPfI×·85x1) bº¿8ïR÷
+Y;vjRn÷ਠÀ_€Ü
+»=.K'1‘­ÅFó õûfËwsÕcÁNR#^ù< p  Š÷Ãßv6(Œ²5s;A?$kkïãë¾éû1CÇ`;©…ˆ¯VkÄî6¦ôÏð´E¨Î€„"ŽœÐd".Ž®Õž0. WaKC,«ãã’¥£Õ5øÃÝf~ȳ ”% D!*4<\•*’ZSe1zŸˆ#ÈPç*«±ëœÁJD¯h¾³ -*F«Q¯KË>šà¸‡ D…"˪óé(L…ÆP´TÏ^Úâ$S'n¶£¶›Â^,qáÐÙph‡qòµâ‘ÁFµ«^XˆPU¸žJ2ÓrÁÖ¢0>zÍ)¶|1ò­·zp´Ô²Ó}^2ð›©
+endobj
+1178 0 obj<</Type/Page/Parent 1119 0 R/Contents 1179 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1179 0 obj<</Filter/FlateDecode/Length 1586 >>stream
+x•W]oã6|÷¯Xø¥9ÀöÙŽ?’}HР͵ˆ‹ À½ÐeñN"]’ŠëßY’JlƇ¢¸\+wvgvvõ÷`FSü›ÑzN×+*ÚÁt2¥Å|9YÐâfßçøo%UƒûÍàã§Íf´©ðÈêfM›’pûtJ›âꎆÆQ#_d3$SÑœ¦kJjÅ7IÊÓV
+OÏÕóŽ„.éYéÛ制'm<=nîž&t~RiZ¡4F{kšFZêœLGØ|Li<»žÌýêz>IWæ+ Æ•M-òÕv-õxH9š/—ÙMG¡=9ÑnyC•±…B’,¼2šðå¼°¾ÛÈן¤ç_h¸·²’ÖJÎÑyi‡´kÌV4döáIäàÚíyT8:C><J7œÐS|PM¯Å “kÔ®ö$Ê ;Iæe0kio¼Ô^!N K[kNZ‡Pb²¸¤¯è²ÀÙCúÓI<‰í…­D"tP¾¦'H8R±Pš?ªóŽ¾\j
+Ý.ÉXp™EƵPç/¸¨\B|”Ô˜¹¸n«QØ-r .”…Ò%2öÒ*S*œÐ
+ô±$EãL(Â[þY.ñÈ!ÃMÕ
+R2¢oªs,,÷è¡6 Dˆ¶ôëÝ#Ê‘…|ÆE(!Âæ£Jq±F̯‚FÌA³:EY A®i„G¢‘ëw… ÙçÔ`wŽÚu4Ë.ö(„ŽV€Ö ïe»G3žqv±è!Ѿ}àÞD6`ºRãá‘£nf@s‚PÄÅÃa\¸#6ç9Èðè̬¢'B»x.ÁKí‘–ÔBÐ^º é1â©Ðj§
+]Gäêàð\˜¢ƒÂHÏÎÎâ&Ÿ¢Šðß>~º¥¦“ñõ"øoâ›Ò»”ýîÈÓ)4ž¯'«Þ÷ÏîŒÝåöFG=±Ô Œdãùàˆ‡Åví·]ãÕÒ‹út„. =nä§
+ S ×<3é’GC01õº˜oÃ/2#
+´ {t–mÜëUæ? R: ×O• Ý©”•
+€=ùƒâÎÂDãC _Êy;ꢶF+øô©øòj|o¤pÎXå8š€c·“ð¯³áÁwŸ¬d56
+’¨
+~À1£2á­ÆPRí^÷‡
+Ì&åB¨ã{=?<>¥Ç9O+1u@ì£ô÷ŸŸ²lY©h×XpøC:•w(£¡x(¸Š#,8Ç»3ƒÞQ§@O*lSzçb;»ø‘Ãb½÷ír¼´]¤§8-Ò ^Ÿõs¿ôÅ-µ~€ŒGcØC³\ÓÎuºn"ÆØèûQ8›?…+¯P1óE* Õb¿—G"KCÉÆÙc0,N•µ#x‡gÄqGwQHƒ»d2¸ñÉ^<…»zôêkg%éYe'f£ë
+ï¥x`¼žÞòèÿïa±^LÖ«¬¸}>çS~Ù þü Iø÷ªendstream
+endobj
+1180 0 obj<</Type/Page/Parent 1119 0 R/Contents 1181 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1181 0 obj<</Filter/FlateDecode/Length 666 >>stream
+xTÏOÛ0¾÷¯xê…"-!ICZŽ  ‰lS#qáâ&NkšØ™íñßï{.…Òí0Umª<û{ßgÿš¤”à“Ò"£yAU7Iâ„Šü*^R¾\à†¯•Ô„Âe‘Æù¿
+ù²ˆ³ÓÂM9¹¸Í)M©l½X.¨¬ ’„Êj6n¥&AU«¤öhRIõ"ÞÔ¦JG£ª%­­¤V9ÿ…„®Qœ´$¼—]ïyC¢ª¤ã[ã<)M~+üÛåÏËçI”P”ÎA±¬g£j[ªŒö¢òX)éñîaEÀ|,Ьt¦}‘¡ô ýÍÝ÷iÑI2͘»Ä$µFoøÚ…Þ[á¸ÝQ7+7 .­¬Ií'ÀQùmhãþˆÆ—ð6è lגĺ%žÌ ò‹  gr¶,&~uq{E)Ìn(Ê.)*ĉêƒñ d϶Šº°KÔ5;ˆä Ù".xÛ]C¯f°¤¥ݱÿlö4™ÒZ8û Œžf±$‹®mÕ@;I];GPòtÎ5ÃRè¼U;yb]o Dw.¦G¥kŒ1è#(l¬z‡9m<›Òs†¾7š(9sÇ´07ï½n¾RÔàåIß0rŠ£E=$߳ㆣÑg¿v¶nÍó}÷CëUP­{#0šûµ‡“päìJtk#¹=sG¨¶JCWŽî
+ßð‘iÔfÀe€ ]L+Lâ¡þ4»D¦O-½P­{ógùvúÓwÉrNYŽàêúþæš~Xó,q¿šjèpîÊ<£Ãòh‘\ýßàæ‹<^KÜe|
+æŒò­œüœü‚‡Çendstream
+endobj
+1182 0 obj<</Type/Page/Parent 1119 0 R/Contents 1183 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1183 0 obj<</Filter/FlateDecode/Length 1658 >>stream
x¥WMoÛ8½çW zi
-´Ší¸qºÀ6í°MÓµ‹6{ %ÚbC‘Z’Šë¿oHÊV” ÀbH$r>Þ¼y3úçdJüLi1£ó *›“I1¡·‹·Åœæ— ü>Ã'i_LÏ'ÅÅøÅÕêäìã;šMhµ­‹Å%­*‚ ž”§ïkÑéh^ЗN•÷ôÞYïiÙ­ tåìÎ+³¥³ôüÕêûÉ„ÞÌæ°qúͺû­³]{<¶íT%ùÐÙÇ9M§Éå›Ùe1ã «ZyªlÙ5ÒòµítEk‰DEÊPiÍ÷ΔAYC;ê£]a*jÄžq/ O¡FÞÂ
-N îèš‚Í!NÏ“OÕ´Z²?Îbݧ#ʘ¥Yzbógdåç»>3Ow§x\ÙF(ãï^ôíúfIHƒ½¯%{·VÓƺ‘_'½Õ]LÅnèF†«ëÏK2¢‘¸kéú–DUIï¥?Ú¼ù¼ V?ȈG W’VpS#FÍ9È¥l­÷´û‘Sxbì
-ç>*çƒÞ¿&¡5}ZÒ7e*ƒ@†‹C,ká;ê·ütì–Ò=€\Ÿ‰ØJºÒ¶¼¿{•O
-<åàøô(•ÃK¶z("lw‘PÜÍZøÔ
-5Èí:cÏž5ƒ°Á;àÝ}ýpûH~˜¼# ŽÛ=Û7Ä1J»3ŠŽì྾Hœ¸±®A™Qlkô¾?EGã]²ÎÔß W¡2@j
-ûÀSŠyÖ1,"Ug*aÊ=Ï}‘ClÑhiW@Ïð²‹ËÖsè'Lá ý±c%Ÿ 1É«OÛ^Ú0€XO#Ôq4úR«¨‰;¥õ(áh\E
-ú:P¾?ÓîðÛÓÝc{üy‘7ÔÕ³’~Ði.Ãa–çå%¶0ò@󗘢¼2zLÉ\Æ 6o-﨧ÁÓ§É#¨ophV?4®@‘â±cñ£o…§ÊpŒXù_R¶z×Kåµò¿ÑŽE¿’(°Iý%‹M±-ê¿©(2ð—Ço²ù´àÁÿøýG?ûæ›/æÅââ™°;»àÈ_|9ùÎÌåkendstream
-endobj
-1436 0 obj<</Type/Page/Parent 1367 0 R/Contents 1437 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1437 0 obj<</Filter/FlateDecode/Length 1580 >>stream
-xWÛnÛF}÷W üRˆ6¢,Kr€>ØhRõ%E]+rEnLî*»¤ý}Ïì’²L)Ð8¶er9—3gÎ ¿%4ÄWBÓN(­Ž†bHã³±Ñx6Åç¾¢U¸1šž‰YÿÆåâèÝÇ1% -V°5™Mi‘ì ‡´HO¾Z÷õÍâÎ é<ŒÆbŒC'Ôþsª²µ"iŒmLªèW’b)R‘½»¿ûüÇïŸï¾|¢¿•X‰\O—þ!!D4ýä~0š°åm¡œzoNö±áftÜš‡ÇŒZ»Ï ŒAr
-`K{Rº†Aº¾¹¤‡“k›Ê’n¤¯qùÒÙ­Wîá ]}"™eNyO6_:+³Ô×O×WÁL›²QõÖºÇÆðÀ¥z¿w÷²¦ä|$’ÉL$"¾íŒw¾RÛ”-åz£ Ip|tvF`þ*éI{Î÷À£ô¾©TFµe;£1-uí‘(Ý÷ðá ûˆ^Ñ*ej˜¥JfŠ­ð‘˜<@ê;ë0z RåvTX€¶Õe G©B^d·§{ó‚<⿱ÚïB5¹Njeê¹lL¦¼vrY"¬¦F˜;NÔÀ¶÷þôŠ¶Š2K·w z4v28,è³`Aƒ–{½‡œÙóö§´²ëZ["1Si8¢–jœ¬ÝbväÎ6ëXs0Á>‹£#]­hgj<Ð/úÙ?Y1²’¯™àÇL
-ˆO†$téXœ
-ú“mrÇŸ£¨Äæ¤ùΤǴ–¹ gŸ—}0šŠ  Ðö¸¥6苾&ÿüQvà+È“5+æÒm³W/d-.ˆE]
-«Ê‚i©E^åÜnFuÊH!ZþØCþsÜ´où?ÁðO³àeÉž”¾›œÕVÿ¬{¹ŸTÉÀ3J¬A‰Ÿ4«§Ø=ÛT±y÷±#&øtÚŽ8üÚÓòþêvþ2‹–x-uù d·M"5\ã9J7sº×&-évAóXl¾Ùƒ<
-($ÓV(w }`5íßѬkp§rpM9h)³0°¯¶¹
-Þbö‘ ¿Ö»µ¢,lŒ‚‹ÏÁª %ã~|Ám4f¹î‹?ÓRn¤.Y‹©ü=úµ2Lj$ÄOPcôwø}8áj…@†?†§HœÃ M!Ko_5„yàr1¬bl°”¦’Fæh€·–µæIѶS—ËÃI×ì•|ÄÝBBº‚T­6À}f,~AzØÂóˆzÉuŠ°w1´Þže8Âжvºö»ÀdìêÈ ìiÐføMÎ(El255T*“×ÏË(¹]!X`•ˆ2Æ`°Ê£„ü‘M÷2àFã)u
-(>I VÇÎ_[Ž ³ Ÿp–åbSX‡pøoÓÐC˜ƒÿÀ5¿–ÊíÑóœŒ{_‚4¥×‘8ŒÉc`!ЇmÒ²É:¼9·ˆ„6 s…t¬ÁŽÓC:´Og_c¯`T ‡æC¢€0ÉŽÐ7ûÒr^PZjÞŽ[‰Í…“+m©Å‡
-½Œ»°\zÅ)#0®S»§ÌÚd‚7©Ù)M&çñb~qsyAŸœý}£ßlŠÕƒ”éÇ€ ºÓ!^™þÏn3žŽÅt2ÃûMÙê‡ÅÑŸGÿ…wendstream
-endobj
-1438 0 obj<</Type/Page/Parent 1367 0 R/Contents 1439 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1439 0 obj<</Filter/FlateDecode/Length 1642 >>stream
-xW]oÛF|÷¯Øú%Ó’,KJ€>رÝ°%7VšMQœÈ£t1yÇVõï;»$%‹q€¢È‡Š·;;;»súû O=üêÓx@§#Šóƒ^Ô£áé$Ñp2Æ¿øã5¥òAÿl º\ÌN®‡ÔïÓ<E¬ÑdLó„§×£y|ôùfú@*+•Ú?é’ÂJSQù•š\J©ó±±KZx·Æ“Ì”ÊWÞYSª`œ¥Å2º½»xUFõÊ«½õëù·ƒ÷Opž!‹ñ{A×&¬$ùåÝ}=J\®Œ¥\•A·/ú¯¯IÙ„óJgEy)82‰¶Á¤2áUIˆÑŦ“6Ñ©±F@‡•)im€{íü#9›mð_<µ¤¨DÉ™–O–ÞUEDS4à© _DG+UÒt6ÿp3ý¥“ð'áiÍ1ÚëT{¯†ŽsÊÒÝ}66Ï4Ó¥ÑýÈ“€Cª>¦m 08‡¦Å•7¡[§¶O ÊÁ”Âmef%-xsò¤¡7v6x—eH‚~ïµÅX<Éë>3GQSÙ` ¹‘Ÿj™HKvlƥŔ
-¯&¥«ß®>~¡83 iþþþäæž
-ï‚‹]FePñ£Ð·ÐÚà¤fY5äTÈ
-Ý@k ±Þ@ê1Ä'¨B'ïJ=i©§Î¥™õ}©2Y Œ’$^—%eÎ=V©t^„’GÖTßÆúãˆYÖIÌïh(@$s³‚nÉ©8æÐP±óeWs·k#=¨|¡Då{p¿ñŽ
-Ý8:jåÛmÓm!¯]dµÊÙp_’l©R ľBA¬/BSܳp @r=¦OW4›Þ~Á_Wtÿq6Ÿ½ŸÝþÄ°°G¸ò½ã£.]V‰ÏxÔGvWýíZ}ö"p´M㻋\w€ÿÇX”õŠË0$y(²U¾¨wMr Ÿ?“ ë»K ‡‚ž°™ö’þ6…Ƹì.–ÊëwŒ¾ Obü„!ð-êHcÁTç2a†¿IŒ¢ÞèŒ_º½û0{˜ã=è[î&q3^v&àýÒ¶hwð¢½Í½ã[Ò§K¸!f—³sÂe\Æ/aJÅÞáºãuÎ_J½äÛu}ï9¹ž4>ßE£³>ÆgQ$5<œß]œÓ½wß`ðѸâƒr…âšQ¾ÈMNéxÜ{Ëåü»m÷”l•áxG9b&œêj~ðëÁ¿ Ò§ endstream
-endobj
-1440 0 obj<</Type/Page/Parent 1367 0 R/Contents 1441 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1441 0 obj<</Filter/FlateDecode/Length 673 >>stream
-x¥TQOÛ0~ï¯8õ)H4MÒ¤=€6Þ`›ši/•ë8ÄàØíPòïwç´F‘&­mÒ(¾ûÎ÷}ßù×$…¿)”,
-àÝ$‰ÈÓE\B¾,ñ9ÃË
-h&WÕd~CšBÕ`J±,¡ªÓ*]*/¬f^> èÓLšu³Q½—FƒÔ\õµp'ÕÃ$óE³¬Œ—ø_ÕÑ\x>oóî¤çŸBËl Þ@ǤöxÓ5(Æ](p燭@èÆj³´ˆ“âŒ?ß®ƒ{cjà­‘\À¦÷ûtáœÐ^2õPLH³w¼az
-endobj
-1442 0 obj<</Type/Page/Parent 1367 0 R/Contents 1443 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1443 0 obj<</Filter/FlateDecode/Length 1568 >>stream
-x­WïoÛ6ýž¿âÐ/MDñ¯Ø΀ah»(°¤Ûì!Ö} )Êâ,‘*IÅõßw¤d7jlØ°$ŠïîÝ»wçOgcá¿1-&4“¬ÏFÙˆ®G“lB³åOð¿STÄóE¶>³>»º½¡ÉˆÖ®š/–´Î ׌ðDž¿-E”£ëŒ~æN&§û5ý,¼ß[—Ó;#Ý¡ ÚÒæÕú¯³]Nf¸ä|%êà' 0^$€Ëé Ááíu6Îè½ Îæ­äÏÓÉÇÝÉÉ"›óÉ{µG{mr»÷$+­LðäQ \åÔtñx²8J…/œº@P>(‘“-¨©„6Ôçp:žÑG |è¢OS„=Ò^WYSþ“Iqªh½¢`Ó±çÀ.¨5•òžÃÓ_lµî@Ú Ã^‰Ê³îñdžEF*N©Ja^Ú(’Ö ë
-èî¡V†*»Ýj³E+¥ˆÈq#ò„È wMÉyú„m8àØQú û ô·ÈTWÊ-sÔ‹j€<žÓæÄqåô(*f¸¹ö»Ž=D'*oSˆåᇣþY¤Ïß  OA/úF ªO­”ø"£ßSó‹P•ÓÜ,
-»ñ»§¿†sb}q,~§°
-endobj
-1444 0 obj<</Type/Page/Parent 1367 0 R/Contents 1445 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1445 0 obj<</Filter/FlateDecode/Length 1532 >>stream
-xWQoÛ6~ϯ¸‡uH¶lÇv†a@»µ@šu‹‡í!/´DÙl$Ò%©¸þ÷ûŽ”dÙÍ¢$&y÷ÝÝwß¿\e4ÁOFË)Í”×W“tB7«I:¥ùj‰¿§øµ’Êp0_M¿=x»¾¿¿¥lNë¶+üQìL&´ÎG7é4ÍRzS< íÅV:2%Ý|Kïtn{¯Œ~½þ sÊ26Ét £}%”&/¿zÚ çÆŽÐh?‘‰ÜçÈïð©ô¸ò˜Ò½©¥Ñ’§ô–Dw@N«²”–r¡ÙÂçÆyvL(Éf .­Ìáeànk؆7ÁÃvÒ>I›FÌy‹9Y¦«Œ:#ÓŒ΃
-çÉt‘rrFÿ(}·¦ÂH§_yªÔ£$/ªÇÖ“h}À¥ð¤Â
-û—1m½ÏIJ<TU¡Reã`Ì°÷AXkü9²ñ“*ÏþC^+géÆ{K•|’®æUþHµ)äɉÒN9OFÓÞšäÁ2¿¼ð[Ž:¨üHŠ|G¹ÑZæ\ük:ì>QŽ×#qmŽ0™Ò6®Ž°€ÿMÃ¥CÞ¸Λ=Ÿ¸ —°ƒSΠ[ðólÅf·é‚ 2¨XÇädºJ³[J– eX<½d±6:y¦ç•ÿN:?Ê}Hi¡Üã³PÑLg8»v‰Ìꨇ¸9QËžTªJ’@Û¡F–­¾¨œo6È<Î*³Eé….¨ôûˆÿœÚßç+Äý ^lÄ•••¢8¶0ƒó‡QçÞË
-ÍÛùxÝRÂI
-åöÆ^·%íræ[Ùí³~éG›ñèÉ”WJjŸ´JÉâBJð‘@¸¼È},SÀÏÅ,8£ùNèmY–ÂW—Ê4A ¹UÉôfíÐ…R[›†O´,ùJÂÍYšª‚|ÿ`\l˜ù’‹½Ø¨Šåü„µƒuЄ©TÀa4ÅÐ=ŒXa£
-Ç!œÂAY¬üÒH \FóùŽ`0õɪš+ô»aŠ£;´·‹Ô FHw,äoÚ»1‹½’µ¥tmÈ6zÐMˆãYUd<ãÉ÷’~>'àÀÊOñó;Pó6Ý`Ú^ð¥ãnnô¬ú£*‚¾t¹luæ²lžÞ¶ H <‰ª‘H• ¹hjYé«ÛÉ ¶6„ë 0i õ«Jçï×ÿ ìN²Oíòô"2Ù…ÍÞw×IɽÄnò’ƒE–f]èV&!úÞG„ݱ$‹—û´BϘ¶§dñº6¿ZxL­ÀéÆZf[Ì&6‹µ(î@Çô¹æäòUVÔÞµã‚WÀhŠ7F3àsU×ü2ªm—ì¸fñÓ Z*4|sÀ' WúÉ<ˆ÷@À4â`D,"aW « ôÚÃ
-endobj
-1446 0 obj<</Type/Page/Parent 1367 0 R/Contents 1447 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1447 0 obj<</Filter/FlateDecode/Length 257 >>stream
-xmÁ’‚0Dï|EÙƒ1 {ÄZ½Yµ[ò1  –D)þ~ƒÊmkŽóº§{~ƒÜO„,Æ.…ìƒClO{DÊÚoÒ<CY3Î9JÎà ¬ªòæ¹äÍ…¦ï…®,[›8e‰†'3¢7#¡"'Tga4îVéæe°
-aûëÿÎ#Õ4¸–ào` aj•l1©®ƒè&1[\éITT+­œzžJÒ’ž¡¶§ü6J3Æó’ü•ñRœ¾Gs#éðeä½'í„SF/)7+¿ÉøçÒiÏb1ÕCx¬!_ªÆå|ÀQËqV]’%,KsÿD¯ÙÅ‹Õ± ~‚?0jÇendstream
-endobj
-1448 0 obj<</Type/Page/Parent 1367 0 R/Contents 1449 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1449 0 obj<</Filter/FlateDecode/Length 115 >>stream
-x+ä2T0
-endobj
-1450 0 obj<</Type/Page/Parent 1367 0 R/Contents 1451 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 562 0 R>>endobj
-1451 0 obj<</Filter/FlateDecode/Length 2756 >>stream
-xY]oÛF}÷¯ô¡H5#J¤(X,;ÙfÑ8ÞÄE^
-,h‰¶¹E…¢Öõ¿ßsîP3‡VZmƒœž¹s¿ïÌP_ÏR7Á?©+¦n6w«æl’LðÂÿy¶H¦._Γ‰kÜ,MظOg—Í’T8[N’\8K§cAÅ`gyRˆ¨b°Ð²TV0ØyžÌ•ܸé$‡OÞ3:£,v:úm¬`°Ëi’‰l>¥‹)¢µ“%Õ¢¨bš¼¤ÚÀzÑ9E¼(HCõd>‡²@:î‹ÅGvšÓàÈ
-†l^0P‘ éEî"+˜¡È“™°Þ(‹2›1h“@l‹Ü!T vžŽYÁÌNƼYÅ`Q3p'²‚Áæ˱¬`°ËÙH¯bT8ôêΊÁNS*èU z¨À"Šè–º‰Ù›Íh”!Ëž`°……*²‚Á.æ4*²‚Œ
-¬b#³‚Œ‚Ud½É) g†rŠ2“CtR°«lº`,"+˜F-Ù0‘ v‘YÁÌÁ‚ù ²Þä “Ê(['òQŽl¶`"+la&GV0Ø…uud39sXÅ`³Œ¡
-¬uP†)ȶ^r y`!ÝY"ñ‘T QK• v™"µQÖ+-˜ïÆ!¢ — RœÒÚH*kå-¬`°‹Éhc¯tÎ ‡xæ.3@¥!ˆ¾Ë„TL“8 ¢¨bš”QiØX1ØÜâYÁ`‹)#XopN/ìØ*\fÀR3AõxH“Š€H*¦I3”U ý;b£ZÐ*ETËnÌf…/pLÉ#2µ‚!:µðÛZ²ŠÁΟ±‚Á¢‘ö k}•¡ììñj ‰ÚÔV16¶‰ãw2£Ó(žLÂ
-F³§F*ì¬ì,cEEV0X¤EXŸÚ”Õ€Ì-ª†¼Cƒ-xúg‘ “1{`T`ƒµ$¬`°…Q” “1SQbUÌ`ðê ¬`°¨k•å½m¶\XçÙEÍ:+p¸·E…›9H>
-†Éh'ôú‚ÃaÅBFûC«+¸±í„ó2’ŠÁ¢‘ ª¬³Â
-;ŸeÃà ;%Ê*‹W«¼;¸Ç±¹ ¸jÀ܉ÃmÉN n sN‚À ¤£<z"©˜Žòá!¬`°x-Œd3 ùXV0XX~W£à –jÙ;þ={ÇcªåÌV0ØŒ7XaƒÅw´³`°8™r•ÌÜ°+ãΊÁ¢Ø
-ayÒM Î`œfDº#°Á3‡*m!9Ãý[N ÎŽŠœ@øøÁÒ ¨,Æ™ŠZMqõ`ãéI4G S6P$sÛŒ.QÅ`±bYÁvF«¬½ˆ"ë ÆŸv6ƒ Dƒn00ŠƒÁ‘õe½‘ ì`ð ;Å g‹¿À;Èìb|¥938B˜dßGüJ«#ñΰ㓦È!»GÁÉ”© ¤b°,RXob>¼ºÀà¶xu!·µ’¤b°8(`Bdƒ]ðµY;.¦“ã‡Þl=¢Öt1íåm,²f/ß'a¨{`a`M9èÈ@N 6…û…ŠÁB‡²^¥ è5>sxýž; Q„Äåh&¤bn›X¿-®¬L(ž¥4`Û"ðiæŸÂ6"< %p˜‘³‰q”³9PÇc)ra'λ£v*TL/ØdQÔ{acÛrÒù™l^DÈàðvIÅT×z¥S)Ë^dƒÅí1UV0Û“7Š(«,ŽkÞì§^ïf&ËËêŸsásÍvðîðáIÅ`‘;T_ULƒyò+˜ó’Yo^vîg€æÂ\ÐiàÒ\NÕH*‹—Š*kÃPdƒÅg˜Ô*†3>ëU ytZ`90[ñý
-NýÂGèÛmåfØžEq÷'(ÿÜ*xüÇí9”œ¿Ý<ýð»<s 9Nk½ñ§¶Ÿ“’3œM‹¯»uÑø¼éº¶³ÂiAA|zÚ÷Uã®ÛM½ª+¿¢wõ¦²õcߊÄ}~({פÎ=T›[•[÷ÎÝWý?Nr»HžÕ‘C—¹ÏõvÝ>îÝò—ïßœ†<–„ïÈwÛ}ßù¦Þÿ쮪þ±í¾¸_Ûûv{êšü¯å?U½UÌaç>¶eÃÊømoF^£º„#Þ¿zwõŸ‹W7?üšôôîçà
-†Ã¸\ݾŠ­:t/phÁW«ÞYÛ±9`ËxtœŸ<×hÒÍÓÐìpkÇõŸToñ]‰ûÄ_t%Â!Ï_ÑõÕÅ7 D•±4·>!–ÿ±¯ø@çý]·,-÷yÛ÷>©w(W£×~Ô¬Ž¾uÏ ‰æÀÜÏÕÖarSåõåÔVëjm‹GM€[
-
-G€™€¾þöD";î¨Ó ßIýR†ò±î˜®•§K‘©«¶F¢9Fƒ¤GèPÏßN!¾gƹŽ“Ã,ð[M“é³háô mŽ#¡ÉЗ'ÃöÌ“oôÍ-æbÑ?@í¾ZººrÇ_"«Í—oq}³Kƒ)>)ÎyÃx~«ÊpÙ,æ Ü¿@Î2Úúææìßgÿît£ˆendstream
-endobj
-1452 0 obj<</Type/Page/Parent 1367 0 R/Contents 1453 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 571 0 R>>endobj
-1453 0 obj<</Filter/FlateDecode/Length 1693 >>stream
-x¥WÛrÚH}ç+ºò²v•ƒ
-Âi£k­ò»›ûf.Rq€rϽù·†fZBSª6
-ìVQmQºŸ÷eUeµÚxw)Dœ;=€Êv=P×5‚lxÆB¶M0ÿvy¿8Jý¢1.’§3k$fÊúéÜg ¸©ôó–Ûh½öøÞ§r‡Į̂0)ÄB¹iô£ë31œ¸qL­Bs¯3”Ç$c±âÆÒy”Ö,Á }YC=}ƺnäÐr·sT¶.«ÿï1ïÞÂ_´ýàq{A×äùÙzSB‰µP¼ô‚ÃDpóÏ…ûW¨Óq×x}›AœJÙNíã¾hÇØw[£mÁ«˜Å !èFK§L¹!ÞÊoÐûП+¨"7 è×ÜÏ@i1ùSÙ¥²Æw ‡@ßjV3cwÿô÷Äà”Z~΂7Íf×F´W;žX A•!G?Ù2†çÈÒÍr?›ö†–[:ŧ­×a/ÙÊD&u·cõJÓR A›êäÇP¥ ê±^­`›Ó“Ã^Ý–ÿø0S+A –Jåû3ot'Uš °èl/ö-Uîºã¯KÙÓÁí½2u“qaçrÍY h ñ‰ýÌvˆtG
-0üœ„~žXUR§Xçë(a>»áÑÊéÅ©^ª"!ÜûŒ½à
-endobj
-1454 0 obj<</Type/Page/Parent 1367 0 R/Contents 1455 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 618 0 R>>endobj
-1455 0 obj<</Filter/FlateDecode/Length 1427 >>stream
-x•W[sÚF~çWœ—N‰']°Íd:Îʼnj»1/8‹´€Ý"-&î¯ïwÎJH7â1èì¹ßWßG¹øó(ò))ÎG®ãR8_83šÍ#<ûø¯5­ÒÃק£`8çú3ä4sNÔB݆0°çã ±ØhæÌX1Âsq–“Ï?¡
-΂2ÿjgR§‡öû( ?d}a†¾0lÛû§ž4•ŽÓ5 ¦.t™`ÅÙÙeÓŸeâåqXÌaHÔ:ÊÀx<;{wswv&áå΃÷3&‰Hþ‚^F™±©Oûs¨·sDÎœ8Oøà(¯kEDŠ±má`„vÜ X½§ Ëaºkê©4ð´áå9ÍÒÕ´óY2±*‹ì±3ûtbìÑ×+£‘28¢…QIžÊJš^ºv´žøÛ{ÉEÎ;àI™Yõ¹«dY
-[l³¿±Rí’W+,}ÞârBM¶/ “n¿fúɬEGêB­2ØË€Ü*mTš5H2}Ï5pY§ÍK K, œtž¶×˜÷×o?ýu»¼º¹v¶&Ïä0½ŒÛý>‰œ¹GÝ•çÞ£v«Î[/ óE€ûßú„»‹?Þ\Ðm]~Å„ÁM.ÞñxßXóÄ ñâ3h¹ØËÉÿ¾òÛLÎq¥s²Ì÷ËÑŸ£
-endobj
-1456 0 obj<</Type/Page/Parent 1367 0 R/Contents 1457 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 623 0 R>>endobj
-1457 0 obj<</Filter/FlateDecode/Length 1752 >>stream
-xWÙnG|×W4”
-YкtK|XZ*JëL9oüsDÖrXH'ÊÊfÇ0Ž³‹'`ê§ÙàŠº—C@][ºõ\€CÄ$-)íH/8A¹®W•Dò%ÿ¿ W/èÁèfEµX­8›9Ò“RmÑ{3 /øº·"ÿ]•ŸÓÓûŽÏé)ªjCŸšî¼ß’a/HùyU1•ðW€L.»¹¼?;§nøVS‡À‡R·\‹¢†º­çY®Õ‚VˆI†ú—
-Xס*H3G\Ž3<}è|Í&ì)Y·©$‰<×r© W4@o,@Òîè"Ô
-(Jé|‹ã×’’ÕℹcãíC¼×Þ·Z9£«JšŒfÜQo¨tZ€$l\]ùȘŠjSþˆS [?¤cY¸yùöŽ_,Œ®[„ýIÁ‰Dñb!}@70WPLi™*é!×¥ø m³ý¦ä‡} šP__þ–Ëè¢öœ D[KWŸ·
-ÍŠ‘Ñ/RåòIº}‡±R
-0–Œ§ÚSÚêzø~¬ÁÍÝ0)ü…À¶G§[-NúŠ€ µ­áÕ=¸Lgz,WëÃl;8O:’úL^ÙÌ3¿o„!6/Å{&ÂÇkn+ä؉J®Ô
-óüˆºÏRÆ›ˆÂŠ,xE÷û W¥j>Ó§‘â`ó | ܉Fk÷];³^cMÏÎK…_¤áLº4ÀöÐ-¨WÈÇžj sÝ<b:Jœ¦NÃvõ‘W¿Çõ^ì0ëZê±Ý…¨l<楯÷z,šù›M´bû>\§22¿âŽx4“ ÜÔ­Ú¡~ÛÅ>…£‹·Š~¸¹{Nv×ÄþóQ¼<<Ë—ìüá WaWŒ%˜F¬c§#Oâ
-wýúæšÞýAæûþÞ)‘S“þUêËÿy¾ðñíN“‹l2ž†öhÂÞ~šüvò/}š3endstream
-endobj
-1458 0 obj<</Type/Page/Parent 1367 0 R/Contents 1459 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 628 0 R>>endobj
-1459 0 obj<</Filter/FlateDecode/Length 1581 >>stream
-xWioÛFýî_1uRD),ê´¤¨'u›¢IÚXAP4E±"WÒÆä®Â%-«¿¾oö(96ŠÂ!r™yóæÍèóIºøëѸOƒ¥ÅI7éâÍîß»Ÿø Çã¤OFÉ(<ätå–úϺI†“1¶õñ)%-Nà ¾ö&“dŒSwÌ?ñ±æ3VqtöºÕÆsAÃÞ0yÖXeo&ÝäüØâÅì¤s “=š-Ñh2¦YæéÒ,m•ÆTžÎ>aÓyØÔ¢tµÖR[Щ_Ä¥B¤+¥åßZòèÔãé7Ó^·‡Ow:íâïƒ)¯m%*eôá-]j÷€m–µ¸oÚÉäMG×y>íعÒmr³T:¸4Ü…Ôî’!_6[Iò–b¼­Ž¬Ò³ÉüJ<Ö"©«rK•ç”+[Q…ÓÁâð°T­<>%±^KÉìŒ6F?©h%n$–ÜŦä×| ¿e+øq
-¡tB3|­Ž¸/Žd‹§0‚ˆ¯D1žÚTP™Ô,µúǧ™„mPª*áú‘Q‘¦¦Ö•CÅåÆÓàÙÀcá«"5e)íÚèLé%½×ê–Â10Ò"L©)-¥¨¸@8N-o+²•\“²…_tKÞÝx);ò‡ûRjt¸Ø&¿Ý „Ú×Úl4áe¥D¾«ØΧX•Œ3ìÊdFKªm¸Í“ *^ƒ¶˜{¹øØš||ê·íiš¢à*FÔvÅž¬d)wµ5v'H_×Ö×v*à…æéÙ°Ý{kg§ÍñdËåŠ?±Ìõ„|÷ê%
-k¹‰[w¨É¥Ô²ä,ålQšÂ¥èýþŠû9
-0bßï'ýnª0N&×~A͸늇TQÈLÁ‹|{˜Nâ(éŽÎY]^ ]‹Õê¨ÇIß+ë!["%_!«•É"Vòs­nDé`Xî»çŠHl£aðƒÒ™Ù
-í³Î[`€›Ç=¨¢ºk¦ì†åÖÚ”´„ž3<GÁ)Í×RèòÅÙ)æ²´‘£p\óµ )™º‚Ñ\”K,—¥Ä«‡ŸJCm
-7Žp¶NWG6=d6¡?Lí{­“¶(¡á_ñæÎ%F.Ì ð5ðvмÅ’ô:}«Û´}™oOéË" öⵟhÆ2LϽðº¤v.c¥ró€æf -‡Ø|l±ä°°ƒú<…||J±=`eœ¸m™ÊVa°
-ý´R)úq*î¡st,ø][¯ ¶^¯1+dß".¼Þù
-endobj
-1460 0 obj<</Type/Page/Parent 1367 0 R/Contents 1461 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1461 0 obj<</Filter/FlateDecode/Length 1617 >>stream
-x­WÛnÛF}÷WL
-‹Ö]r
-´°åP€¦)¬"( —¹’6&w•]ÒŠþ¾gv¹²ÄØE Ä7Èär.gÎœ~=ëRß]÷¨?¢´8ë$ê‡É„“1>÷ðk%­ÎnçgW÷×ÔÐ|…GF|ÈÇ;š§­Q2Hú }0J+½¦r#iš+©K*ÿïÎBé·ó/03 n7˜i÷Æ0ÓšãøÖšTf;3–¾Ô†¥'f2o†ž„UÒÑN•oýIZ§Œ&³¢ÏJgfç’àjT»Bví‚doõ ê!ö6R{Ó•“–d.ÓÒq.˜¿þ— Õeô͹[œçL„&‘¦¦Bg´ÎíŒÍØq‡ÚÝ~Òã˜Ê(I9<©žT.×2;q$tC¢X
-Y ]iE©žäÁÁ¢¥™\’ˆÇjÇÞúF¸†SkLùìÑ
-¡+‘û }gê§V* Ôœ‚khE!u8üMjYÑ¢—´¬Jt4i4Gº‘é£/èÒ|£ó©Ç í5EWhº©;¬…;/OÉ9Í88¿ç¥‡‘«ür‚xsª‡“APkI¨)éø¯°Á*ìµúÿ ôXä~lõht·W]/?3dšii „Ü@‘^¬ï%qoª d®Únóý³Dž(iÃU” ƒ ê2[¼­gKƒýÝ ¦&¤üˆÿ˜—˜o+¨Å$é^C퇵ܒaÂ$* Ÿ¬Yæ²`9Èè½µÆz¾ºÝãg×8±ñ¥™™J§y•AúéâÍþÇHfqbì¬#Áº¡‹ãƒþÙE«ÜoÑ0h#~hÊÿ"” bÇa&‡¨Äv+u&³„î­”·wl™›<N½E‹s6¨¨%Ü&·w%ø A쌾@ÿņóSØûCÂxJY:${”â<¬Œ*ÏT£QïºAQĵÅ¡»
-ñýÄùZóN%€Ìд= êGÌdiWÿù>¡s©™Ë!Bù`‹\N7¢Ã8zèImwáZ,P‹;SfðyŒÈ0EÃ2c ýa£w>´Û˜¼Ž;€­ ífâçê ù\oX| a3•V_+Iñ’3»£ŸBT§Ì¾î…½éˆØ‘šµ°w†‘k?¢1®Ïÿ†846‚—JÖ
-y¶ò¨b
-åa缶5\ZY°ŽB
+4Ší8qZ`›v ئéÆEÛ=Ðm±¡H-IÅõ¿ß7$e+r±ÀbäÃE¾yóæÍèï“)Mð=¥ÅŒ.®¨lN&Å„.—Åœæ× ü?Ó´Ž7¦“âêøÆõ5MŠþ—ÛàÄ.Å4¯œ^‹´ÇÍ’·Á‰û_X}þá Í&´\ÈÕâš–U¼+åéçN•ôÎYïé¡[èÆÙ­WÏåë_­{Ü8Ûµ¯–ßO&t6›c‹Óý²M§*É·Î?Ìi:MçœÍ®‹/[ÖÊSeË®‘&¯m§+ZIÀ)C¥5ß;Se mU¨Ç SQ#v¼8ˆGiHx
+5˜>Pp¸ãÑl♪iµäó8ŠUŽ(c”>F鉷?'ë(_ßöQzúvŠË•m„2þÛ«‚¾ÞÞ=ÂàÓW’O·VÓںѹNz«»Š]Ó 7·ŸȈFâYK·÷$ªJz/ýaÏ»OKÐðdõ“Œ|D¸’´Â150jŽAþ(ehµ£­ØÅI|€ÝÁƒµ¶ÅcEJÊš.rR.æ’ò^ù²óœ§%ü- @,ù œz÷š„Öôñ¾*SA…0SŒ
+Œ¬„l¤îáã h{îI:úb#éFÛòñÛ«¼
+,à*ãâÕ£(ö7y×}þ°w¥˜¹Ä“¢Y‰Ã¿gÜHSŠÖwZļ«@–Á,ßÝŸßÞˆatdQëlÕ•ÁS) ²êåVyYöŽQ"ïB–¨Jã<'a½–%rŲKyÛrXžPA ]»Îæ³Ì
+ƒ ù*ÉáκiF²­Ñ»~6gtiwVýV¸
+™ã0… Ô¼De¼p²±A¢°ŒEEËÔ
+ebÅq‰úfU ô×TKÝÆê@¾ˆëwažâý¼{Îy¹I·ž”"†DT£´p
+vD~2§ÇïL9ĉbÚ#Û«0¦ºO& K³Â ù$ÍÌ)³5æõA"ÄŠÀèBm¡‡ ßÓ¶–pý,çd-‘|.$ŸÊ(Ȳ6VÛ ÊžW³š[µZilÔ¬ªl§£á—̬Út.Õ¦5µ9E!6¢¬>e'¾–ãBi ŒõH
+¿cKIbMΗttœ4OÊY“ô|»Æ“e݇Ùg‰‹z€)ú¼
+/=Ù-¬#–ô
+ÃzUiâý¶ks&!.C1Ø«:
+¿éà›‘ dŽ¢žÙïÒW
+Ž9Ê„2·hz^
+/Õ{ï;¼“íßõæ‹y±¸Âk)o6›3öß–'ŸOþ¹ÅëÀendstream
+endobj
+1184 0 obj<</Type/Page/Parent 1119 0 R/Contents 1185 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1185 0 obj<</Filter/FlateDecode/Length 1725 >>stream
+x•WÛnÛF}÷W üˆhQ’%9@l$)Œú’F
+Œ¢.‚¹"7&w•]RŠþ>gvI]#mG–¨å\Îœ93üvSÿbš h8¦¤<éGÓ)í_l†}_L¢KM'x£ YIKœíãîÝKsvtÙßà|sô%³ÃÿavØ¿„ßÂÎìõüäüÈâ˜æKä1žNhžúú4Oξûåõü+Îôé’ÄÑh8 Þà"šâï<=£æÇÊÒT’„Ö¦Ö‰¤ßHD‹(‰ÒóLJOüþéáóGú[FË(‹òý¥(Š¢à  ¢×¸ˆGÑ ¸ØäÒÊ·áÔxjo0ŽFAã®Sj[D]zÀ܇«IUÁ á…nï®ééìÖ$¢ ;á*\¾¶fã¤}zM7I¤©•Î‘ ÇÖˆ4qÕþúÒ›irײÚûìó鸔owÎà^T_¢x<â(î¿i·¾S)-$ej-5 wp|pqA oþJážI9Î÷À£p®.eJ•a;ƒ-Tå(nÚÿý§×=æðÀ@tªWJ]Á,•"•l…„äR×Y‹ÑKX\K»¥Ü
+8J$ò"SÛWØ›‹hžÃ#~µQnë«Éu’KceÇe­S锋aÕÂÜr¢¶𧖴‘”º˜Ó³6ŸÁaA‚ ¶ôêrfGà_Òʬ*e4ˆÄ<L„截q²f£‰Ù‘YS¯BÍÁsGK ºYÒÖÔT; Ÿw³ß[Ñ¢’/™àÛ´ù^V×73`”äJ$ÜãB-$E,…1ÏJgT¨ç®+Xad ƒ¯= òÎý8ñÙ"]Õ‡ƒ~1EÍPÐÊT¨åáÈå-¯ÅÚ¨T¦ â—Cr–äŽBK†µ&¯ÓOAXB_Òl«“SZ ‹4ЮÇA &јEaÆž6¬sÑÒäŽoe®„D½dÚ!ß1;CÂB@`½NT9’W [ýS °åÜ­àEU¯µ {D
+åÉ_å¾3Q.Œè&€éèáþö/æ,|Qø
+„ÆÁøÌ!Œt§ ß8r§Êº¨„–¦vÅÖ[aaC|0 «ÈÉŒ;­•§V>)$P‰ï;È›rÿÇ‘p
+ã±­##€8°ùA á7¾ ±‰$ÔTS!uVå<4ƒî¶…´ÊOE`}"ƒÁRò[6ÝÉ ‡/jG‰•@ 𠊱ʶþšr\é­‡³,„ÜX„ßu7@‰öþ=×ÜJ`27‹DÇw|2î|E¤°-½ŒÄaLS >)uÚâ͹$”K¤c4Ò¾ýxD»
+Ë£Á84ï„^C¶„¾Ù•–;ðŠ’BñŠä¡Ø¬/œ\a2ˆ.Þx˜ƒðt²e§¼²ñ EÃî= ŒI2 0!0 
+Û¯ÿÛì¢ /ÊõýÅÎßùG™Ô”à±€;3xçgÞÀ<ßrY¬B´¼"€«€@Wj‰™¬Dtíá<ÿ0mžµâ1žZ§COFÑå§óìêîúŠ>ZórNïL‚Ç lÜm\ÿ^{GoÒÇSczÖŒBŽóß÷¹ÜLÆx†æ;lðýüäÏ“P~ã¢endstream
+endobj
+1186 0 obj<</Type/Page/Parent 1119 0 R/Contents 1187 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1187 0 obj<</Filter/FlateDecode/Length 1570 >>stream
+xWaoÛ6ýž_qË—e@£ØŽc;ö!i’5@bgµº®X‡–([ Ez$/ÿ~ïHÉNT†¶j‰wïÞ½»ü}Чþôi< ÓeÕA/éÑptÆŸ“1>øg%áA2LFÝ—éÁÉÍú}J ÄMÆ”æ„8½¥ÙQ.‹R—¾4šüªt´)•¢±d´zÆñ­&A®ÔK%Ó¥5õ:¡©ñg„LJ¤ÜT/VÂyiiaÍÆáçJ8šÎÒ÷·Ó_~J¿ô踚
+xAD¼F!J±BòÜJçHóX¯Ix/«µw´@e@ªmHcýqD¥:‰ù H€dN¸WP­ ‘e*6Öuu‘š]i.ª…*÷k "7¥väêõÚXO?Ó³t‡­D]µHXT°ŒÿX*³ÊýÉÊgÿ!/hhiÛGZEÐ@ˆ‰“<
+
+.¬©àN£RüÂkh[kA°`­»·FÛàêªè:€™Jy;›·I^<Jb~‘‡¡
+êõ°Í¨…¯K—¶lù =̈\â+DˆVnl! ó>[æa °u£‘tÄ£Ûx RNÜ\¸“ÙÖñXlTÄiùÁ
+3ra–ÁòZƒã›V ìêÒ Ô¦ 
+Öþ’!·–sd7Œ·åÓÒ‡_j0XˆLãeül¼L¢èÐÑÞþüŸí¥¶S%ôg3ÀøR·¿·2D¡ø›°4Ò‘š©É#¬p´Uf— Ƴ½iËyŠ»÷8Šé€Ýc^®Äz-µ{C˜³f|PÆOÂ4Fëvî å5:~—¤(gdÀÚÄ_þ¶%wKj¼"?bFÚ[&÷ï-s h³°
+ýÑŒ Aº®Ñf*L“ƒëô…Šö®*
+Õ‚)½Jú—^ËW뤰ò-£ï'ÃÓA˜üÄ,à•æmPÅ‚Yôƨ@
+/Ô£¤7:ã—îîßÏæ)Þ“a#Éšæ³Á.y?gki«³;xÙîpoÙ[}¼Â DÛ2pž—0Fñº˜™5Xr¬¬ø
+£±áx%v0ßìˆÛª•:Su.]¸ûÉͤÙú#ü†39¥Ñx”œ‡Ýz~qyAÖ|ÅtÁ/YÍÉÃòżŒxäxÜ;gJþ× n.øÑp<LÆ£ ¦? Fœå:=øõà_żk7endstream
+endobj
+1188 0 obj<</Type/Page/Parent 1119 0 R/Contents 1189 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1189 0 obj<</Filter/FlateDecode/Length 695 >>stream
+x­TQoÚ0~çWœx¢R1II¨´‡V[ßÚmjª½ UÆqˆÛÄf¶)åßïεl‘ö2 V°ï¾;ßÝýÅá7†<y¢E¬(à}±üÁb¹d)¤EŽïñœå`%Ôh‹'iÆâá“xÉæC'‘EÇ刟æño”QüM9šÝ¦ÇPÖ³tž@V,Ø"+ ¬F¥˜Ì¤³Æ8ï®@9pž{%.¡á¶o ãJ{|.ë
+Z.^hÞÉ'ØJPº6åó(‚iœ±([ ôäóýC€â°1¦Ñ%$¬wþè.“Ú+ÞþÄiÚg:MrV`ÆwÇõœòÒÁžkOIYé¼U†‚Ö˜—ÝÖ…üNüÕ¨
+ÖÖðJpçC ò2íÎ+£Á[^×J0( cºÏés‚ÛW ÆVÒŽaË-Úxi‰"SÃÆJî¡‘í+{w@¦ÞèØŸPû˜Ã8WrvÁò] i²8]ŽJî>Á^imdƒu¸"½÷ˆ'Í?PIâ#•OÆ>ý¯¨}z«‰lU§4'yúD¨N(™ÕÅp:qÊ’>"¿’5ßµyä#NXÖŸññ!ðHHONÈå_ 0Ø“|0&÷1‚ÖÒº )ˆ—R(êÞ˜ÊÁÎI,©C8~Ôê ÜÁyÙQ=ªnÛÊ‹:nÈÁùõ¤[Mz¨CŽµUï´U(xÛRé`MáOÛáÆ„ÑÞš¶íÃôêûø½]šÕçœ\µvn¯¼h†<¨kÎ}>$FCß C¾¡_g·ÅiÄd8ÞŠ9$غq’R½=\ßÝ\Ã7kž%5«;" i5š‚âÌè]¦y„M€“ÃÀý×’˜†Î .¾áŒ–°šÄ« ØZã0-nÁÝüPº2{‡#J4JKGiž²'Ž¶j’ä´õ¥}ý¦¥rendstream
+endobj
+1190 0 obj<</Type/Page/Parent 1119 0 R/Contents 1191 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1191 0 obj<</Filter/FlateDecode/Length 1547 >>stream
+x­WÑn7|÷W,ú°Ï’ìHr¢HÒ0P;m¥Â(š>P¼•ŽÕ©<+úûÎ’:ɾ¸@‹q
+QÌËÓ[½+[-§ó¡+÷‡F“b,‡îyËž¶Æ–nH׆m ¸œ±¸¤Í>{ÄéX1Þð|†BdU’[Ò¦Vˆ(ò—x<^ÐG- B”t>¼ÌÁuH[S×äl½û{LáÀó² LÑåc/QkkAÂ3o¬Lˆ~G&ô ã–ÕšËbÿ5Šv%L T SÕʾŠ´`ÒÎ"ë
+ W2— *õ˜sšú!æ(JOÁ5¼­G¸\ÐóÔऱKç%²8ùÂÒé¶AíÓפ®$¯^ܼÙëæ4ÑS.h¡ôZ$ò]~ÞéJž{ÕpdŸØ?•eâù¶Ù8¬#Ý»ˆ¨ß&¬ëÖ›¸{~!Ó åÉ )³»w‡Juužˆ¬+k>·BsCÁ4¦VK¬…Ö/•3óÊàD~PhäŒ*·eÔù¬ÇVÖæÚ.™7YÑYºâäí6F«z/`i!àó>8¶åˆ>^Êd©v«•±+tQŽ¨‡ŒªÌˆ’ð¾%ϱ­œ:"©>c?ƒþyšH¥Ž:=õ‡cZì"CwÐUIªF[š°Þ³‡èT\ñ¡Ú}¾èó天蛮Çz¨ü¹5€‚¿)è·Ü7Ö!TöFô/@¼
+ÇÒ/½käAsF’>íЮm Ë‚¶l4©0èa¼XŠc&·|bC+ÍÒàYö#éð•ø˜Ò:Y‰C¼ÀÍû´·év/±"XC0ˆO-àY|Э­ÛÖ\®`R©z Cè¥+ù¨¥“|ŠŒnØ/YGˆiãB0¸53ª«…ö _‘·C³HT–´4ÀW"×®*©/"‹HDLë+ÏI}&w‰rÖâ6>±
+ºÅ kÒDhÚÌpÍ›F´ç˜ýIIðûAöƃ| Ãìe R1àøz×7ßÛ’S©¶˜,)ÕÚ¬E+T:Åo+£+LXñøTðöÂðéš-G0ÂN½½˜~3Œ­U‘Áz_ÀŸÈN=*x‡ĦI+OBl5Úø(¬4¯vͦ)çÒ·.E&ývŽM O§ÆÞÏûÆò°|X]¿!ŽúÓëÄÉhTŒÃd{ÓË4ÆÅ%jŽ³iJc!¸Âz1ƒ.–‘…ˆ.IWÊ®r½Ñ2KÕÖ‘›hª1YL¤ZD‡¶ÐÙæѾrq’DfOè\9uq3>Œ‚d>ùË£ÿcq
+P˜|¥ÖÍB¹ô~^D¬4BdÉè¨:ù f…D[ædúbþ˜$pg´wÁ-ÁJ
+€\¼¿½™ìv#[P¿!JjÆyx2¨Þcˆ`4®ø⌦ˎ²&4PfÐÞ,Ðü²ýø•
+endobj
+1192 0 obj<</Type/Page/Parent 1119 0 R/Contents 1193 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1193 0 obj<</Filter/FlateDecode/Length 1521 >>stream
+xWMÛ6½ï¯˜C8ÀJ¶¼Ž?Š¢@Ò&@Ù¦]ía/´DÙÌJ¤CRëøß÷ )ɲã"A°X`×$gÞ̼y3þ|“Ñ?-¦t7§¼¾™¤zµœ¤Sš-ø{Š_+© ³åôëƒ7ë›ñ»e3Z—°5_â‚`g2¡u>z]< íÅV:2%=|xCoun{¯Œ~¹þ„·3Ê2~
+ø!Œ£º£Ç«jTÞ˜ $"ðS8(‹•Ÿ‰A€Ëè;ß ¦>ZUs…~7Lqt‡ö¡Y1v:­©ãf…¤ãM{7f±±¶´ƒ‚® ÙFz±bÄ#‹¢ŠÃ‹ç:ùã^ÒÏçXù)ž`fj®Ò»WXZ ´|鸛„=«þ¨Š -].[G¹,›¥«Öà/‰ÁƒgQ5’©4í@-+}cu;Á¶¢Ñ†p&­¡~=éüýú¿ÝËC@ö±]˜¾‰LãA@va³÷ÝuÒ_r/±|ËÁ<K³.t+“}ï#Âî&X’ÅË}Z¡gLÛS²xE
+Û^-<Vàtc-³-f[€Å*÷  cúÜrrù*+jïÚñÞÀk_4Å[£ð9L©[~Õ¶Kv\­øé-¾9à+ýlž€eÃ; `q0"‘°Ÿ…uúía€áìÔ™¡íÀ <0ÝŠ]‡âŠGîxcKÖ
+ ½+¤S[bÃ7kd? CþwÞ¨À–R`öª8|ÿ¾ÿï
+endobj
+1194 0 obj<</Type/Page/Parent 1119 0 R/Contents 1195 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1195 0 obj<</Filter/FlateDecode/Length 252 >>stream
+xmÍnƒ0„ï<Åébr5Ü"µ
+/à˜M±ÄÛ×äçVíq¾™Ý_/s!Û#N!F¯¬½]õ‰(BÝ:%Í3Ô XÈC-üuš¸1KóQ_—¼8B#W 7!اaâŒ~¥gŒz&4d¹ ´ÂÍHÕ=Þ‹|˜ñòòL-Í°¶'¸˜xGXz)z,rÀ‡…¯z µRI+“” G©]•¿ÚFi²<F’?;ž‹SYà{ÖW_ZÜFR–[©ÕÖ2xóAÆÛMEsçNïÈ]Óâ|*qTb^§·!É’0Ks÷=ÇlË8ÖÞ÷Ä…iƒendstream
+endobj
+1196 0 obj<</Type/Page/Parent 1119 0 R/Contents 1197 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1197 0 obj<</Filter/FlateDecode/Length 115 >>stream
+x+ä2T0
+endobj
+1198 0 obj<</Type/Page/Parent 1119 0 R/Contents 1199 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 475 0 R>>endobj
+1199 0 obj<</Filter/FlateDecode/Length 737 >>stream
+xm”OSÛ0Åïù{ Œãÿ>B)míÐƽqŽ.‘Me' ß¾oåD^‡L2Ï?iõöiã¿‹…ø[QQœQmaâ‰ÿøõ…ŸPZfø4­‚ä(v´^i( ƒL0! e¥/Âû„4´
+³ÙF©Aã0X‰²Rƒ&åÌÔ E”r¯Ðè% ƒ\P©¹ÓhfYjÐ( b¹WhдœUv QPp‚!¾R'\‚“4GܪgBÊË LHô ¯r£Ô QÂn|Y©Aq
+2š¨Ð iÂw3Q¡AË„3š¨Ðè•"A¥-Ü(ù½.#ÌEæ3rbÊèÈÆP<è2òLHL »NÏ„D¶î2==b:Ñ£‡Rƒ& ÷8Q¡9Ÿ˜§s¢Bó$¸{ñTjÐU<;WjÐ$S¡Aóœo|ª,4OY1ó,5h–Í<»{Iùê–<*N¸{™$²x>=ÒPê~hž ‰ìc0Ï„äìݯÛC©9û|¶Õ9MbôvrêÄäôÈFkž yrêÙèô¸/8Ï„d§.S¥f§.SOÓ˜g#)rÜ#¦Õ´]ÜT‹«»“AÕ¯å,/¨Ú¸·1žÔËoí`»Í¾š®½¨þ`m‚ßþ¸öÒÝjµY®•yTT«–ºWmÕ ©ié lÓí{Z¿¡Vo}骞›ž^•¨îÚA5mµÛÎÅ'þñ|Û<ímÓ>Qï
+Ÿª±….1¨l.u{hl×Ý}0ÚË…=Ž
+endobj
+1200 0 obj<</Type/Page/Parent 1119 0 R/Contents 1201 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1201 0 obj<</Filter/FlateDecode/Length 1871 >>stream
+xXMo7½ûW t‰ ز-»¶[ ‡©’¢°Š €/Ô.%1Þ%7K®ýû¾r?DéTÄ9ì×|¼yóf¨g·tƒ·ô¸ »*ê³Ë³ëç_iqCË5ž<<>Ѳ¤›ùÍ îçÿxÝ’²%½lU«Éë¢kMØS¥ßuE¯çk×âfû®[OÖ2–ÔÅòûÙ ]-îaé¼tµ2öõ‚o^?ßÓímttµxš/ø…?èåËÇdƒ‚®*Oa«©¨Œ¶T Tº†v[\Ì#˜‘OOmg­±›9-·ar¨açÈ5Á8ëñ•D/AÏRx·wÑ?'7ë8ÍøxN߶¦Ø’[s>šDÔêB›wíI­×º1ÚÚO£Æë–BkðVp¤:¾¦PAgÎMðºZÏés Òám†°4pª}r
+s
+gCëª
+—«}æ~ÄõRÞåëäªP–œ ̉I(‘ð¢Þ•©ÔªB¹QÂÝVãcæ*©‚«Î¨ªr;]Γ×ÅÃ\8ùù,–Ú­Yik׉ÞkÓú€ ðð¦n*ÝJ¶§Þ³
+ª¹+ÏoçÄ׸¼êõ?ªAycSö|#©“¤fÖ¯[WXZDKW‹_FÿŸERúêÄ¢~EÅiBBFWúgÕÆ8+´RµëX$!Û×óÎs8½÷IÌB«uÄlšA?¸ÅºÞðYïå3êK/’4ø”¢ƒØ²‡ÚšÍm!\ç`$Ϊß{<Î(ú1è g–õÇQ—Š²«
+ h‰;ÇêÑGþÒiuWƒÍ ‚Ü?:íƒgIOh&qiµoœ-¹½i#jŽ€² ú „é`Êó9q²,1£¤sƒ£$´Óm{2™cYã‰È]L}ä™çÌ:÷<T_tYúŽUÿõü›±Ÿ>‰ÊY ÅÅC‹£kšŠ§„Ƶ“‰ÀŸÆ9ÌÃ9Iá_o—èØD?’
+z°§² Ip™_|#È@¬,ÏieŠ kù(‹szq)<œt‹¼ªÉv†AØ¡ˆˆëë’‡lÔl ž@涯£'œ
+p¬øe~6v±.¹ ¥iWfଧkß1_Xmc3““žx¤‘9P{¸CßJYäaïm-C0Ù|W•)3L‡òó¶†AÛcŒª g°8b`´ànx~UÆ ífƒ–öÏýl¢1±Ì-b£†
+ߤßgäëÕâ¹Æs‹X"œ1¦†¤þoéÛ®µ™gµáeKZÚ;LuIh ]c"—Ñ4§ŸTÈgfÚ¹r†=cåâmó‘Vé\’IòäÑð„ÝRìaÎ5®Qg)Q™Øࣕ¥}Ø“óK@‘=Zp9©~«.!ø-ŽpXš—yPA½ÅŽÎ¼r ‡û§:‘[ƒç/j‚®›˜Yå6HC˜Ç5J›0Paôf8tH›²zcLÊÉ
+&3ß@mÁ¡ùj¤°†ËŠ7AšÊ Žç kÔ8¡™Nǽ¦Å€eåÒe®‡€Ú$}ãÛƒÖŒÛcÊŒâÓX<,:
+endobj
+1202 0 obj<</Type/Page/Parent 1119 0 R/Contents 1203 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1203 0 obj<</Filter/FlateDecode/Length 597 >>stream
+x…SËnÛ0¼ë+>%@£H¶k¹‡´zHÑÂ*zÉ…–(‹©D*|ÄÕßw(Û-b¤(¹»3;;ûœäÈøå(æX¬PõI–fx_dé
+ËuÁÿ9•h’»2¹¾_"ÏQ6LY­ ”5že(« ©+;^ ©Å¶“5¼ Ã`¬‡o•C#…V¾ƒÐ5FЊ£z¡´ç€“ƒ°ÂK¸~;çö5ÕIì•o±y¸»,Ÿ’ Wù"þÂù‘GlBN)ÆÖ.ÅgbN¤ÌΊ¡U•èºªŒsŠ #´·B».6ÖôZý«¢±!ÆýšQl«ó­ »–ÝJJ&xœéYY(K`Gd‚öB‹ì¥öpUˇíˆ=éM‰ð{ƒÊ„®ÆVâ§üY˔ɺJ×óUºŒJÌœ¬‚U~Ä E´/ÒÎÐK6G6Âc#ú­à ã4xEˆN‘ÂñUMZÙ µÒ;aX½©å Ûà!*&õ¢ÀdlšæŒ_!;מBO>°ò9Hw€ÚDU^>ÐLQFsÄ`eYZÐu­bÑq VôÒÇÌÓlÏ€Up3;4:ziêx¬Êg´þÂR— "ŽàÄ|Rðmlcÿã‡ÒµÙ;|)cxí€h1 Ma^$½P‰!îu|ü§­™F|}¿>î\¾â>®Èç·“#ßÜ>ÜÝâ«5O²òøhª]5iy^®ŠìCŒÿgwoÓNÞ<¦“ä„Ç‹†}Äqยj·óñ2V\Ë´X­¹ý¬¶XÆ«Oeò-ù Q¡kÂendstream
+endobj
+1204 0 obj<</Type/Page/Parent 1119 0 R/Contents 1205 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 484 0 R>>endobj
+1205 0 obj<</Filter/FlateDecode/Length 1686 >>stream
+x¥WMoÛ8½ûW zÙˆ[þÞ[Ò´Û`Û4mÜí,hŠ¶ØJ¢–”âúßïR²e·¶-‚Ø–DrfÞ¼y3ú·7¤þ†4‹i4%™÷Ñ
+œò,°fèþæ9yŸql|2ˆ×¦«Yw·lxI/¯Þ=‹èÚ Õ­=X\]*ëTtW»€ƒ)”½¿gÍC8a-qŒYp¥´ÚX®«ãØ·T$
+°Õ…Tpw­¥†3·ñ ìÇþ®ý¾«v™:Á1ñUM™ÙpÐkkò“]žWíAñ
+…žY¯,p–¬UÚ?­E)f;ZéCb¥R,’]Á£[6Æ$ ŸÃ)H´×A ܈“—Ö
+´ùd0AƒvÍDÁ"Ë6*Gâ` OŽ$`"„> ý<‰ª„Î0É×2e>ûæÑÊéÅ©^ªdE„· 4¼VÀ¼U´ôj‡ù–ÓáŠ+•Ô˜¹üv€…Mæiµó'AéDÅSÅ¡‰@– …W‚0Ï`$ª 3ölu–'dñ“ FׄLÁyD[ã›9Û òóÎ+Õ$š&Ü}ìý®#l~<G³é<dy4á[/–½w½ÿ
+endobj
+1206 0 obj<</Type/Page/Parent 1119 0 R/Contents 1207 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 531 0 R>>endobj
+1207 0 obj<</Filter/FlateDecode/Length 1463 >>stream
+x•W[sÚV~÷¯Ø—NOHÂ’h&Óq.NüPÛyéÄy8HP¢[¤ƒ ýõýv„¸éÔ™€V{¿/ßÏ\šàŸK¡G~@q~6q&D3gJÓ(ij‡ÿµ¦%#@ºÿøôáÌŸùÎ%Þ$9M'3'l¡ŒΆ0°—¾ã±ØpêD¬áNð.'¿X, ftõŠm¢™ëÌZƒ§aMb²çué³9Á›¨XŽÅyãºN@—ìqSxÇú&±@‹XrN.|æ@1Ô#CO„‚Œô¸ÀCkÌT€çÍD¨U(ÀçÏX….ÊB=2˜ö
+}zœïŠ!Á`ó¢H„Fl²@{/|ž
+½÷–Ò†LI›"Ñ`QE":+U«\¼¢BǺiT½cIM¾pbØçÐ mÓ,c#&4r¹d¡º( )ct^Zë‘þQel7;2ºÖh4Ík½#…ç¼Ä‡Y+ð'úûFí(.Ÿ@—°bæï”S®Š#Å•Zi‡®Ë<Å“.R]Äúå‰Võ¤i¡uAYZ|ƒàmjÖB¤b³QY¯!ÑM\§•IËÂiU¡~¦ìãG6ASé*¯2M6‡’ŠóÎNûºËÐ9-aI"ÀOˆþo댓ˆð=y¨|C×çUV.Tö¥5A†^þ^ÑÕ¤15ºFðeXpÔ×ô¨#.´Y¤%òˆ„2öœ^·{$ZÏïï>ÜØÁåé U\/«ºÜTϳÞ^}º½¹:`Yõò¹·u‹ì­ËM–p
+áa «êr™fºùýÔv Ëͺ3ú¿Ü>>vL€6Œ{Ö «ûX4ýÚкÌ5%ˆZ ý˜J(KKÔVnjXØ †l.xxm
+΂2ÿjgR§Oûöû(m?d}a†¾0lÛû§ž4•ŽÓ% ¦•.t™`ÅÙ fÓŸeâåqXÌaHÔ:âÀ¼¸xw÷pq!áåIÎã÷3&‰Hþ‚^F™±©‡ý9ÔÛ9"ïœ8OøÅQ&^ –‹ˆcÛÂÁ lºA°z;N-–ÃxÓÔciàqÃ+tœ¥‹qç³dbA&TÙ®3ûtblÑ׋£‘28¢…QIžÊb_ã²ä~âoï%9o‚ƒ2?²êsWɲ
+6g¹¤ªL #7Ά5vÚßX¯vá«
+endobj
+1208 0 obj<</Type/Page/Parent 1119 0 R/Contents 1209 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 536 0 R>>endobj
+1209 0 obj<</Filter/FlateDecode/Length 1754 >>stream
+xWÙr7|×WL)©2•——DRy“ä8qÊW,¦ò¥Rà.(®½ Ð
+SêÆÒ;éÖÚ|¦öYª„’75<Wj…òª)dAëÒ-ñai©(­3å¼ñÏYËa!(+›Ãh8Î.ž©;œfƒ+ê^Qh
+Xס*H3G\Ž3<}è|Í&ì)Y·©$‰<×r© W4@o,@Òîè"Ôà6x+òe©$Í 7ÉuüÐ÷ůºTìãÖsÎFîÄ؇ý`(øåN¤‡ôúصœw##@+b‰Ó-·Žï76À+0U97=0?™»ïç`ôR0þøÊÜŸ!ƶÌö@¥Ð%½Þñè6^ßœzÃÿg¥×°ÈžÞ‚i × “¦ô#—g0¿Ö¢‹
+ðߤ
+k ŒJªe=Ç•^´<‹”â\æ™PÉó#ªÑJ[˹>SrxFjn •]¢ðJ·ê¾…=
+ìàÈ5b·+­
+n?~¶Ø¸Í
+2À“ÇØ£t˜b§']Þ;šZ`^5¾ýôÃßBLªŠ`P>–qk`sÝ= ” ²ëG‹l¯DÏ{#àoJi³û³áábô @ÒÐ]…Yr@±°`–Z‹×‘ÏqøŠe`K#ª8µÊèFûÍe[h”õyà½óà° ù«Š£eþëÞé{Õsº‹jsºÒŽvG“òJÞ8Ìuž}̽ˆba\ú=t¯€®„bãvš”9ëPU¾„Ƴe»ÁÇïÉCH*^ú°},uºr£pm÷œ}ÃZl°xmƒÆÄÙKŽk_¢jsØÔ{ýƒíkãJwD> `GŒ¥¾õ› 4Ó÷íÑe&Ð2u>’òIÁ/ã‹ÒðÑÀÉëPŠ,ÖŠÇÙs¢ê©yø~ÿ«®n!—¤þB`ÛcÇó=G|)²…ƾÖðº \¦s =–«õa¶œ!-
+/iæ…_4Ât
++—âÝ’™ÅãÕ¶rlA%×2…AbDÁg ãDa-¼–ûÅFЛR5O4Ç ¤8ØÃ|ç(v*½ÑÚ}×ά×XÓ³óRái8“î °6t êò±§\7˜Ž$§©Å°V}æÆ/p½W;̺–zlw!*véë=¾G3³‰Vl߇ëTFæW\f$›ºU;Ôÿv±Oáèâ½¢nî^’Ý€Ä5&°?¸|E¯ /ò%;A8¼UXc ¦«ÁïéˆÆ“¸»ß]¿½¹¦F’¹Ãºw2ä”»éƒî¤Å :<8Þ†~¤?Sì­¸“‹l2ž†õhÂŽ~šüvò/{r/öendstream
+endobj
+1210 0 obj<</Type/Page/Parent 1119 0 R/Contents 1211 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 541 0 R>>endobj
+1211 0 obj<</Filter/FlateDecode/Length 1618 >>stream
+xWioÛFýî_1uRX),ê>¢@œÔmŠ:icAÑÅŠ\I“»
+—´¬þú¾ÙC—c£( Éâs¼ysðóI‡ÚøëШK½!¥ÅI;i÷U.ðЦÁóNòœúã~wzɈJIsœmãööëÝO¼BýQ?éQAÃa2 9]‚»Ù ‚»¸ìäöúcÖ3$cÈé9Aþ‰í?cFá¬ÛÝ{.¨ßéÃîÝÝcîW0b܃ÁÞ¹Þ
+ßFÇæ^LOZ—°·CÓ9ÀŽG4Í.mš¦Ò˜êɳé'„C J—+a-5ú­^Ü*DºTZþ­E!n=|3é´;ø´'“6þ>˜òÆV¢RFJiSaêÂŽÆ#ò&­LÞ¶tç“–)ÝÒ&7 ¥ƒIý­KÍî0é³°éR’×ým´d•¶Ø™uæwâµI]•Z«<§\ÙŠ*Ü滇­jI€àé)‰ÕJêLfç´6ú¬¢¥¸•Ør‚MÉË,†WYËž‚زK‰o¡3Ò†–Â3UÊ´2å&¡KS’¼Å*g™û&dt–™Õjsµužµú?;¹gˆ÷6W7Ž*;‰8=gZt’~¯KÍ.(ÿ@Òi}:¹› Ú|:áx—Üñ]ÔTz³cB;ìîŽã6¹ d‰è7£Æ‘Ó /fæVžϺ÷èv (JQ…¦PÓʤMKµª"ãÂ7¬Ó4WpþœT"“sºVx~iŠU]É2ñ@D{ˆÝ§æN¯˜Y“ãz¾¡¢w`«z#«‹×o¯½~3ßSO•áCŸ ’'ã>ž™B(пÁ²#êDÁ‘{ñÖ#Jàñµ(fÂÓQ›
+Å"5 ­þñQ'a÷V•0ýH©HSSëÊ¡,bf½1kX,|’¤¦,¥])½ ÷ZÝQ¸‚Z¸)5¥¥ç û©å]E¶’+R–½ð›nË›¯#dGöðu@J®
+k¹ŽG·¨É…Ô²ä(Ål^šÂ…èýNÄÃœ ±ïv“n»æb-ú9ãÄ$©¢™‚ùæ0:ÄaÒ¸ž] ]‹Ùê¨ÇAßÚC¶DJÀ¿BVK“E¬äçZÝŠ¥ƒayHΑØFCá¥3³ÖSúíÕËùèôZ–·²$X)²<EKˆV
+½y·^ªtéPˆ"•=ÒR.– wsw-€Ç9ˆØûâãzRºz!ýrÌ–sÚ˜ºŒ§î)»­sþ - ñ@Vè¦u'X¼݃*ö@w½•Í°Üi÷KZB/ž#ç”fŠë
+!tñâè3YÚÈÑ=w\/¶ )™º‚Ò\” 8,¥ÄÒÈÃN¥Qm
+7° ¶N—G:=d6¡?Lí[¯+mkQ¢†Ň[—ß0zÌÁ×ÀÛ^7òöô­nÂÃæe¾9¥—\1±ú+?CÑ”ë/½ð×E³uS”“›57ÓXqT™ ®5\ÑÁyžF>>£µØÐ1N¤¶Ìa«0`
+endobj
+1212 0 obj<</Type/Page/Parent 1119 0 R/Contents 1213 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1213 0 obj<</Filter/FlateDecode/Length 1610 >>stream
+x­WÛn7}÷WL
+k­‹uq
+´°åP€¦)¬"( j—’ï’
+¹kEß3äR—]ä!Îò.9—3gÎŒ¾žu©ƒ?]õ¨?¤´8ë$êɘ®Ç#|î៕´<»›]=ÜP÷šfK\Žñ!#ïth–¶>¥•^Q¹–4É•Ô%•Æÿvo
+¡ôÛÙÜ¿¦n7Üo÷F¸ßšáøÆšTf{1–¾Ô†¥'f2o†ž…UÒÑV•koýYZ§Œ&³¤ÏJgfë’àjX»BZíÞ0áh[õ ê!èÖR{Ó•“–d.ÓÒq.˜~ˆKPˆê2úæ\Š Îs&B“HSS
+¡3Úç¶Æfì¸Cín?éqLåZ”¤nªg•Ë•ÌNœ ÝÒ£(‚DV
+÷^ž’sšr, q*,~ÏK#Wùåqsªû“APkI¨)éø¿°Á*ìµúÿ$ôXä~lõht·W]/?3dšia „Ü@‘^¬ï%qgª d®ÚlòÝA"O”´á*JЖ‡Au™ÍßÖ³¥ÁþîãR~Ä JÌ·%Ôbœto öƒZîÁŸ²ùÉšE. V‚ŒÞ[k¬—談Ø8~l’!Û‚LšI©tšWTŸ.Þ\à7|ˆÜ`×ÑŦ:Òª[º8>èïÎ[ånƒ^AAëC?þˆF6$ˆ‡q¢›Ô™Ìz°RÞ=Þ³eîï8ðæ-ÎÙ ˜–ðšÜΕ@â±5ú­{Í`?é÷ ã–²´Oö(ÅYØ$U§F£Ôuo¢~++Š}câ Ò‰óµÜJ
+ÆúËFï|h»6yw
+' a‚ŸsÌhk ·ß¯B{{Ýä´½ ‹Ü÷Æ1‡|++È$¬/s•¢j¼òXå)Å
+åaç¼±5\ZY°„B
HË’ 8;*ž{0Š
-q„ÑôÝbñyöñã|±ø5z&=ÌyÒýLWëÈÀ}eÁm‹î;ÿ€[o½ƒ@
-Y,AYð]º¶¦Ú^
-endobj
-1462 0 obj<</Type/Page/Parent 1367 0 R/Contents 1463 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1463 0 obj<</Filter/FlateDecode/Length 1858 >>stream
-xWkO9ýί¸ªZ5•ÂäÑlø²‚RvQU`!­©òÌ8‰ËÌ8µ=„üû=×öt(«RU„Éø>Ï9÷úÇÁ€úø7 É>Ž)+ú þì÷“!¦|â¿‘´88ôÎG4ÐlÁšå„÷û}še ú®U%sr+I¹.…ªÈÖY&­]ÔE±¥´v$Nª×K#rU-ÉiTÉ >Jc•®H/¼…[Q¦‚2Kº ¥tüðÃìûÁaŸÞ,ï”°-–²Kofði·ÖÉ’2QQ¥zI[]LÎ;Ÿdpt:ÿÐ¥ëB
-+É™-|/9Lmਲuáø„‰–ØÛž3‘—ªRÖá´yC›•¬H8x\»˜ <ê*i‚Ž“9[)K:Ëjcá½úÜ^œ‘…9T aðÉÞ9ÊïKÜYõ(œìÝ_Ý|ùëæêî:Áëᦠ‚íl%ª¥Ì:GòI”ëBv[Ás!Œ,õ#òF©ª$ª<Xû£ñH¶Lã³Q;4Ó©Lp3#“ ]CmeBWÆ×Y
- ˜w¸©Ffº,e•Ë|þ!!n»®ÖFl¥–ŸL¼ï‘Ck£Óè@½€9#}Õ}-´QKU‰¢Á,÷…Ü«VsV(Y9Z]6`܃G|‰s6’™àÐ;Çâî½ÊQ—"[-@amA‹,Ó5Û†cÇxA–ëš©"ªajÎO€ LJ—øoœ r‹þšÆÁ_ƒÀ{†ê…<rçØ|â1âgvQ¤S`Sào…Ö*üÿú&¡û•pïA£«åŸñp­çË^»2Q[ð#EƒQ·ë³O>ï•xdœ HŒréÿº¢ ],žÑY[OÔ #½óáËΈ<'xƒdF­G¶Ó¼
-äV§# š¾S\bß¹® fsÂ8f›p¤­Dè×F›pµU°ÏЇlpÄjc º††óa¤Ðœn*vR
-H*EU{:ǸåB¸q)S3Ð<=…Š­÷¹¯½_Åø¢FŠ,0ÞçÀn ‘~Ô¯4ˆuª³Ön ¬KliU(Œt×Ñ"àKÖ@4ôò/sQ%(5s-àJÆÞïy«*”ÛvQŽ‡¶¿]fœPã¡¥ô‚g A.¥;½¸º%ÿÝt(ß¿}OPB¯S 
-%ËBÊ"«‰:¥Æ{Òe½X.ïç&t«æZj ‚V}‹Œ\C•}ñœÏ>¨
-‹›­Ó
-³¶öÁÂ}Ðivêj@´ŸEúrFQ½ÝÀÔ–GOŠHç„Z¨eLbž{10^|ªÑ6gG‰Ë"q'Ét@ƒ£)Ùùp<‰´‘\ÿõáp0ÛB”Á8³¹-ج…¼ƒ„üÎÂÚâ%^ÐålÔ»~ñ´³üÒU7.#âY,Eª±×”ÛVÚ bRɸ˕e
-¼ß)
-ó©!ñë²'èúä+†J=ÖKæLˆw˜ðèÄ„8ø/,(ô„·ð7ÀtFM+8»ÅÒ¢K3,V€Y]!à8HÈ®Ðì,*à PÊ2eQôÝ·lœ!•Ê,¬º(ôɶ|IcxZUq³Â‚‘ ìÇÄÎS ¹äOIvŒOßbÕæáx:ÿÀyÓÝå—Ë«ûKú|ssuã'ä9n¹yDzý.>ljz‚‰ªL ’Œ«Á'?/8>}B]Á]6Ð;ÿi!Š\;”´ó±ka§‹Z ú~›Ò‹jŽµ¨½€ùu‘E2(+ó::~VÖ&ê ^Hs.í¡~`9`¦ÃÉó` îw™9 µlÆGH mè#<mVƒŸqF´(£)|Ý,ž{òŦLòžå}¼m'ì‘
-×>¯ƒ‚î±êé…TÒWå`0¡Au»òòŠS¼TMãàŒq³ž~¤ñ$^doO¾žžp¸ßù¾r¦³šóó¹sÀ‡ÍÃIÔÊ;¿UáÑd”LÆSð'F}6ôyvðÏÁÛm´endstream
-endobj
-1464 0 obj<</Type/Page/Parent 1367 0 R/Contents 1465 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 635 0 R>>endobj
-1465 0 obj<</Filter/FlateDecode/Length 1937 >>stream
-x¥XÛrÛ8}×Wô›”)›uW^¶r±g\;™H™d·ø‘„1 h Ò²þ~N$M1©¹Ô&eÙ$.Ý8}útCÿë…4ÂÿcšÌ)Îz£`„7ÍÇçŸ{óE°¤ùrŒ(£p2&ÕSJë^û£óÕåhë£ËE°j¯m=g4Ï‚Yk´ýŒÑɼñ‚í¶Ÿ1º ƒE{m룫U¶G[ÏMÂY0o†“`Lát
-{MçKœÛ?¹óΖxŽf˜ƒÑɤyâQàF«Y0¥)Ž6¢1~rI»ÞÛMox;¥0¤ÍpÏ— Ú$åmâAqt:¨BÒQeNwÙ1•™Ô…Ò{ú”›J¥%¡údR+<(M_•NÌÉÒƦ0$ž„JÅ6…½Üdt¯âÜX³+‚W›ß{#ºÏá×&ü"á’À5þHU(£EJ‰,°ƒ}Íó‡·óÊ[°¢Yúõ
-[SmãΧ3Ý`#“ÿ˯~9k³xc(Î¥À!MN“ÉOº–.b£wjMz¹Ë€Î¦¤¬´•VÃ…C¯eþ°.Ì_ù…³zOÂ^l+ϲ»'¤,¿¿@.î
-}Sp‹Ö¯Ò1nP9Ç(öÝ’–Ï¥u¶•Ï$/K˜ßDfFöl¡Ð¶¦L­zœÁofdU ]¹i·å—hz0ƒ>&\:\Üf£* ë½nšßv°Ú€ý»Þ ±)è7%OÒѳŬ¿ðïz< VÐÞÆÁw¬&ä»——ÚãPäÈÐ'&3îK´+Ž¯‡C|YsB¿6\ãN”ªíð~ýáöîÃÍzøpóíË:¸ùvSÑ¡ÎW¿¾c]FúOèõCš»[WSŠ:仼´Ñ“|Ÿ—û(ëÏ¿m>~üÐœ¦…³¯fK¾Õ^fðŠBÜFw¨LË \áW¸òm,rW>_z2=‚ÔÚçu§´qš,pÆÞÀ­ºafBŸqÍ,óy‚*¡7yæùßà€·.z<Ä“p“I¹Z°BÙ+ú|û®ïノ‰K¾»õMÃÔ*n˜
-OCÞæfÓûµ÷«O\endstream
-endobj
-1466 0 obj<</Type/Page/Parent 1367 0 R/Contents 1467 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 640 0 R>>endobj
-1467 0 obj<</Filter/FlateDecode/Length 2008 >>stream
+q„ÑäÝ|þyúñãl>ÿ=:æ<é~¥«Æ²udࡲà¶E÷Ž~@…·^? …, ,Hø.]YSm.
+ü ª‘/W‘á‹ß5æ­…ÈHeR
+ß–^ž3q‹z½'ãе3†Âë*ï47+Ÿh2oM0 ;Ý›;L4ü„¢ö?¾Ô ´q­cÝ>†ÝMŸ†ÃÚÕãíŸw·<Ͼ ËéÞ¤ö­Òo`l·Ýâkä¸OíQç†m~ø/Š×£ëd4ãk&.ôoØÎûÙÙßgÿšÙcendstream
+endobj
+1214 0 obj<</Type/Page/Parent 1119 0 R/Contents 1215 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1215 0 obj<</Filter/FlateDecode/Length 1904 >>stream
+xXkO9ýί¸ªZ5Haò $¡_V´”]TñXH…VBª<3Nâ23Nm!ÿ~ϵ=I:-« ÂÄö}sî5?ÔÇ×€&C:SVô“é”v?ÌϬ8™&õO’SŽ’2’æXÜÇöí,Æt:IŽi4àíß~åÇÙAïbDƒÍæli<Ð,÷{û4Ë:—ô]«Jæä–’r]
+U‘­³LZ;¯‹bCiíHÌ4T¯FäªZÓ$¨’k<|–Æ*]‘žûîE™
+Êt.é’ÒñÃÃÙ÷ƒ£> Ž“!lwJœ-²Kof°i7ÖÉ’2QQ¥zA]Ž|ì|êã58ýøxØ¥ÛB
++É™ l/ØMm`¨²uáx‡‰'±µ=c"/U¥¬3Âió†ÖKY‘p°¸r1XÔUÒ89'#vr¶T–t–ÕƆM{ù¹¿<'‹ã5¸Á;{¨”OqgeÔ³p²÷ps÷åÏ»›¯· –‡5M:„³³¥¨2OèqÈQ®
+Ùm9ω0²Ôψ©š«B’¨òpÚIc‘l™Æg; ¢v(¦S™à"fFÂ'ª†ÜÊ„nŒÏ³
+±E{Má`¯AàCõÒ±³o>ðèñ–]éØÔ8ø¿\k%þ¿}“ÐÃR¸÷ ƒÑÕ⸹ñÖóe¯\™¨-ø‘¢ÀÈÛíù'÷R<3Î$F9ðŸÑ„.ç[tÖÖ5èHïbøkeDž¬A2£VŽ=Ûi^ rK Ó‘MÝ€)N±¯ÜZ׳9a³M8RŽ–"Ôk­Í¸ÚJØgˆèÃ68bµ‰¾]CÁy3Bhv7;+€”
+}– ‚ÚìÉêÓñü$•¢ª=£ßr¡ \¸”©hž‡žBÅÆÛÜ×Þ+ñ¾¯" Œ?‚c`3ŠH¿
+ĺÕY k×P Ö%6ie(´TWÑ"àSÖ@4Ôò/sQ%(5s%àLÆÚïY«*”Ût‘Ž§¶½]dPc¡¥ô‚g A®¥ûxysOþ³5è
+P¾ûž „^§.
+ªì“Çସ÷AUXÜlVèµ¥°OæƒN³‰P¢½éëEQô禶,zRD:'ÔB NF'æαçãŇÏæ(ƒá(qY$îÑ$™hp:å6û8Obm$×|4 ´e0öl. 6k!Ï !¾ó0¶x‰t=õ†_<í¬¿tÕÈ؊¥H5æšrÓ
+»AL*w¹²¬Q÷;Ea>5$~]öÝž]¡©Ðè`½`· ·N´AˆƒÿÀ‚B/X…üÙ
+Üï2sæjÑ´@ÓÚ:ÑFxÚŒÞãŒ.h^FSø¸<÷ä)ŠM™ä=Ëóxûœ0Gt¾øÖ…'ØS¾# ’Ññ
+Ï ¼ÿ~Ò|á²ÿ2l¿n%V<­ˆ"xµßW: _láµS×yúK<?»B÷üÔÌr úE¡ws÷|ýÀºR/¿'ÃæJJ?Ãï»ÉÐé2Ïw,`o™¥?0&³úÿtظ¼¿ÕÜáhšLÇ'-Ý=¥®„s”|š NùîiaÕ}˜anu¡2@XÓofögP±$N’1}Ucø×AU¡-ð5ªTÁ[\üB’_wp#pô;wÚ‰_Áó­=£(ølzîQÑ9gˆA}ø=º$7¥­©8J ƒ~Â%Ы¢  ~zm!œ4ÂÅ9˜Ð? ¾]z±Åý)^±¦± ƸgOi<Á5=¦ëìêã;üï/ç:«9B=»|Ôl9šôAµ¼ó»Ð÷Ó;šŒ’ÉÿàÅ£>Ÿñyvð÷Á¿MMÇendstream
+endobj
+1216 0 obj<</Type/Page/Parent 1119 0 R/Contents 1217 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 548 0 R>>endobj
+1217 0 obj<</Filter/FlateDecode/Length 1933 >>stream
+x¥XÛrÛ8}×Wô›4[6%ꮼlåbï¸6v2‘rÙ-¾@$$aL‚´¬¿ßÓ
+§SØËh:_"nÿäâ-ñ>Í°«“IóÄ«ÀV³`JS„6¢1þä’v½7›ÞðvJaH›àž/´IÊ#Úăâ étP…¤£8Êœî²c*3© ¥÷ô17;•JKB'ôѤ*VxPš¾*˜“¥‡ MaH< •Šm
+{¹Éè^Ź±fW¿l~ïèz<‡_›dð«„K¬ÉðK’¨B-RJdì+Þ?¼WÞ‚ͧ_¢ ±5eÑ6î|:Ó 2ù?ý×/±6o ŹÒä$±™üV ë`è"6z§öÁѤ—§ èlJÊJ[Pi%1\z-ó'€uaþÊ8«Ï$œÅ¶ù,»gñø@Êòûk
+ŸUÀæ
+4çº÷ÐgãŠ9©4uÐœ€Kƒ"2á©»•±¨Ó˜Ë½²E~¦Gy†Oâ»ðQeA[^F}ð!øU¢B@%Яæ$Aƒ+·ì Åñÿ’$Î¥¼ÔtÇ£JÏ$µƒ“àrÖ
+”sÐÀ8-­³ai‹PW›,3:IÖÜkçË“ÒºøÁÞ€î\òÁþ'©Êž
+CG‚c(N†Ïiù÷>ƒ|¨HzÇJü*Šœ¥(Rz×u«æ<ä†iɶJ $À!”óH; •²cáLŠœãM~RVÖrRW˃AE‹Ô|up?•ËbpfN÷*I¤î×Ö:´íš¨¡*³\¬°ÏõÂg^Ö"»Ë<S±¤"~¤ E–EæBýâ\9³ƒD2 ›ç"±‡ÖCXÚ¦ ^dÃz+GÑ29|î ¢2páö«z{ùú¡˜Úã\`Çó>u^V øc.œN°‰¶]@òw”!a¬„µ&VÀUÅT¼‰ŽE€ÌBß­$é¡Áfaé$Ó´"fF——£±Vq¯SÑ„tj+&í”heIõa·CæV W{µ@Ïdví=j¶Ô4{ iqze85±\¦Šj¶ý_™zdJ³ªøõC‘Z½~Ôÿ¨Qoãªw\cì )\-¹iFãù¢ª´ZýÝòõ8 1 `Ç[h&¨-ML#ÄnÈɭ駜ºÈ÷¹)5pd/E¤ŒøìÔ@&ØÓÚ è=,DŒƒçÍKzûEãÉZkVK;¢¨0&µQ”Kû¨Š(ÒhúŒWUÂÖá98P9ziÚ·/ï_œ:ÑÚž;LIL Š\c9~äIæÒ«;VƒïuŠÛƒ;Gé=÷7æK‰ÑÈ1FeÕLd%úë®
+ÿ[Hu\¹t> Ïð¥Fm î½{;.…ÄhÑÄå\e!ñAáµS8ô/ë“Ñ1äØÏ©ÁÕR“ñ]'}l¦vÉ]’ æò§,Ùr¿—¿ FÜÈÙ-‰+äh€!*y徨¨àÇmau<BŽÜ˜¸zv"Sù¢@¸tö¹ØnQ¹®geÝqÎ÷ïj!äÙ÷gÕ€Û€1͉«àŽ þghÝ -ö2ﻄöYÄ[/Ùãö|ÜÉú/qŽʵcNPyÆ1­É œ×ætE‡¶]í¶«(?)Ù¾›:HuÝrÕÛ*Ùf¤¦„åEanc
+B±ý*ã•kŒb?-iù\Zg[ùJò²„ýMffdÏ
+mkÊÔª·A þ0 $«fèÚM{,¿DÓƒÙ¨ôi4™àÒáò6UUXèÕr3ü¶“Õìÿ;õƒMA_”<IGϳþÄ¿ëñ4XA{ß²šŸ^^z@‘£BŸ˜Ì¸/Ñ®8¾ñ3Èš«æµáw¢Tm‡÷ë÷·wïoÖÇ›oŸ×ÁÍ·›Šu½2øuŠ0 ðë2Ó?¡×iîn]M+êïòÒFOJp¾.ÿr(ëO_6>¼o¢iáì»Ù’oµ—¼¢·Ñ:Ó2Wø+\ùŽæn{¾ëdzŸµ/éNWã
+Yà
+cYu¹Ì„>ã†Yæ1J oòÌS¿
+endobj
+1218 0 obj<</Type/Page/Parent 1119 0 R/Contents 1219 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 553 0 R>>endobj
+1219 0 obj<</Filter/FlateDecode/Length 2005 >>stream
x¥X]oÛF}÷¯¸/…œB¢>#Ù}Y8qÒ5'ÝJ»A½ŒÈ!519Ãr†VŒÝþ÷ž;CR4Ý<‹ ²ÅûyιwüÇÅœfø7§Í‚–kŠ‹‹Y4Õîã·Ÿ/›M´¢åÕŸ~.»o9m/–¯Ñk¼{-pwµ^Eëæß}³»˜¾_Ñ|N»~ÖWÚ%ÞüŒvñå¡2'«t½Ú}ÁƒëæAD2Y¬áf—\~>
G¢’dM!)Q"ÓÆ:[rÆä–î(šj+ñy¨3rG<h
¡4å&3šÊÊÄÒZ:¡ÓQ¿sG©Ò {žÑd¾Düp‡w‹„hÎawÁ|Ò’Lê¤u½pšhRS… 2dÅ~¹,,)K[Q)gežFô»©Ïq#ÜIB¦tÊèA8lï`Ü‘lqH|üšAª¶”±JŸê3
@@ -2832,10 +2375,10 @@ G¢’dM!)Q"ÓÆ:[rÆä–î(šj+ñy¨3rG<h
ãhPÄ^‡Bp0 á±GU²®¤ü¶×gFšÈU…·Õ„~"äìgJ 1±ÈYE'Úe¢ÌÛ"J®†/TEV©ˆy ò‚P(צ¶@}"1ßüí *Ù~™0ËÍ ?£¡>|Xó½àà÷Ö9ºÊš‹½¥‚„0ç&9O–ff93‘ÄÐã®õþ‘?[`9¢7½ïh¾œ-”Ãü—"ì-§JAš›²¹Ø$8€#Ùz
|éØóyAôL–×k¾ÿOLÓÄ`kÑ0úø#ž)P2ä÷ù<ýˆGb‡©ë¯œû·7¿»€4®g“Cg“ÛÚLThö5j Úu Ö³Ú8Y6ëQjxø³.¸ —ÅEh"ýg…]<Z®®ÇÍR¾Gë™6/©×ü,}ñÌÐÍó¢àµ
-s|o!ÊU
-Ç\¼Iüq¤Ç„ïœ{[ ü8,sC¼LËOó\ÅLѧ_FC~§ó·Þjv¸.ÉgÉÿŸ^
+Ç\¼Iüq¤Ç„ïœ{[ ü8,sC¼LËOó\ÅLѧ_FC~§ó·Þjv¸.ÉgÉÿŸ^
endobj
-1468 0 obj<</Type/Page/Parent 1367 0 R/Contents 1469 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 657 0 R>>endobj
-1469 0 obj<</Filter/FlateDecode/Length 2191 >>stream
+1220 0 obj<</Type/Page/Parent 1119 0 R/Contents 1221 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 570 0 R>>endobj
+1221 0 obj<</Filter/FlateDecode/Length 2187 >>stream
x­XÛrÛF}×WtR”S"xEJ~ÙÒ%vT»²“YWj¹C`HLÌ0˜hîÃ~{N÷”DÅÙdåR•$`fúrºût~=P?š )SVõ“>Þì}|{4’S:Œ’U4LÇÉ`÷TÒôh2Lú4–1/NFXŒO¼8èO’ ÒÓd(«ý$Ý=ñêpÐçÝC–PQÚó^y’³ãs¨õÏ’3^…ÚöIÎöOñœžŸŠÞô|IñIVÏÆИŽ†ñ츿ñIV‡c¸’öS±*=•UyâÕËÙQï͈š-–ñÙ„f¹@Ò§YvüÖGÓ ê@]šêŒ]yü{ål¨]I”Õ%žßé°qõlªïM¦yÓEž¿šýÙNAw0HúiŠÌòãùð´Oq½5`·Ü°±Ø2ե΅BS§Õpë¬ ®¦‹•¶¡CÊ攕&»#g©óþïäe*¯D b¬¹UüÄåj¹±^RÿÉØÜm<½›Ñ' èƒ
šGHcñT–tuM›B[Z×®ZÿEåÝá(9Ohë;·¡Ì­·¢iJk ÑÑÛÂ\ßëÚéÛéÏÓÙ÷·ß¿Ÿ};ŸO·>è*ÎçV‡ÊÙùü»ä;
Žï?Hÿ3‡vÐ>v˜éu µ®+ã=0ð¤<m]C¹ÖÕµëÚ¨ i‰lÀ¶š¼ :¡Ÿqbc
@@ -2844,77 +2387,87 @@ x­XÛrÛF}×WtR”S"xEJ~ÙÒ%vT»²“YWj¹C`HLÌ0˜hîÃ~{N÷”DÅÙdåR•$`fúrºût~=P?š
Çž9Îÿ-Ji‰áq‹Zç²Ud›j÷ÜVk®°œžˆJè-8ÙµØï9ïäa&aÂÓ^Šñ1 ïèIk÷‡¢§{R›6뵫ŸÚÿ>'¬ü»–?Åàø°Ù¾A„m`²´‘ÀøÁÕÈš³woQN\FauÝ`WLû=ºáB÷ #xVk‘ü„(Ÿ·½ÜÙff‡½jáš5vY#Ô'%LZU;s$®‡>€µ¡'ÊDëÑÞƒ-X†³Ò³X”¤u©•Ç»…‡èxhŽ«Æä¼Ñ‚ižõ¿‹r£¶îUZÒåKmàÞ• ]á„ŃödÖÁcÎÛr‹Æˆ9CóˆãVªŸeÓÑ’ò&ãü\ã*`2Ð>æ
­BÃIž¾¦Âva1_â¿ ¬¸³@di…øúk{œ“l +8Ü•«õú@Ûþ g¥ç±.wµ­uÃnòdÉå%E#‘bÓÏŠÙÙç0…b‚Á+/C¯´ ̈¯pj,)N}§Ì¬…Z”[‰²D‰¬ï&Ü,¦6
Eó[Ù¥ i' %ç„´ôC„Ü:EþkUBEùogð—K¾%¡M‘ûrðn0ã湑¡d—þ;ì0Äw‹€‚@iÅÒ¼7Š®þ9Ý2œæ9çruáŠ(áØ¡SY¡³;È0š¯Ðg5rQ¬ÔÚ,_
-Ú²ËñøÇ‹‹Úèå Æf¾ ,ñ×®ÀœÎrµ0׶G¼PzŽàáíAØݵÑZÊ9h„GsúrO-<ض™Ë!}ÇžæÇ;$3 r>^u3WÂè] Å%îÛh‚ÿÁô£YÞüÕWˆrŒ$_~öä„I†¬Y†-un:­…+ F&ß·ÈÿQ®&:‰x{fØw`>ç·Ya ,ì„}”õ4¹§=O=ŸÉÿÂçÀ ûâÀŸ$˜Ë1veß78+……äÚÁÌÆÔ¿œd'å_àz©-8Ó$`2é>µÇ ¬H%]u¢œØtVX“©2¡[2\k‡ !À¥¸²-±øfá³Ú,˜k1b'2„#$V³©<kðĺ ²å,¤†>Õ¶œ zP `bÜàÞ/ƒ¶¬á1õz\¦X¸Ì¾,é¡k±*º\ðP£!8عÀ§ D0תÄ[¾wÂ!Å®ë‘ôûálÉyÏßíÀŨdœš÷×Ùn¤ø,vžâ³ãïB·—ô¡v¿0ñ]ï.XråçãIÒ?K©;éŸó~|kC20WÆK¥Li\u2´É`6ÂǼÉø,~š¥,æûÙÑG¿l‹oendstream
-endobj
-1470 0 obj<</Type/Page/Parent 1367 0 R/Contents 1471 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 662 0 R>>endobj
-1471 0 obj<</Filter/FlateDecode/Length 2134 >>stream
-x¥XïsÛ¸ýî¿b¿UéH´$Ëúq×iǾKRÏÔŽé&×HDL
-㔨Âåþ¸Uº \UÒÒÑ(çdC‘ L*yYéÈi–ê.-ù÷|šÐs%…•”éæOŽ7Äbe“‘+%ÉÆ)äÈgì;‡º+JÞ«PéŸHuãäwd–‡Æ ¿ZZ+
-i}’×Ò˜Ãd6K¦77Ô§ü2¿ÒÛ|â“ù2Y0*/£gm­ÚW§—wô3rT
-œ-(Õu[I'©‘®°ÎˆTÒˈr£kŒne£š¢­U-bÖƒ8_ÞñéÃ*ðþ©h
-w§$I‚! k•¬g´™G3šƒj!õ Í`ò9ȳNf¸8H´fâWB¿j Õ°NÑ•·ü/ªÉôÑÒæûõãû·ðÍçÉ|:ÃV¸£ï,È\W•>2êP [-¶. WU¨FTôë§Ç»‡§ÄÁ‹¹ OyPº³0–ØP2:*W’/ë%¹1Ä-kÔÛ Ó²´G‹È˜ƒGÆÎszà%ú5dÒËqDÛV¦¼ô}¦8æ1ýf9æÛ¬GcÚŸè³JKôF¾õ†z¸ØJää jใÄ=ÀLfAGm^ £»– ’ßEêôY’l³…7ijËI¢aðÚT7ƒf*§dý"qÏÁq •¡F¡Š=Î@ƒL…/O&p™;*V k5p`ÝxÌÙÉ9â±ç
-Ú…®
-’ˆÔÓÑm ,¡»ÊêñâƒFÂT¾„Ks»‚"
-ó‚è¬4ð|o~'²<ô˜AÌH `:ùi!à‰>RcõAš‹Ó_FO»xÇ{ˆFîðô“u žiòã!ü@*;æÞ™iÌ( .0‚vO©ÑÇ—w=Ï^ lïÙÝØGXŽNŽÖÁ)ֿĶÈ^~ë\¨‚¯¦ƒÆBôÙĦÓ/´¥î*pÈ´—óLœV,?Õ =CøBO¢¼k¼JE¥œïy!DŽèŠªàoXãG¹»øIÜF6ê¼éþó§/Û‡§¬ë„ÅÈQðF£Üã@Ԟɞ¹Ú¡#ãJ®'ÔÌbiCQ.Ñ~°¶Cqz«žÊÒ¨ä$¬ì5Së % bH;Ëöà:"F•ÄâFpå™û„òÛ‚ýÆ1ÀÔ¨Ö1a
-·„øþņ<.â«¥Ÿ¤¼æþáÓ–üÛF˜àþ2KÿÊmrx»'i‚QÄ€ÓRƒmÁ‚w€@-¸ë‡`¼hŸ_²gIY×ñÕ`¶À7ëZ.ñ=Çò–‡ÖíÝãý=ýÃô^:}a8øÉ ò’Éjºù¿†ÜÅj‘¬–k|+ƒS ÞìýîêŸWÿÆ\·Àendstream
-endobj
-1472 0 obj<</Type/Page/Parent 1367 0 R/Contents 1473 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1473 0 obj<</Filter/FlateDecode/Length 1934 >>stream
-xXkoÛÊýî_1p[TdF’e=
-…Ÿ÷¸vÜXin}Y‘Kkc’«Ë%£èß÷Ì,—–hA› €øšç9gfóÇÉø;¤éˆÎ'ç'ƒh@ãù0Óx6Åïþ•šRyp1¦ÝûW‹“wci‘²ÉlJ‹„`g0 EÜ3¾µù®]Ÿ¶k¯)¶E¥Lá¨ZkzÔÕÕý§g*T®É¦r/³/¶ §ËﺤÊRí4™B¥¶ÌUÅ/.ñçùöó¿n?GßNÎt6<FpÞ[Ànœ]TüMÁ WphqŸ{Ó}‚#Gpµì%V;R=?\9휮êÍï˸“3¡ÙãžÃû§ë?“[+TjÙ«)^[\ÃŽ5
-Ž"b¸s6š ØG‚öq}¾¾ºJ}AÌ¿I]JýG­]ªYêª4å•úì—e+ÿê8I[tvqi6Õ»°ÎÖa-¥>,Ÿ>ÌiUÆk„f!(Ã…MȤ,à"µ5.ùVŒ‚¯4ð¡’~'@¼óïê:®+Ðj'‰úþFt™V xéïݧĸ6Ò´´¹<C-÷b}—ýøçÙ;]$H‡»Â ùEW÷Ejª´ÄãK·ðÜBâ¿iÈÚêR®¦‡ïsÇ›
-ó ëž9‡‚eH^õmö@µ(…R¹/¥0a¶ »Ñ,ƒ¼€2«n®#úº† 3¶r…ˆB·¼1õÍ
-§:>ýPc‹ŽÁ½ì)Yº~ßÓÌ/¼ %>pÙ8ἂøò.†ˆâ
-.ƒ¾V”ָýü#«ëúÅZ¬Ž‰V¡³ýÛ­m%hb®ó““wz.„ZêXêø”'¸)ØùÓpupÖ`¨‡ý¡Œ²™ò˜•²meò§hCfc¦·w‰
-7c!¼ÑèªÏû¥6nÝN|Ò)n3\ÄÖÕ_)RžN¡8P’mßõÞÄ?ó
-,Iß,¡ØH
-E³,{|uº Ú‡tŠóßkÁã^vcµÂúèc‘Jà“Ž_ßÎ:¢ùü/á4[™ãOZê£uQ/È­Ñóˆ¸SûUð„–IäÙÕqz m~ÿ:m5ákj‰ƒ5S! ζ"ÛœÿÞ™;`øq¢Zöä¸Þñ§2ÞÛv2ïŽ$ЧҼ¬«,?ðwL­
-endobj
-1474 0 obj<</Type/Page/Parent 1367 0 R/Contents 1475 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1475 0 obj<</Filter/FlateDecode/Length 1449 >>stream
-x¥WïÓFý~Å€tâ“_MrHýÀQh‘hJ!¨­B{}Ùží Þ5áþû¾™õ:¹„RD9!9ñîÎÌ›÷Þl>ž i€¿!ÍF4žRZž ’ý0&cšÌgxá­)—ãñìË/†Ãñé‹«åÙ£ç—4œÐ2Gé!À`@ËôbšÌ“QBOm•›ë¦VÞØŠ^TÎ×MÊÏî1½ÑޛꚚ-½¶ªäÇ·N×ôª¶¹)´{¸ü!¦4rˆÑ( †ÔÍ“Éx„X‹ß–Ïî…E“vÑEwÒ¶=„\³ÝÚÚ“q”™<×µ®<嶦?Luù'©*ã§Å2á“ú]”Y2Q®4kìuiã'¹±;ò–Ò¶4Mu›}ŒÙ##ñ§ó¦àµNkÙv“Ò ©t@}À,…™r[è’óôíЭ|Sk')bÝhš0Øá´ö Ä@)ŠÚ3Š?kÿ¢Ê-ºû±Ñ'Y> ‹êO€Ÿ®µOH²~à(æN…M¥Y ýbw‹{¼‘Á9ÈÉlÑCÀbµ£ÊzÚ¨O „-[…@[…®ëÓƒ)7ºÈzd«âVrj3ØØùmT­ZnЮR«Êa…òGÑCÝ]ÆØ2Á,“zqmkÍ}2ÕÉñ™©uêm}û(ËØŽ(ß<ùõ¥½u_¿z±ìÑncÒ À+ƒKU݆ªZ_¥E“qü¤dFæ¨nIœl~˜o,ÑLâ¸êÛè-‚51‹ $fQPê0advç@Ü‘-çüèy”Øÿ– v«.ìÝãÇ H)ï® »VÅ{
-|Y#§à,ìz@’µ*ÀDæ–èTá-§¦âU‡3—†£)|+áhÆì¾ç›<?JÙæa†òU¨§G•‚`JØ,I".ß0º{߃ßñ×T6
-ÈÅð`÷à­…(
-gŠG±÷)³Az+†{(ë+cx,~qx/ýFÓø ¶ÏDŽ9RJ2X[ŒÊ  î¾Û‘³Œ—›¸¬c8S´ÂG³Ø\õù~~ÿoÌ[oNñKe>¦é ?OƬ\Ê®žðÏ„¿1è'›6|Y–[+gØ;ú³®ñ†sÈïø-2™M’ÙtŽ;8s2åPÏ–g¿ŸýváWéendstream
-endobj
-1476 0 obj<</Type/Page/Parent 1367 0 R/Contents 1477 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1477 0 obj<</Filter/FlateDecode/Length 1917 >>stream
-xXkÛFü¾¿¢!à 5 Ñ’Vû2`vœ
-Î2¾W!Ÿ-Œ”Ð bŸ½{õ¼kÖ…๒öÞDœŸ#zàˆqóCR„£‹V²îà°å;cõˆ¶xÎÑ÷(л‚>*« úßCØãDÔ  WŽ¸Crí,"¨Ze˜H¾Ú+‚Aòà(¿FKp* ðN•L·(2œÆùøiD«:BIè7ÈÍo µÛKÌÜ•Užr¢^¯œ‹Rà¢ÕNá4#N
-‹ «&.ŸdA¤9§Å뢵ߴè¶à$éï`”V>&Ô"훺(ô 
-³Nî„m¹xÛIy*ÛðÖ)eIâÃn°>­Íh¥ñ$¬ç n9£áZ»Ó›AßtT¾ïš=@Cìùá7+<É;O* u‡ª+äßžurT#É
-v zªy‰¤<:óV"¯^q­á:P¨tn6•6Œl *[ãèt¥Øj6¼l>õze ¿á[¿‘<µ´¸qœ}¸Ð4X¦Ö~¶ª’cg£0‚· ²N0&oPWB‘äÁÛ>% ì6Zž7ýd‘³ÃEZ÷1ÃS%¶¬ZE•x K/ÆËgâÍŽÊ"ÒP,UR{ÞøgL¸X±1{1–ñÏ”z¯iR­x`)¯õj]§OÆ´cLw1Ñ éÎq°
-¹¦´¯yêÈKlõ^C’Û:x4Ž…M2;¼~ ß&•–uÂ0K1íAÏŦ…œ›fž
-e³ï’§Ä"ÜÂFjï¼m·m÷·—=øcÇìHúÄIóO5ä Ê›¹¬ U¦#ÐiGñÝL¯KsÙ ŸÑk £¢nÿpe½Ø,ãM†^³‚­‰@„DÛý7J¯’æΚÇôVi_š^j8 è?\üÎTäÍv‡d„šŒz‘“ÞRaÔ>p
-é_5 C`Êæ-]ªÈf´åFäÊ6ôítAÖrjáL©@ ª`‰­4|l¸5òž*~]‚à0KV?v¯«ÒûC·É" ÓØ€Ìð^h)v÷–õl
-endobj
-1478 0 obj<</Type/Page/Parent 1367 0 R/Contents 1479 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1479 0 obj<</Filter/FlateDecode/Length 1945 >>stream
-x•W]oÛH|÷¯h8¬HŒ>lIö=yãd×XÛ›ÛèÎ8D1"GâD$G;CJÑ¿ßê™!EÑ·— Ž-“ÓÝUÕÕ=^Œhˆ¿#ši2¥8¿FCšL&øz5ŸáëÿŒ¤õÅÏ‹‹÷Ÿ®h4¢ÅšŸÎg´Hχ´ˆ/UaK)ÒkÊôf£Š ©‚ª"‘†ÊTÒ×ÊJÓ§°ö MÒ§DçBß(Q/à7FZKÒÆb'£w‹ïÄÂÑÉå("þ?F“hÌ™ªp§¹‘‰*#ùCâ
-àl
-È;Ÿ¡›kŠ3…ö?ûúíÛq*c§Í7ýQ#»ƒ¯€'+%õ ÊäOz¬ÌبÄ*VzïÜ]±eŒCÄÜé.kî7OwÏ6n}ú‚¬Ý¤©¦®}ê Œ¯i0¹ñ¦ð
-¼¬kVàþ7':j´­=ŒU‡ÉÑ®éÎîä‹Aì
-ƪdw2VkËÔèj“:W9k¾€Ia‡Äx‡X]Ƴh>qËË×lg4Šjs3Ã@TÀ„HÊÚ]cCQKüq1ðªZ.Sóà{òec´9§Òsˆ]u*ZÉX
-8Ê ˜÷±ÿ¼5cF˜ Ì ò`º¿ºÐßȦN©B?%¢x-tù
-SÓÖ­--±b±*˜£•ôýËpk#Htj œïém±ÿxlUzHQ¡W
-ÅÁ8Öô9,d·µ 'FíeÅ…wmª«,a± Ú^zÛëäLG£,,üvèËæ]Äs{ˆù^ž™¦ y¨C3K½SµÔ+0ªôëj3х輺<
-ÀôØ /J,Ž;§þEgño]Ž¯ý˜8Œ§CÀ1klä¤öÏšçó}k·¦Æƒ¦5í }=>K9_GÂFÉÐXÑ"z(›zw»]¦Â,¸¥ðû¨ëUl0§¶SsïÞ_x™}>íµ_Ü¥à —‚°×Â=ü^{6Œ€·•Ùš1àëû°5Ê´×W°)níó Mg“h:½æ‹Ø—»§ŸïøæôWý{C%ðyV+ç;…W³á ?ï§4}ÐÅZm*ãeý€ë½©œéØ[ú&Vš?ÂJóovvi.%W³«h6û+üÕœC}\\üëâ/¢t_endstream
-endobj
-1480 0 obj<</Type/Page/Parent 1367 0 R/Contents 1481 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1481 0 obj<</Filter/FlateDecode/Length 1817 >>stream
-x}WkoÛFüî_±P4lZ’eIy P«n¬ ªÂ8‘'‹yÇÜ#ëßwv¤eæÑ"imnwggf÷¾žŒhˆG4ÓÅ”Òòd˜ i2'—4™Ïðÿcüqš6òÁÅd”\ô?x½<9ÿcB£-7¸k:ŸÑ2#Ü3Ò2}¶°a››{RU¥•ó,­5ù`Î(7¶š’›··”åN§øõá””ÁGÁSU»ÊzM¹§´vN›P¨6;c÷&y¾ür2¤³ñ4™ à³Ï¶¦Tªqžï¼=ø KzcMp¶ etÁÁS[HQaSUPåì&/4áÅ/½*×ø[»oÚÑê™×šKúSN´‡ý äÖ]$cŽUáq¹ªÔšïÛÐ&w\v]I6©Eúi°!ÇeMå?Ìrcl½zžÐ•´)H¦¦¼.¸ÐnU@³Œ*9òb (\òöÕ’Ën~º~µ P;Vm=HEŠ/ºbüQ«tAƒñpˆgÉüBêü·Ø¥†ª¾¿šÑådlÈSF¡‘è'ëv>()1è¢ðT6æÛ˜¡s…U™0¢Ë`ãlIªW–/잊ÜìÚo5ZêW0Öi¨U.p£Såõ)²ÇSŒÅ1o<µf“ß×.æ”{_ã´òtÐÒÄ3P¨íbìÓXM©vÚ÷kºc2ïîâ ŽÎ JJ$ùºøS©BàŒ™í½Âœö¶ø¦³ÿúŽèŽ;tÕ†¯ˆ¤Ìò{íª|eM¦MÊe#·™6¶6YTŽBO-©Ü•:;í% Íj¨e)ƒ/°(¹1eìÆS1Ô¦ÐÞÓÀk1z)a"Õrq‡ê;<+åýÞºÌãôAûA#)†M¸ünñæÃç›åû¿Ix«çÜÄãQˆMŒö²Fž½’^R^%*Ë
-üâ†ø|g±ìþˆ(t=¬Ob| H ÈX0Q'@Žõ TY€íWW«†áA¨!ÆÑ$þ N¿¨¥»R`ÃnÑFî†Ë•×d[ù1šrÛíñ}„ðÚ+#Íñ AÜ%Ñ
-endobj
-1482 0 obj<</Type/Page/Parent 1367 0 R/Contents 1483 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1483 0 obj<</Filter/FlateDecode/Length 1637 >>stream
-xWkoã6üž_±(p½à(¶“8òlÓ^M ´DE¼H¢Ž¤âS}gIÙQt)Z‡»³e’»;3;K}ݘÐ&´?¥%åÆ8Óìà0ڥ݃}|žâ¯‘”mœÄÛ‡4Ù§8ÖÙl/: 8%l)N6gÑaDg7WǗמÞ\Çw7Ÿ#÷ÍÑ=ª*ÕKK×1éR¨ŠNuåŒ.>Å_6Æ´5#\œnþH÷¢\~º}±G“ ‡šN£éx‚E‡ÑxgÊËnµµjQ´tÓ¸T8™Òþ5Jøó¶/v»8y2‹Æ³=ÞçÊ’¨kY¥ê-…%mÔ“ªDƒDãrmpТ¥_u^Ñ/KS[géŒ\.Cfx*JUJ8LUIѤؔKHÎ{‹ƒîD>ÏZ[N˵Q¨hÖåµµ.i?:%]ßÄçt–­ÒߤqqBI?¼…­æŸ²¶ô§I9|ˤ!|Ö•$[ËDe*¡RbmÊÅp­²r*NéŠCöRv¹p”ˆŠš*•†‘©èþê„ROè}Cò°T¥}¼Ë÷Ò¼ ‰hBKÇêÂcû"°¸±ƒ ‰.kQ) ~€ìBX`ª+>øu‘üæde‘«åª˜‹ÏÇ× ¼Oˆ1EŒÚh§]D}¥)VXÚ$2„»R‰ÑVgnkÎR´ÐCF©åjÑ8U=ùHEˆ·ˆ$'8Ɉî¥ìï… YQÖJÑÙ l®—ˆßZP j.ý€‰‘üåmû
-…Í«ó!›ä²ä˜
-1:;" ÉZ[æ*É}¯õJ}§RQhˆq ä{êÒk*EÕR-5ÔÇ|ÃØ:¬
-ßJÑR%á
-žðÎFõ‚ÕŽQÈÎu˜©Lrý&Ówò'êEúùâGZ ¦ëE/úV70‹w 4¨De\¡`ÞfX¢¼mE»ÿd“‰¦€Ä¹£nWâÆïÝÉʤYß~zT@«¢»PôQÑz0÷n¾Åpa 7Ž·³ÓÈ×CŸsæ÷ÇWƒôX#÷ç§w—ñ]ah\;wðêxÆ Â*Ë\
-endobj
-1484 0 obj<</Type/Page/Parent 1367 0 R/Contents 1485 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1485 0 obj<</Filter/FlateDecode/Length 918 >>stream
+Ú²ËñøÇ‹‹Úèå Æf¾ ,ñ×®ÀœÎrµ0׶G¼PzŽàáíAØݵÑZÊ9h„GsúrO-<ض™Ë!}ÇžæÇ;$3 r>^u3WÂè] Å%îÛh‚ÿÁô£YÞüÕWˆrŒ$_~öä„I†¬Y†-un:­…+ F&ß·ÈÿQ®&:‰x{fØw`>ç·Ya ,ì„}”õ4¹§=O=ŸÉÿÂçÀ ûâÀŸ$˜Ë1veß78+……äÚÁÌÆÔ¿œd'å_àz©-8Ó$`2é>µÇ ¬H%]u¢œØtVX“©2¡[2\k‡ !À¥¸²-±øfá³Ú,˜k1b'2„#$V³©<kðĺ ²å,¤†>Õ¶œ zP `bÜàÞ/ƒ¶¬á1õz\¦X¸Ì¾,é¡k±*º\ðP£!8عÀ§ D0תÄ[¾wÂ!Å®ë‘ôûálÉyÏßíÀŨdœš÷×Ùn¤ø,vžâ³ãïB·—ô¡v¿0ñ]ï.XråçãIÒ?K©;éŸóþOL“ñ>)œÌk2“ðo2>‹_¥F)Kø~vôãÑoê†endstream
+endobj
+1222 0 obj<</Type/Page/Parent 1119 0 R/Contents 1223 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 575 0 R>>endobj
+1223 0 obj<</Filter/FlateDecode/Length 2130 >>stream
+x¥X]sÛº}÷¯Ø·*‰–dY·vì›z¦vÜH´3~HDL
+ ÜÕ{‰:·Rø1‚»DqœHTJ"3_¢ÖŸT ÙzŸ€-9‚ပ‰™RŠ¥N›Ó_.éræÂOºôª˜ÌÉf¹¢ÉÍš_þ¦ˆ‹¨
+ØÝžíbÛµ­6ž?ÝiDÿeÝP [O ðJ8`ðÄpXá(¡Ï £4¥h-¤#©”Æû×
+MPì°èpzc*|y2ËÜL±ZX«KÆcÎ&Î=PÐ.4TD¤ž‰Þcc` ÝUVsxˆòKPùÍ
+b( |?h¡³ÒÀî½ïÈvþñÐ^1#‚éä…€'Z<JÕi.N=íâo¹ÃÎOÖI€z¦Éχl°
+¾nx zNÑgûM¿Ð–º«À Ó^6Ë3qX±üTƒÎ mà÷„ž.(Dy×x•ŠJ9ßîBˆ8Ð3UÁß,°ÆOqvñ“¸l*Ô%ØÒý—Ï_·OŸX× =8Š‘£àF¹Ç¨=“=sµC÷E Æ•\O¨˜ÅÒ†¢\¢ý`m‡âô.픥QÉIXÙk¦Ö†IÄv–íÁ÷rD*‰Å àÊ3÷/å·3úc€©Q­cÂ
+·0ZÀÁ ±PØ®Yè¯0ØFÙ0 ‡n.²Záfe \wìʼnl
+ Ì<ã€:5ß<Xó€W—u]«2 äÈ85Ç °àÖï£õ%:#X ƒ?ÀwG)/yÜ P‰Lx “lë0? o2§Ÿe†‘eˆÉ)Ÿ:–ÔVVvÆ×SÕB·¡ ôcÜÕeæf=$`°ºÄyé–¾w
+©öÍÍ–_4•´Ò8–»íAãôèüÑ.Ú"BE¿Èúõ»y-^ýøh¢ýYF\徧abJ9(á% ¨ý),í‰n:ðó¢¶{á@~?!™Ðà°c”}/HVF–¦‰ù1œŒ™"¶HÔ'“öÕi4]<¾žåšðJ Ñõª¹ï3•€?ÆFÏá×
+endobj
+1224 0 obj<</Type/Page/Parent 1119 0 R/Contents 1225 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1225 0 obj<</Filter/FlateDecode/Length 1932 >>stream
+x•XkoÛÈýî_qᶨÈŒ$Ëz(
+?·ÖŽ+ÍЗ9´&&9ZEÿ¾çÞáЭE° ˆ¯û<çÜ;ùýdHüÒtDçŠó“A4 ñ|i<›â÷ÿJM©<¸˜FÓîý«ÅÉÇ»1 ‡´HÙÆd6¥EB°3Ð"î™
+ßÇÚ|×®OÛµ‰×Û¢R¦pT­5=êêêþÓ3*×dS¹—Ù[Óåw]Re©všL!R[æªâ—øó|ûù¿·Ÿ£‹o'g:žG#8ï-`7ÎŒ.*þ¦`‡…Ž+8´¸Ï½é>Á‘#¸Zö«©‚ž®œvNWõæ·åÜIŽ™ÐìqÏáýÓõ_É­*µìÕÎ/­
+®aÇGˆ…G± Ü9MPì#Aûˆ¸>__]¥¾ æ_¥.¥þ½Ö®
+Õ,uUòJ}öˈ²•wœ¤-:»¸4›ê]Xç?ë°–Ò?–OŸ æ´*ã5B³”áÂ&dRp‘Ú—|+FÁWøPI¿ Þ ‰ùwõוNhµ“D}#ºL+ ¼ô÷îSb\iZÚ\ž¡–{±¾Ë~üóì.¤Ã]á†ü¢«û"µUZâñ¥[xn! ñß4dmu)WÓÃ÷¹ãM
+J÷ª´Y†/Ùƒ
+@ÝØb—¥ÀcÑ
+–¤ƒo–Pl¤
+endobj
+1226 0 obj<</Type/Page/Parent 1119 0 R/Contents 1227 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1227 0 obj<</Filter/FlateDecode/Length 1471 >>stream
+xWkÓFý¾¿â‚´b‘“×&Y¤~`)´H4¥ÔV¡‰=N†µ=Áöß÷Ü;'ë”vÅ®vå$wîóœs'_Ά4Àïf#O)ÎÏÑ€.‡ÃhL“ù Ï#ü•šR|0ŸÓá_¹Á‹MÆóÖt8ŽfÁv
+¹SfcVD¿Ú½†qrsŽ2D2;Ìm±º¢Â:Úª¯Ü›Koí¦®OSjt–ôÈÙ­äÔd°µ9òÛªRG´Üb\¹VE å:Ñ}ÝmÆ82,;pmkÍs2ʼnûÄ”:v¶¼ý—V.–aG­|÷ì·×vè¾}ó<ô²Gû­‰·
+À¦ùráXSºŸ‘d‡dd$}óyú‘O h9]FôNf½U,Ì{”ŒzSó T¼”£‡…îJ*|>ñŽøÌÞ–7ÁÁ^gYOv¤qØÖö ‚ØYà€§úwrhæÕõmDFÝ!ëCÒ¾ºS!ßÕþŠ€6¢¯|L(¬.Y'Ê–éuíh¯Œ{Àdc 0â]q#¨gDÁOKšSyúQËʃ²1.î%^’°¯ó×^<¢P›GTPÝSAB N<Ü_3ö&Ë(©ÁÒ€Æ1FLðÃ=ƒ
+endobj
+1228 0 obj<</Type/Page/Parent 1119 0 R/Contents 1229 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1229 0 obj<</Filter/FlateDecode/Length 1910 >>stream
+xXkoÛ8ýž_qa`à°ÛyØ)P,úØÅN»u03Z¢m6©!©¸æÇ﹤(y”¶Xl‹¦IDÞǹ÷ž{ä?Ïæ4Ãß9-tqMyu6ËV+ê¿Ø=~˜Ñõò"»¢ËÕß/.ñ­•´ÃÙnw_ÒÙ‹«l™Îâ|8úr}vþfF7´ÞÑ<»¼XÐ5Œ]]¯h]3ZçOJ³7š¦’ôœ6øóÓÏøw»Ùdµ5;UJ÷týålFÓ9"ÄÍöB-üáäB:ËWùüù›KšÏÙób–-¯ohºXe«ë+6ð–â^’6žòƒÌïdAǃð4ÖÒSã$s4c*Œt„ØÞ¯ñ\jõ¡ŽH9r8.‰­¹—YtzÓ:.Ùb6‡×›l…Äáõ¥ sttó+}Œ‰Ñ'é›úïÑ"ÏÅuv.°OÁYÚ)ë<Á¿#¥9¦ÞÚ„ü…PáhöúÅšƒË­^“!—Ô…´ŽFŸ¼°žÞIÝŒ& Ù‹,„8z-Ý7õhB#ĸ·¢r#º Ñ{éÆ£ŒÖ ˆ
+eeîU€ˆ e)7ÚKíUYÒVR%ížáU(‡Yš\”¯÷K <a‡‘`þl³9F¼6›¾´ …h
+ ¦º±ø CÔÝ
+ ÷;ÓÏ„ê–
+~u˜Òx~àºm¼vk]c±aÕøÍÓIX1AöÁañºhAíªp
+á ¶:Æ5ÚwMY>н(UÕ #šzñ¦£ò˜¶â­S…E¯q¸3 b}œ‹ ÐVâ&Ç‹ÞrÁFÛki§9Ö€ì>%Ô3ß?Ú=@cìùñw3<‰;, v‡jjÄß
+ž"*ªIˆ
+“táÒ †A0UûÈ*5ÐfëmË…È…4,èÓtÖ#r-ká¦4@VÁÛJèØàøüͪ}Õ_ã‚Õ>.˜gË ~qýôâÝˬ®¾°Ò~mò¦Âêü*Å©NÓér†ÏŠ'¯ŒÞ©}cà z‹Ýl›<¼x=ãWdâ¯é?­à¾å½ëüv4×åò¯øøƒ].ÙÇ?×gÿ>û/¥3’
+endstream
+endobj
+1230 0 obj<</Type/Page/Parent 1119 0 R/Contents 1231 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1231 0 obj<</Filter/FlateDecode/Length 1889 >>stream
+x•WaOÛHýίXE:H‰IBH÷‰R¸¢Žks‡N¤B{/±½é®ofíÄ1ýr­ª†`ï̼÷æÍ죞èâoOŒúâl(Âô¨tÅYw Å`<Âç>þY%æGŸ&G§·Ñë‰É¯ Ç#1‰ïvÅ$<~ŽU&òX;Q8eñ ?fê=‰Y8¡³6}µ$b¦Dn’ßÈÜ-.t¶À³¢57|„˜këðˆNU+8™¼!ÇN úXg.W2f^µÈ"^¼P"m±’ÎmŒÚ"2©ÔÙwi‰XøUÎ åB¹R|zÅ¡˜è¸Š†;½³ O_Ù‚ÊSÀb¡"ê]á
+Òsõr¦Ç 4ÞÄíÿÁ&Ý’ÎN…&2€Y,×
+¤n…NWÆæ2Ë¡| -2B.†sÑ%¸enV¬ë¬”HÅNÂ.—6©ÊŠ ÎÌ!ÿõr Lå’’b&Ãe±¢ )/V \€’j„¥ÖÍ”ŠT4=iR;!?à–ç
+ O5Ÿg:ЪԬ+:Ê‚´èèŽÉ ÉXG<ÄmÁFÊ‘§'^?Ÿ¯&%;Ú6’)eºg½‰ LÿS|¨UÙj‹V¦òؘˆ>îÁkqO·pu¸kAÊ ŒÅí$9ºð¾p¶·ŠJ¥NI‹Ž¬<ŒæW'‚§çûuBô,ÕNˆVR«5ÜAhø²Çà;TðΧûà•
+àl
+$Ê—
+¾ee¸› 5º2 Ý…«¨H¹k!¶Ôd4=jSƒ*¦.SÖÒñŠ<À+­f“(„†€·Š0¤ÑÛÆ$xœ »¦Yg
+R®£â(êZàD¨fÀ—NÚ”@¸HÃ%0Q¥ á×Ù=ÀüZ&²'ÏÃÏ ŸÞ^ì–“NìF9i)ô³±KôwŽA+A—"î§D g^d¤ßb<”€‰6†[üüD†¾ÑvZ‡ÿ‘Ø0P1ý”<4ê%SâÄBð‰í(3áV*Ôs ðòØšb³}ôÜJ›0{-Ðïý.6–þ(ŸñÎò’,ÃDôº²X\Œ05ࢡ¼2^îgiŠ?Ü/¦é46)Íû2cÏY¤]ˆî¦™T.o(ÛªQÑL… ”ƒd`8ŠuKkXŽÞ‘1š2ŒâyË/ú»p1“k´Qd …×Ìä¯ð2ãx[©iûTFÍ”o["€:A‚}ßà|îŸÅþr_«t£B¯
+=žøŽ¸—k8•œ¡ŸÈǪžÊ=ì²rßÈê5–cˆ ïºØØ«¡ jTÛŠ/[œK¯1( û½]¶ãî]Äãõļ™gf×™ÚT¡‰¥Ö¾‚Ê6ªýUú-u7 х輪<
+£ ¥Î,®BŠÅþF€c^â:
+º/2~H8ƒlÑè  ®
+´ícОŒ
+ëÁ.·¶àÞs—â[iØè_Ëþ7\åtà`4Fñ¿ÀÆôÕÍä诣ÿ
+endobj
+1232 0 obj<</Type/Page/Parent 1119 0 R/Contents 1233 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1233 0 obj<</Filter/FlateDecode/Length 1881 >>stream
+x}WkoÛFüî_±P4,Z’e[
+N jÕUEU'òd±"ïØ»cdýûÎî‘´Â<ø!ët»;;3»üïdL#üÓÕ„Î/)-OFɈÎç—ɘ¦³+ü>Á—Ó´‰oŒ§É¼ÿÆ»åÉÙ‡)Ç´Üà®ËÙ-3Â=£-ÓW·†ÂVSåì&/4e¹Ói°îpJ‹%¥N« =•–cØ"ÓÎã¸24¿Hè6t×UUä©
+¹5t£‚2Y\íü))O{]øùzùïɈ†ãód‚4^ n´ß[ Ni°ÐakmÆ¿>åÝiSÇ{÷Î>9UúABË£lóàu±¡Ü“GÎ:£Ü")d±¬½vÉÍõ2éÅ\ «Ü<‘ª*­¸Kk}tÑÜß<cÁÅ Uµ«¬×1­Ó&ªÍÎؽiãL.“)×ö—­)TÈC ~8ø KúÅšàlA÷Ê肃§¶: 릪èú€Côª\ã»vŸµ£Õ+¯5·åW]T ›¦ù7È­W$T…ÇåªRkôÕn
+4‡é/ ˆ T  §Q%G~i —ݼº»^P¨«¶tQŠ/ºb.¢V-èN&Éd4¦áä*™ þ.viA㑪ŸæW4¤œŒ yʈ«ÀX}²nçC$f
+9hiâðH ³Nc5¥ÚA‹½š™Ì»Çx‚£s‚’I¾€.¾*Uœ1³½W˜ÓÞŸuöOŸÂÝI‡®Úð‘”Yþ¤=€yä+k2mR.ñXy°‹Úd( ÊQè £%•»Rg§½¤Y-›Y4ø
+endobj
+1234 0 obj<</Type/Page/Parent 1119 0 R/Contents 1235 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1235 0 obj<</Filter/FlateDecode/Length 1675 >>stream
+xWkoÛFüî_±(ÆlZ[²ý¡€_iÝÆ–kÑ0
+¨NäѼ˜ä1w¤ö×wöŽ’)ÆE‹"H"QäíîÌììòëÎø3¤éˆÆŠòA0 ÉtŒéðxŠÏ#ü5’’ópçàã! ‡&4£Á&ÇGÁÑä˜Â˜ðÜ`@a´»J%îW}Žµ´Ÿ©2¢°‰4t@u‹JRit¢2i)ÒÆȨʚ?ƒáBÃ)¿ßž¿?>
+ŽÇ#œ¿{9»9»¾ý|1» ïgŸ‚ê[E§ô¨ŠX¯,݆t©s¡
+ºÐEetF?ò4ùñ¹È—Â9Ú®at |Œ;m­Zf ÍêŠ3éÿ%2ÿäºzœ;œƒÉŸ¦Ê’(KYÄê­„%mÔ“*D†ƒD]¥Úà eC¿ê´ _(”¦´
+t0K(Ó?ù
+õ6Èd¸Z¶¹mÉ›©ãÒÈ'n¦¦Ó.!"l.3AÐ4…>åÞgÖ{‰¥ÐŽ® £*X¼úË«I`&÷Ÿ™#F•¥"œµØåjä×’!
+ êÙ|‚ÁØ‹7…Èñ¥L‹X,Ág¦–Ö٢ĹWɳ ÃZ]£ETíñOÿ‚1ô¨ömX2ÓUê­c
+€ÔNZ±~ ”N{? ÙÍ„€‡ƒ#-ðµk@ºúeïj¬m½û“cÐ;ÊkÛû¾¿mÊðô%Šyª1ëa
+ßeä>·v3œàMìxŒ×­AptâÞ: Äó3ì&ú `ãˆjž!›Íï'þ‘ýéàäÿ¼>ù’Ó8œS¼ãáå.Þ=ð¥«pç÷¿ w´Žendstream
+endobj
+1236 0 obj<</Type/Page/Parent 1119 0 R/Contents 1237 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1237 0 obj<</Filter/FlateDecode/Length 914 >>stream
xmUÛnÚ@|ç+ÎS›HÅ\B€ô\*Ej m\U•"UëõÛÚ^wwÊßwÎÚâTIL°÷\fÎœñŸÞˆ†øÑlLS’yo ir1¦4™ÏðÿVѺw÷Ÿ&4Q¼FÈt>£8%)–gw/Êîé».R³s´ŒÉíW9=ŸíŒýí¼ðÚ$íT–ñ§S!Ïç´Ó¸±/Š´wdvêm´óvæ{
çÝyü«7¤þè"£þ™ß
O¥°^K]
@@ -2922,1351 +2475,1276 @@ O¥°^K]
oMSCP*¼H„SbýVíÉm0"Fš<G›}<«.x–Z®âNYîRˆHU©p)<­+Àh;?1kN£-ûÀ¸‘ïû‘‡4)•YÝ03⢦ÖxMb¼Uô lsjGRd™J95=-ÀòíBJå=ˆBl¿¼\ ¡•CàÚXB
þb;ØD…¬}3²ôú)àéÂ+Û§ÒšP¸þ|¦#‘7¤
Wå–õ
-­:Ouû¹¶¹©Ã#óÒÀˆ(Þbîk!kTµ WJ*%…ñ”(RÂél_ë°t^f*gi3R«Ê¬•ÖÕë£Ø–$FÉZßXS•îÃa›¯.±
-endobj
-1486 0 obj<</Type/Page/Parent 1367 0 R/Contents 1487 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 665 0 R>>endobj
-1487 0 obj<</Filter/FlateDecode/Length 1504 >>stream
-xW]oÚJ}çWŒÔ—TR©ªòÑÜö¡InAÊ•’<,ö{c{ï:”Ïì®Á8éUUµª÷kfÎœ93¼tÔÇŸM†t2¦8ëô£>Vvÿüü«38™F#:L£>e4FÓð•ÒŒÏÓéx i4àÿCü-%-ÝÆàlßÛ˜ðHëÂżs|}FÃ>Í—ði<™Ò<q®`%>º\‹ÂÊ’&}Ó²šÎcK  ?W]éL¨üãüßNŸzÃn]êÜ–:MqOå8yW•2ÝÒLd A»Í¤q•]L¼ ½“âÂ3“hÑ])KùR)£¬¤ŸR$*_±±ãë áÆp‚€qãB.5`ØêŠbø òJw‡=±ke(öu©H¥0’2ñ,ÉÀCl ëî
-|Ä:Ã[V,RIe×üàR­ªöI„p'ÞSÙÝÕ%#“H—j!oRú¸{Øí}»½ŸßFÞýÀn“h9XW¥®òä·aÞ³£E÷˜–_è{ØÊD¼VyˆŠs$ÈŸÈ͉IõJç
-¯%^+Ý“l?™t'
-a l$»²Û§„9 Ë#šÃ•×ݱ´FEª¤ñ,
-`e°„źز߼Ԉ²|Çä°OkÔ2 ½ÈW
-EÈá4òùÛ}µ”4«®Q8ëéÛ ïؒò*4)¾å`[ªàj­‚ÐÒX@€=‘瘥38ÎÎå¨
-ñ*TÊ2Ñ•×IF¡¯U¨Ð¼†Õ!\Î +´1L›†²Ô
-â’Ûü]B=rkº¨Ç8­êþÕ(¹Z'‡}  ù?wÌd jå/n¶¦Ê ?ìp°(À&„„©|qŽóni'òu“¯º-DŒF
-Qâ6Ê =?ý°JõB¤O=eäØC©˜lqïFgÆHû‰_=¾îÓY݃G^-XÙ¹ôÙûV›ïcø€š„BQ~¦­ÜQäð„ã¢Á+áÄaÇwý~Æ­G¤¤
-¶¾5 ¼æ!iŽkµž•r¥œ°2D7Ò^|¿‘Ï<3³…–»úa{ˆùÊý÷› /á v °HG©EuA“õʘjô)
-1íÞå¯vÁGË`•+Ì6;Ç\÷ N,Þu¿íÎñ¬@ ¯lhó\ö¥tÎ&5(-{‡¼F‡*&a–d;
-HÀ4åBJt˜)ò­_Ô ‘ÅÌ‚9h¯º¨Å.-€ñCÅ¥6zi[Ö¯¼)ž9˜L~0q“3ünjG(¼à`(耵áñ©æ·?¤‰;;¾žî¸/ÿðçA£[óXò'? F“Q4Oñ›¢q:d¾Î;wþ™êB‘endstream
-endobj
-1488 0 obj<</Type/Page/Parent 1367 0 R/Contents 1489 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1489 0 obj<</Filter/FlateDecode/Length 1688 >>stream
-xWËnÛH¼û+ØCÀ¢õ–œKàGŒø°NÖ"XÀ—9²“3
-gdEûõ[5CÊ4íd‹Àˆ$Îô£ºººùýh }üÈl(£©¤åQ?éËdÞO†2žÏðyˆ¿JË*<ŸN’ñkF“ñËç‹£“«SŒe±‚“é2ƒ~_éÛY2J‰|²;ɬv¢ä«­œW>·FV¹É$÷ÏJ•I­ñ•-
-]}x·øÃc ¢áÞpÃoÏäf!»– Üòkݸ=ûýü ?(/;e`XIaSUÈÖéJ¼•¥µÅãóTyÉZ9þ"y2Dï}é FH^Ÿâ’•­$xIäÚÇœü:w²ÜãKnîáñFûóëÏ·bT©åûVWûp‹Öï+»ÝÄÁÈoƒ”v:î”sÛ`…<´J×bW!ËŸsƒ'¹—{ô–*}UeËð˜¾r>eÞ/ °Seð¿ÛÂÞ[Óñ\iØpÞ%²°b¬»ÑFœN·Uî÷²¶Ì/­_í:Ð83tºÐ)½{»ø|ùù}(=â³Ë I×Öis÷®ã÷•`[U’ˆLT‰œ­<KÉÓf;X΢'–û“´ÒK­
-‡xX&֤㛑o
-%<оy¡›{½º?ÂÞš®KÂ
-J 3Þ¦d\+œ`íµGàÈjË órSè”ÕY0Ö/F¼Ðª$§X<Ö–·&C(TDUm,ÅJ§Æ9Pݲwj A …atü>¹[£™ÉùV²\@:œFH‰æ5)Tn ¯¨ê¨µ’s°~G°Bðä/MuAá‚âWZ9ÄOûÏ"Ž÷¢zTy¡–yýT®:ÖL‰’á© ¢R¸,°xö{@´‹C´(9š Zñ˜§:
-"
-%PvM3ÂGÇ+;9ðlg~ųI3ø
-2 ²f«2ûÅåðÆ* U’‰ ÜÈÑ@Ø«"‡ªwð½±;•©}‚Vj°ÿ2D0;…jWŠ‰Ï–‰Ü’Nû @M´žwü&( (y$‘±Õ¨|‡';»-20Þ P;„}'D?0Ùc
-‚û&ëø±¨k•g:˜iåú#t$ÍÐ3­/7M¶°à¦Ç€‡t0ÀÖýgñs<Ù¹óÌœÖXô
-eri•oP?:Œ<Í=‘lÛÞ—°ñ}‰Š·óXÄãL'ò®»ãí©…Ãöó*F ¯`ÔΓÁ©ôŠ\冄-6ˆÚF+‹ý‡o` §µÒ†ElgƒSè*#Ã=¹š×
-6˜âEx> lýÎ^ùRÙo¨16ïdXOYnÞì5z³þi³ðÿï7ÝñlœÌ¦s¬©h†Éˆ>.Žþ8úÏæø endstream
-endobj
-1490 0 obj<</Type/Page/Parent 1367 0 R/Contents 1491 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1491 0 obj<</Filter/FlateDecode/Length 784 >>stream
-x•TËnÛH¼ë+ÈÁÞ`Ų,ɇ`açø¯ ØÃ"‡ÙÇ&g虡þ}ª‡”Ö–sYâkº«»ª“ŒRü2ZÎèlAy3I“”Î/2\ç«%®3üSæó4™\­'ï>§tAëP‹
-LšÒ:?ÝY÷°u¶ké=yÕlÔëûIJÓ,MV0<-l£´¡FùÀ6ÆþÞ ¶[k< zöbñîóœ²lˆ9-
-0¡búw[ÛªL=çA[C¶Œß}³IrkÊýûÕÇ ­+íü}´Á7²¦îAy«cF‚hTÃtwùõêòM–ïÓ;ƒºÓ¡Š®ÿ\ßÜ‘g÷Än„²±Ô:»©¹!5DxE0QtÃáêúï;dŠ¡RAV&P8h2Ýð!A.hÓScQ#8¬aðÉ+mXÒ`j•Cú"îÉk­O¨´.FÞX w@?";j°¡]¥óJ()êŒ~ìø@"¦ÌG-
- õ¹uºQ®§CÁ?Xœ­k¨5”ó‚²ùXγ,ÁcqºLΓ,¡/vG…¥k`¶µÎUªL¨g«¼ß!„®ù¯×M±Œï£ÏËFxæ(2{6^ýÉ®UR*K¹5wFU)‡¾[ÑÊÆøƒdoTÁ‘ƒtõX O°ï©ƒ'@–Ö#€ŒÀc¿¾äAÊÏ28P.öacÛÞwÄÞN›íoÄ¡˜Ž-‰n%÷(Æ>íÙbürèÑ£Œ043
-"µŒjàŸá?NüØé'U³ þOҚδ}ù k@°É]ßtª¥v;í^i&ͺaxïT/d=ù}VæGÌtél‘n1±cAdxÁo>vA×:`š}oòd¸Q®ÌQ[‹¹÷c?§Œo­ Iü¦ƒçº§QÌ !Tžsè­l‹·#rt-AQ–‚íê¸}M¤b®}ËG¨ƒ ã4¬Æå–-°„Wg4;Û2 Ý:{݆QÊ»+Ys‚8Ý›O—©¬áÿ?Aóå<Y.VXäð>Ÿ è§õäÛä^vôÜendstream
-endobj
-1492 0 obj<</Type/Page/Parent 1367 0 R/Contents 1493 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1493 0 obj<</Filter/FlateDecode/Length 1010 >>stream
-x•U]oÛF|ׯX •’&©/º@Ë©¤qê¨)
-(N䑼Š¼cŽ¤]ÿûÎIËr• …-È&÷vggf÷¾LB
-ðÒ*¢Ù’’jøÍ/þ‚æñ
-GøXI™{1‹c?:õ"
-9îÕ‰7›ÉùÛ ŠÚd(²\Å´I <I¦W…¨[i)ö铨v‚DC‚.ן(5•Pš*Yí¤=Ûü…4s
-Ã>1†M:ݪ!ü
-ú|}ÿÝßýöó åJ%µ†Ù¶JçÔÕÔ’’ÎZ©[ÚN?˜—¸‚p{Fµ•ž(ëBЃ´2šL6
-|Jµ—åÃN
-¡s<l^v=´–ÊYšºñ‡€héÏ™J&Èüd:Ò¹w23ÈÌÿïd®ôúóYD^´òc|ãÔ3Tf#
-IµiéÑØýi˜wµÔï×—G6!º3ìÜpÅ–óÖf‹‘µØ}ºíá³Ç¸s+¿tÊ‚ønCàŸÖr§„f¬Ç^ùKæõNÝà‘N›™²4\dÌ{ZH´¿·»…ÎcÔs/Àå0Jßê+ú}ÝËôF´ßê«
-Ý[³)LWÂøB ¸BŠ¦=ÝÍ
-Â$nº¶S&t¯´j·g§{ ì/Ž+•FhN<°_ wþDüN&‚­Æ³ÂÓ˜˜ªVH÷Öì Ù'½p˜ ì)‘¦ÊA„v¬ëTØôÈ]R?(k4;môä8ºL‹•U€œfËû÷9ïÌñ¡†C\‰§~âQ=—.G…–ÑÕ:zådŒËlÞ¯‹ØŸùtå•ý¶ûª˜·×õãÚ;Œ#e
-ÉÔÌÜ(ç°e=eóØ?­oï_óu™ñµÁjÙNC­1W%ö Ÿ³:2•NÊ.•ç}€_pdËšÍá–0Âٟ΀çoºo˜¤ïR™!”n.?_ÿùîþÍ‚Âiàóe6=ŠpÅE»u°¨ZÜl²Ñß;‘^"OUêG5'*ÈFï/–&í4(SQûôÞ˜=+0ôX,#C=·#ÔTÓa#OÎ7™úhwć«u¾ôc^zéÿ¹œç«¹¿ZƸáqn±à²×›É¯“
-endobj
-1494 0 obj<</Type/Page/Parent 1367 0 R/Contents 1495 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1495 0 obj<</Filter/FlateDecode/Length 1424 >>stream
-xV]o7|÷¯Xè¥v`>¬¯(P%VÐ µãJ
-Š îÝ‘’gU(úß;KžlGrÚÆàó¹»³3³ûõ¤G]üôhܧ‹eåI7éÒ°?N4˜Œñ{ÿ­¤ûð¢ßëáñ…½~?¾x³<é¼P¯GË{MÆ´Ì º]Zf§ËµÔ”™²R…$¡sRÚyQ´e*H8ª]-Š„>›šÊÚy<ãCO…xðkdeŠÂl•^Ñ™Ê+£n!W¦IfôýåÙò RèÒë˜A»?@]Ëü”P’(Jú‘>ü4O>Ìæofó‹d>›þr͇ºÔîu“IüV䎜´ÒâÀÎÔ6ÙH›Jk\ÿ|tÂɬ¶ÊïðýôjqôZêÌî*O•pnk,®Ç½ÒÅlŸ
-¿6õjMÈ{kôžO½£µ°e$Á}¨n-$-9YÝ0"¤‘¦(RÐǺgê¤"Ûðƒ6¶Å#Àh_Ó®ß9Z™JjïP>É?«X@`Z‰Ô º•_keQÆžYÿ
-g¢IýMRAʬÜ“É]Ý,¨0f€XœÌ3 › ò¢).=_°ø
- Uû5*Ý_Ü\ZŠÊ±LBÞR!€eã5Ò§Ê8
-^‚PÐÝ©’IxZçÃÛ-BièE)”>ˆ-¼ÙZæwgÉ¡EìW¿´ôð³—"FG‡èš&|Ñdà1ób+Ð-C ¤hqÐ_,Z­ÖžûŒ÷ð?à”Äù;ðÐ#€¨˜H߇‡*S8­Ÿ¡‰ž•Ccù? ›up´à^ü¤-L‘JkmEßàÄ9!¤úÔ ½X;b±Ññ÷[¡CyûiªW•±ø[Ñàø¦˜
-·¾¤` —¼ˆ•¼„azc^Ô:o}Û l‡9DÏO¢òlic‘Ù`ãÑFóÛk†`.óŸÑ ·ËJ‡éÏK^8Õ©íìùÓI•>Ç }Z
-à G†Â­<QQ
-bûAñh¯¸A€nK º+Š»³XȾþöóJZXÏeÃ¥7û(/£
-endobj
-1496 0 obj<</Type/Page/Parent 1367 0 R/Contents 1497 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1497 0 obj<</Filter/FlateDecode/Length 741 >>stream
-xTMo›@½ûWÌ­Nþ|Š’8‘zHÚÊ®ªJ‘¬õ2˜ °Kw—¸þ÷]Lj;9Ô–³óñæ½™ù=ADß$c˜ÄÀëAFǺNÓ„®cúi„ÜÌ’it0ÏÃéG“y¦ç·«ÁÕÃF#Xå.mœ&°Ê€RG¬øpÉê ƒº56HÙ¹’¹Ø¶3xj¬Õ+B÷.äŒø|LfÞ°nDåÍjV’Q…L«*ÒXº;ËÜ¢[àÅêeDŒ&á˜ÒKÔÔÊ@%6Æ,e¨é™8À,t~WsèÂL¦T=…HÃ8„î½j5Ô¯”Ë m›Î«/šÒŽ¢’|¾@ø)d¦vÆŽ^ ”¬ÞwN³SCh¡5Ÿá™>]xºð4þ0„_ªS¨¶Ê‰•Ún‰!a'loµºªµÎûˆ
-‰˜ ¹« ”jG
-^¢5ï°-Dæ‚-ÕÃV+/˵kX(4 ΡŒÄ'QQrÕaÜ7*‡Åý2¸»½ 3¸î2öQeÿJ:…\yž
-So:ÂOQž*äåìÚò *©ãè!^‰SzðzùTÍ{¯Ö¸¼o)}—õZøÆ:á }diHù–U—°i-˜¹È A” +”‡Á ¥È¯ ¬u
-‘ÌYœõî /iOÊâ™XG4¸†ò3É &·$BV I*kf©Ö¾A€Y ©#ñ•ädä§mq×ÏÏ¥ãŠkd=x-¶…=Ó#pyãn¨vã2êù‰êF¬Ï"¬ûZÃu›5žÑu•±&\[Þ¸†'„† sÖVÖÀâiÙMdlO£‘‹?~2œþGô;UÐ0^šCC¥‡IÅ´Ó L¢¨Ã¸¼y¼½oZ½ ·Ô¹¼­‰uϹ ôAÍÿcQLiÏ&qJ›™Ä,q!îWƒïƒ¿K »Vendstream
-endobj
-1498 0 obj<</Type/Page/Parent 1367 0 R/Contents 1499 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 672 0 R>>endobj
-1499 0 obj<</Filter/FlateDecode/Length 1424 >>stream
-x•VaoÛ6ýî_qÀ0@bÅ’Û)ºIÓ)dk¼}™÷’hK$z$Çÿ~ïHɱ•X‘")EòîÝ»wwüwÑ?ÍbO)­£p„/û_ß~D“i8£I4 cª(Žâð¢]•ô0ˆgópLÑhN°;>aׯx÷bF4…sìE“ ì¹o,±7wyïj18ûrAñˆ+À›Îæ´È*|IƒO¹ØX©é"¤Q%‚„!Aw‹ eªEM•¬©Oß™hæÍ Ç„°È‚‹0
-é«*ê¢^“¨q“®ýÅmaóÖfÆÞÀ„¢¨5ÏÂ)¸4¦©$íTC¹x’pîqÄá3©Ÿ€ÍY(i¯nî¨8¯VäM‚qg2xøüí¯èØM
-m®U³Îàv@÷jJ üm´²*Uå)Ÿ®}1xQÖrKË
-­mGï‹ò¬1ú¬T%gð›ˆ3.d”m¿©Ç›z?àFá³#Çq5Z*õh¨,Y…iÝv¥ ê<gïo/oîèîòöó¯ÞÝ~¶åÐ] >zÎü<½A¯n€÷w1CêýQ¾: ÖW«SÛ"³Æ×O+é×ÉD¾P‚Š³ÃÕ)ŸEµA
-E¢žä )´Ï‰ŸÕïç{€{¼v@Ûù1{šœr¸['*ÕrSŠÉoß‹ë+HuÁ­ãú¥G»kœ³¬ÏŒ‘¨ikB›%Ç„oÖ—W.ª×5¼V0lÔ¶†ÝdG<Ý
-ü¼öÒ}qÔ÷þæ/'ñ¬q¶xÒOf“p6ûwÖùœM~^ þü†@Ý„endstream
-endobj
-1500 0 obj<</Type/Page/Parent 1367 0 R/Contents 1501 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 681 0 R>>endobj
-1501 0 obj<</Filter/FlateDecode/Length 1678 >>stream
-x­W]oÛ6}ϯ¸ËKÝ!Qý)ÛŠ!ëP`I»ÅE0,{ %Úf#‰*IÅñ¿ß¹¤äÈrVìahë”&y?Î=÷ðæÛÉ€úø3 éF1%ùI?êã›ýÇ¿žLÇÑâYõ)§Á¸¿_etwÒ^cw2ŠÆõY¿;FSŠûq4ã»óY4¯W~·µÎiw1îNâ)üán<&õÊßm­qw0ÙŸåÝö»Cö,ñ.²£Ñh„ÏñlŠÏ!þI+¿1NlgcØ!ŠÑaLÃÂûzYòÞüpo¿ÄÞt^î].NÞ}Ó`@‹JϦ´H=ò}Z$½[ùì(Ùˆb-Ém$½]|Åùa}¾G[m×FW%½[©eª¤
-í¯u¦—"û›¬LœÒøR#W‘þ.Möþχ1J·H{-ÃtýéæÐxŸöç„…e 9¾Bä’ôÊÿ?Õ¹€ÿ­$\¿jU¨b±¥Öý?uEye‰ÌjÚˆ§g) ,9iºË"1»ÒQ)¬EŒ©=Œ¬‡ g¾§=°½<:ˆÐpVÚÐNW†*+ ÒÐ$*äR8•'ëx\zà‚]ÎóvAŸ¯¯ºÉ|P…Ȳ݉4¥‡ìæ:U«ÝÃ[ÝDš°yBÿsýŽÌs2ÿ¸¼¾Ô?‡‡ðµ
-³ØH*Çù–FåÂìH)-EòÂÕåMtáŒÎ2†îNäKA[•e$œ“9ê¼ø„Hs1
-¢]åv?„
-Ìi€G‚_‹s¼E^­çÑ°é6~Œßa¯xàNGþ¸Ñ§QÌŠv#Š•R—™ ú+ì#JfäZ˜”£ðqBn:ŸÉä°TBbü Õ`¯*ùBÔÇî˜ €ðã‹ê‰%\Ëx#PÎ|‰:Öʯ›u±t) !Âm®ž5꺕W6^›Gmv Fð¥GÑM+àŒ–^J·•2<•‰2I•£vEÞ0ó
-fœ*¬Î$†š2« VÔw^•¥QD÷›]˜‘g:¤S »ƒªÑûºÑòÖL°-‰ºªŒg~Aëì/ƒ©µ¸â5(Þ8
-ÚB 2w–¾êùeÜ`PkN
-endobj
-1502 0 obj<</Type/Page/Parent 1367 0 R/Contents 1503 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 688 0 R>>endobj
-1503 0 obj<</Filter/FlateDecode/Length 1282 >>stream
-x}VMoã6½ûWÌÑù3þ(ÐC²Þšlºñ"=ôBK´ÅDjIÊNúëû†”mEÅ’P$gÞ¼y3ý1ð3¦Å„¦sJËÞ(áËù××ß{‹U2¦ùlžÌ¨¤ñd„¿qUÐs¯½Æîl‘\·v§óy2¢éd•Ìqw6™ÂR\ñ]x¡é8ÚðŸà­Ö÷¦É¢µ×Z–´'«Ö^k 4ãü^ŒÞnzû>Óf‡ çËm²ëˆ6i_Ô>—Ú«Txe4Yù£–Γ7$èEéÌ=nÈI{–”&''JIGñNµŽ­®ÉØó¥Õ²¹ôËæ{oDWãi2çþÑÔE–4'Ì>>R8 ï;8ovï[
-ÂÓÚ*ÿÎ8}Þ@èd˜QÿìNâ
-ƒ®rq@&8/K©!BÝYSB­ÝËOëOAººãS¤©©!¨˜&±®
-î`Å;€|Άw×M•÷/Bø­U„—6Ð'Èž7¬gB–@+*ÖyŽÂFÀ¯RV
-endobj
-1504 0 obj<</Type/Page/Parent 1367 0 R/Contents 1505 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1505 0 obj<</Filter/FlateDecode/Length 116 >>stream
+­:Ouû¹¶¹©Ã#óÒÀˆ(Þbîk!kTµ WJ*%…ñ”(RÂél_ë°t^f*gi3R«Ê¬•ÖÕë£Ø–$FÉZßXS•îÃa›¯.±
+endobj
+1238 0 obj<</Type/Page/Parent 1119 0 R/Contents 1239 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 578 0 R>>endobj
+1239 0 obj<</Filter/FlateDecode/Length 1515 >>stream
+x•WÛnÛ8}÷W З°ß;Š"išmÚfkY Í-Ñ67’¨T\ÿ}Ï”íÈ ‹¢i%‘s9sæÌä±3 >þ h2¤Ñ9¥E§Ÿôñf÷ãÇ_ÁhšŒél2MúTÐp|–LãSN3>OgçÓdHãéÿ⯑´Ä‡é†šfÅVq}\Ä££³dÔœ}æ4ž\Œ’ɱÙ>!”ÆÆÎÝÕ¼szsAÃ>Í—Èè|2¥yæÁ›ôä³ÞÓt™:–]‰ô¡®èZB•ôQ—Îè<—†ð$ÞÎÿíô©7ÃÄÉmmd¾¥™(b0‹Wù(ûL‚ßÞh (øš‘F>ÖÊ*'釙*Wáð˜ƒxx8IÎùð•\j€¶Õ5¥E•µ0þäÖÊRº•“¦KU.…•TˆIÁá³pþ®ÀCª Ørb‘KÚ(·fƒKµª üï2ŒB!©Ûë J&mjÔBfÁ¥ )÷ðµ÷ùûÝü{òR®"set]f¯fxÇ1" q ùú?"]«2&ć9 TM”vƒÒäz¥KàòXKë,-.h£ÍƒuÂ)]ÚÃÚ5Þ©2ÓKßæÑqBwkYÊ'ØTÛ`–¯²:8~··ÜÄ@sÿ‚A-eŠ ø' º4.9%Ê
+/o=]BYÛI‚áGüÚˆ-© Q˜â[N¶¥
+¾×jÄM´7ÐuNY5cà\‰®OBå,3 ]‰dZù:…-X= àÌ°J[Ë´9P–`„wx’±¤=z]› 4hùCŸKõbm,y±‹Á·É>S%zŠf¡‚ÀÃ8¬ôr©R[̉ªÂT€È‡çAƒ„‚§CZC\J·“¿PÒÙ.ú1Íëft´\£“Ã>7CþÏ-3¨:ù›G¬­ è=
+°‰!c*_]â¼µùf4ƒWÝ"V£•0¸¶ðBϦ®r½ù}ÏB9÷Ø*¶X$<ö@c†Ñ»±Ò½c«§7}ºàñ;HÆ£!ë þ…f°¾ó«è}ˆ° K ‰ÄÖ|O[¹#ÊóÜ݉ӛfä÷§ïFg<‰DNùðLÀ”¶”+ŒvA?×HÛÞ{|ñTJç-ß“]3ïDn5„b˸";<kŒx?óñˆ%–¸ÀŒTî&£8þ¡wëCÍf”æ×ÔÇdc]7Šõ-o©FÐÍž€šg:E¹K÷ú†àÇÿc-rµä¹ôÂÐô²äB|µj€ci»Ò'øÞ"ïÖªp,Ñ»äcá<ëe3r¥¼Ä2:ߤ»úò}F¡úÌÑPþê›AÐå+w_¾Í€ºA0ŒÕ)p^ F‹ :ƒq42טXsÚk½/]‚o“–úTØrvù9ƒX¼D°íÏñÖ@o‹ qø,
++Š_Ÿ÷¡ŠÄæ‹ÆÖŽX[^¤^ð D™xF±³Ó›é~ëž^$“Ñ·ôÿú­€þû7ñdœLÎñk?²çOóÎß?­3I
+endobj
+1240 0 obj<</Type/Page/Parent 1119 0 R/Contents 1241 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1241 0 obj<</Filter/FlateDecode/Length 1672 >>stream
+xWËnÛH¼û+ØCÀ¢%Y/çø#>ÄÉÂZ ø2"GcrFጬ(_¿U3¤LÓvv±ŒHâL?ª««›?ÒÇ¿L‡r<‘´<è'}ÏúÉPF³)>ñWiY†£“q2zéÁñxôüÆÙüàèòD#™/ád2ÇLà ß—yúö“ÝJfµ%ßluï¼ò¹5²ÌM&¹wxVªÜHj¯lQèêûùwXÉ`-ö†SX|{*×sÙ¶Là–_éÆÀÍéç³Sü ¼l•a%…MU!§+ñVZÔŒÏSåu&+åø{ˆäѽ÷¥78F¦ðú—,m%ÁK"W>æäW¹“Å_rs×ÚŸ]}¹£J-?6ºÚ…[´~WÙÍ:>Fþ¤´Óq§œÛ”
+* gè4ãE”žóßJO2 5ÍA|TÉQ»†Éð-“1гMmB~ÐÐuAyá1ðÄÛÔ‚€+…ì©öˆ
+4‡“G4¯¨B¡h ðwI%G™•œð[‚‚ÿ k*
+jT¾ÒÊ!~Úq¼‡ÕƒÊ µÈ häqÙ‰°&I”¹OMFp”beœ߃ì¡S¢EÉÑWЇ‡<ÕQQ°({²mú>:^ÙÄb[ó:Å✓«Æ“ªã
+å1w5ObÝÙïæõxâX«ÓÍÕEKˆ‹ã̸ F,#
+’*F©2»ÅåÈÆ K’± ÒÈÑ@Ç«"‡ˆw ½¶[•©]lÿVj°ÿ<D:…BW˜‰Ï‰ÜI» ; ù[Ï;þö“5‹” BÈŒØeÔ»ý“­ÝÈnP(r¾¢Hì1ô@{“uüXÔµÊ3Ì´ò
+­š‘fè™ÀÖ—›þš[ÐÒcžC5`ëþ“ø9€ìÏÜyfNk,z
+endobj
+1242 0 obj<</Type/Page/Parent 1119 0 R/Contents 1243 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1243 0 obj<</Filter/FlateDecode/Length 822 >>stream
+x•TMoÛF½ëW ÐƒÝ bDJ"•CQØù@}hêÔz(zX‘Cqr—Þ]Yå¿ï›%¥ØJ.…Y¤fÞ¼÷æãq–Ò)-s*»Ù"ÙlèÛ‡ÛãaAyž%­6¾/×É’SزÏSìz³IÒ)6Cü)”VË™#Èù‡ÛíìÍǽ¥mMi²Zf”£Ê:ßжŠØ Ú–×Gë¾î=ôô yÕíÔÏÛ/³ÍS0Eàue;¥ uÊvˆ1öÇ­Ý[ã0°—ˆ7W”¦R{>ŸgE$Là…†éï}kwªýgî¹ Ú²u|ï»]RZSŸžoß¿KhÛh_ÙǼ#kÚìu¤&ˆFuL7¿ßÞü”–'žË$!Gš˜ú×ݧòìžØM°@6–zgw-w¤Æ
+/°!Š>q¸½ûãF¿b@hT;V&P8›3Ýñ™ W´¨³h’ Ö0ô”6,4˜zå@_\¾úÞô+ª­+Ÿ‰7VÊÑ/ÄNìèØè²IŠF?ø,"ÒsÇÑ‹J
+Dîî”èýØùwÖgÛn}}KéJúŠ!Y¢µâíoöH•¥;€õ­.ULhd¯¼?[·üë˱@zVHòŸSÎË x–(þz6^ý¯î5Ò#Kp· F;©„±{1ÉÆúpüîTÅ‘¼ÌõÔ™ˆè
+!­,kàÃ7MüxÐOªeükÒºƒ˜÷ öÁÖ€Á`Sº¡Q+6JïŽÚ}ç™L鎑}TƒˆõŒäþY›Ï±Ìµ³]DºÇªN ‘­…:<Áøøã!èV¬±L™Œÿ¨Tæbž%ÜûiƒSÆ÷Ö…$¾ÓÁs[KÒ¨(rB U–Üz%gâÕ„SkH”k` wÜ©'2‘ëÐóu6tZƒÍtÞÒ§{³¤,ÇÅÌ×2ÑqûèÞÙ/8lØ£òÐÁg%7NP秔y±Àuþ?ë³*VI ŽÓ]]¯W‚öa;û<û5 !endstream
+endobj
+1244 0 obj<</Type/Page/Parent 1119 0 R/Contents 1245 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1245 0 obj<</Filter/FlateDecode/Length 991 >>stream
+x¥U]oÛF|ׯX ±Šæ—>\ Ž#F’&uˆ GñH^EÞ)GÒªÿ}g¤èØr_
+Û’%îíÎÎÌî}Ÿäã' UHÑ’¶õÌ÷|Z„wIñz…ÿCüYI¹{±·<õ ŒÖ^üòÁzM¾7¾ØPË_yë14ö}ö· 
+nút›L­dòAVf_£ªTj…U@x&Ñ°´Ä}‰ª¢Üššø°H̓¤Æt–;A¥®Á—´Û(äý¹G ¢J©êLTÜÎýQÏùTà T›–Æî^ö•>ï¥þ¸¹úB'!º3lŠ`ÅÂÎÖ¢ÅÈÚmœ•älV~ï”çÒ†@=mdª„~鑬 J?ë!b’ 9á´¹©*sà"cÞÓ¢óMsô2xbÎ=
+endobj
+1246 0 obj<</Type/Page/Parent 1119 0 R/Contents 1247 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1247 0 obj<</Filter/FlateDecode/Length 1437 >>stream
+x…VÛn7}÷W ôR;ˆV÷‹ ¨;h:qeEP÷Ú¥$F»ä†äZŠþ{Ï+Y–•Æ„Ý%9—3gÎðÛY‡ÚøïШK½!¥ÅY;ééÇ.ñҦᰛŒ¨?á¹7Hzd%-°·MƒË!^ãJ§‡M»ØMÚõOmeÐë'—õÞ.ÎÖ[O9ìw»I·ÞÚ&ÝÞÅ`»6Ûí ’áK³H«;ÚÙû{3;k½kÓ%ÍÔIú½. ‘Ö`8¦YBnÓ,='8yA?Ó—OŸ§É‡›é››é§ûdz3ùíöböõ¬MÍ`Â!ìu2­¬ò[lŸ\ß¿X–:µÛÒS)œÛ›9ìÛJÇûZïúÔép,ÍL1sP°û^S*œ$'Š¹À£þÉÓB-+Àf*O[SY0æ¤}”–*§ô2~±kQÈ×ø,ɯdt6¨|Æ9™Ò+£Ié¸
+µ%9nÎPäл†*(T*K/³]u/Á<ó᥻mˆÛ‡ë·¡jŒü0Öêã§ÙÍ1þ±­‹
+Î%Ue)- Äñî‘;Ca§ÔÏ‚b kP ˆÃõÇ{ÊYƒ óþ­šYé™Ð+6ÄE}v°´%RS™î ×F Q:n˜‚Ëá³#-ý\GlŽ]ñ7 @çJ&ámeœ«DÏ!ôBDiâÊÖ
+ïEº’ÙÃŒ(' !Vƒ£2ßžô¸0yn6h¿ºßc4gˆI
+§˜jª!eáNô+NZ-WžëŒu€¶„Æâøxt&€(™$œåiˆqøU…Ó‡(AK¢zeAÚŽÜòÚtŒAÚܤèYi­±¨ 8„P¿‚Ú! “¹ÃKïßÒÛ)6¨^–Æâ›f ŽRÇ–b
+Ã%Lz¤S+³°s…$ç®Ý9§
+endobj
+1248 0 obj<</Type/Page/Parent 1119 0 R/Contents 1249 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1249 0 obj<</Filter/FlateDecode/Length 730 >>stream
+x}TYoÚ@~çWÌ[IU;æ²á)JB"õ!i+¨ªJ‘¢e=Æì]wPþ}g×v$*ðß1³#Hè=‚l “x=HâÒtB×é<£ë˜>¡fÙ4N?z0],âéG&‹,žŸ?¸Y.ï§0ÁºðmÓyë¨u’ÀšW¬Þ0¨±°AêΕ,ÄÖiÌái¨±V¯í1g¼Ä§ `2u#ªV³UÈ$°ª!¥»,,j°%^¬_QÑh©ýp‡zƒZ¨ÄÆ„‚%²5}'º˜Ç>ïò~#]@Dø£É”ØS‰5äƒr êWjcк¦MèùRÇqF*Rø7¿„ÌÕÞÀØ“ç•@iÁêC›4ëD‚D Î |†'zµåé^¶ÓúÃ~+¦T®Ê½~•ÚnI!a/l o4ý/å¬Ï>RA"æBnÁ*ØIµ'€ 3f¯tÃׂt
+&*ã%” <Gº«©`ß¡5ï°-Eî‚-ña]*8Ò©vK…Ä9´’‘ïä'J®ZŒ‡A°¼[E·7·ÑÃrWmÇÞbvlŽgT0õ¦Õúà©9ÁÉv;?ɯ IJrÒ—`_p® "ﳜñ}ßZ†Ùêmãt¤ÿOòø(ÒéŽU_`ã,˜¹(A‰í@5V¨
+ø1
+KÈK&·$}^ IÞjf‰f?À,К‘åJr
+
+ëµ¼íæ‹—‰kdn-¶¥=µ0 ð}Óv‹öãä4òQF¬Ï*<÷4ãg—7AÌç*gMülyãÇœ¸ 9ÌUÖÀòqÕîa ì@ Qˆ¿a¼õGÊ{1hß™nŒæÝþR: ç˜$I‹quýps ßµzAni^¹«Ið ·/õ Q–,þ2LéLÍÒ9Ât"Ì2Ÿ}·üü³·«endstream
+endobj
+1250 0 obj<</Type/Page/Parent 1119 0 R/Contents 1251 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F3 6 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 585 0 R>>endobj
+1251 0 obj<</Filter/FlateDecode/Length 1413 >>stream
+x•V]OëF}ϯ©ªd$bâ$$áê¶_·¢ÐÞ¤}iú°¶7±Áö¦»kBþ}ÏìÚ!1 µâ
+®½ž™3gÎÌì?½ˆø‰h:¤Ñ„’²7x³ÿõý—^4ž„SGÓpH% £axÑ<4ï §³pDÑ`Žq::àÔ?ñéÅ4Œh2g8‹Æ8s|tðˆ³É¨ýÏ®½³o4Ðbx“錩C…7I0e,Hô°SªJ‘WTÊ2–údñäl£©·íÆÀ½Hƒ_U^åÕšD#ºñ6ÛÜfäÝ Ã¡·S5¶Ãi8aÛKcêRÒNÕ”‰‰¸­Í+©_¤&ç x¤½º{œS%ð½Z‘w †Ë`~ûýÏè8L
+dd¶åZ|¢ªbG¥H²¼’þ˜%²Õ¹…ã$‘Æ€AFqPÁƒ óË{J…±0ryB¹iò içýðÿ¤°P¨5Ú×u ²è héqI¡wTÕ•=9»¨$ãzG¿ä…\#EE"MÛŒ99Í÷UHw+<þ™Ú¥¿ª‹NpnømÝÉ”IÌDYËÏU²×Áâ#Ó¶ƒîÙ·¶ÄÚBú…¢I iˆA«TmCš7q÷n—Á äC©´GJ© ŠTZ‘¦Û( ‘¢|…àxü¥òEjSJp˜¨ÔÑă³¢™8<ÉTmyÒ±hK´‰# Õ®ÑWm1”ë¡y¬ÄXB‹2CYY&ÀáB:J3µ‘`šŒ¡¿ q!É(8- ¥Q¬E•d#®Šâ}†Î«k^Z+|h3­êuv·ºWSLào£•U‰*NùëÊ7ƒe%·´ ¬,O:©µ]ôέï< òû¡Ù yÅZÄ,B~Hy4¼Ò\Ë3`ÇoýÔFa÷µvÈ[U)3†‘¦¡®>UJ—m;ú\”gµÑg…Â*9CÜXœq“ ¢ìûC=ÞUû7_9ŒëÑB©gCEþÌŠÈM¶mýUå=ûxy÷@—÷·?ûpû]Ø´Ck|õœÍý>}
+endobj
+1252 0 obj<</Type/Page/Parent 1119 0 R/Contents 1253 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 594 0 R>>endobj
+1253 0 obj<</Filter/FlateDecode/Length 1673 >>stream
+x­W]oÛ6}ϯ¸ËK½!Qý)ÛŠ!ëP`N»ÅE1,{ %Úf#‰*IÅñ¿ß¹¤äÈrÖ§¡­Sšäý8÷ÜÛogêãÏ€¦CÅ”ägý¨oþv6GCŠgqÔ§œãþa•ÑýY{ÝÉ(×gýîdM)îÇÑŒïÎgѼ^ùÝÖ:§a<>Þĸ;‰§ð‡»ñ<šÔ+·µÆÝÁäp–wÛkìÙo°Ä»ÈŽF£>dz)>‡øg$­ýÆ`8A°a„(Fc„9@0 ïëeÉ{óã½Ã{Óy4z¹w½<{û~Lƒ-×(A<›Ò2õÈ÷i™ôîä³£d+Š$·•ôãò+Îëó=Úió¸1º*é]ØjLõ(S…$Uøko2½Ù?deâ”Æ—¹Šôçpirð9ŒQºeÚk¦Û‹cã}:œ”%üåø
+‘KÒkÿÿTçþw’pýªU¡ŠMÄ–Z÷ÿÒå•u$2«i+žBž¥0°ä¤éf,‹ÄìKG¥°1¦ö8²2tœ]øœöÀööòä BÃ}xXkC{]ª¬4HC“¨KáT"œ¬ãpé v9Ï»%}º½é&ó^"Ëö$Ò”z°›ëT­÷?’è&Ò$€€Í¢øŸëwbž«ˆùÇõíÍ þ9<†¯U˜åVÚP9η4*fO¢Hi%’G®.o¢ gt–1t÷"_ Ú©,#áœÌQ'àÅ'D☋ðï#쫵m98nÙ‘"ÙÖC„>°¶~AàÊI¹ØÓN>pݘº‰ÀÔLpÍ…ÓÛ’{ƒt…»È½ÅnLcOäºØ¼A—W8\§ž$óB­}h>,›¯Òšlh&¨C)“>çÖe×>P´Ómh¥6Ö
+¬¢[·:½ ÝV¡<;è‚bb¤U"SÆ:p"Åè,Ó»†/u&ò$œ·eÉ% Ÿ²9¾®“%0ÕÒF´ä”‚s’
+— ­ J”ë,Ç(Y´ß—w÷”
+'V°5Åç¬Hý
+›îøl! Vl nÖu ~
+{/çÞ8§9|$¨)CÅÃkóÊ# |›T·:“öBv§\²EœÈö<ŒEtõšñBrðº@ƒR¦ÜSëíMÑPxÎÞås­u‡¶
+†#ºf±Y‹*sèÇ—Œ€çQxAέcQ·UYjsÒŠÒ]øxﱸ[þ¾xxN·º…F)3ð*ÙSCvË•@ÑÎÌŸk„ «y
+ŸªÈ!á:̦  h(°|NdéÇ4”ÜӞ߇AM+6ÒœÓÚ蜑1zׂbà ‘e&XpWû)¼…+ °nÁèÄi¼ªŸ$º$¾ÑyYáé±ç´XÜ`xY¨Äh«×Ž‚C†§
+«3‰y¦Ì*è”õíûWéËvfB¤€ãI™hì eô®îñ_‚¨5skKn*cà”ßÍûÃe4È¿Å,¤ô/c¤W/ÌÐXhS¦ñºÒçB=¿ yÀ
+ÍY›Z~á£FmÉOˆ¡¦‡GG@Ì}}Ћuˆ|³;|bäzx@„éqª½ÚkYLc¤É³UH9ÄpÁQƒŠ,þ>$FtódX¼à´s…ªù !“ƒ²V™´{´C^çv"eQ÷dU®2J†!Xg<>7QÕueñ=­2Ïn8¼ÓU–ú!à·—Í–C èÌê‘}€_ùú³ÅÓðÂ]-®¯è“Ñ_A]<lj”O€.øÞesürÚŸóÓ}ïEã7Úi<Ã3Šã“9[ùuyöÇÙ¿m$«òendstream
+endobj
+1254 0 obj<</Type/Page/Parent 1119 0 R/Contents 1255 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 601 0 R>>endobj
+1255 0 obj<</Filter/FlateDecode/Length 1279 >>stream
+x}VMoã6½ûWÌÑù3þ(ÐC²Þšlºñ"=ôBK´ÅDjEÊNúëû†”mFÅ’P$gÞ̼yý1ð3¦Å„¦sJËÞ(áËù××ß{‹U2¦ùlžÌ¨¤ñd„¿aUÐs/^cw¶H®£Ýé|žŒh:Y%sÜM¦°V|^h:v'|1,x+ZâÞ4YD{Ѳ¤å8YE{ÑhÆ3ø½½Ýô†w3|¦ÍAÏ— Úd>ÖmÒ¾h\.µS©pÊhªåFZGΠ¥3s´ô¸!+냬IiÂq²¢”tï$ltluM¦>_Z-ÛK¿l¾÷Ft5ž&xîMSdIûqÂyÀǧB
++á}'ðÍNà}
+w0­4~—(°
+²ïÖÉÒƒmœáTòj¯éÛãý_Ô¨ agÏÿ8ÓŸ†Ø ÖöFmšÊ&´É•¥Ôd’ðW„*ĶÀBS&²0U‰ Ò¶:Í¥%£rˆ JÃ{ƒŽÓmã訊‚¶|â 3¡–! g;ÖÝMÔ6EvÚ‰½ä[™}U0$<mjåÞ§Ë[
+3êŸÝ©8€AÑ};¨#C8ôõ饹Ð~aS¾‰Ô!îôð„Žä«¤\›×R
+méY”[ÔÓ³Ìvüjs jWUÂ…¼‡R¹ºW‘8Ï ›«Êþ˙ĖÝÿÝW‰LônJPdYÀÐñÝ"‚Ußµ´¦©SÙ¦Ðó*T‚ëò±•Úd‚¨»Ú”`k÷òÓú“§®îøij*”‰p¬Ë‚{XqÇ@$—³…áÝuÛåý ~‹šð"}]ê÷6ë™%P†Ž
+}ž£±ð«”€§UN½>˜J‚¾A»¨£èõ¾uëÛ¶
+ƒOl“IÙú+„uçæB ²š»ù;医
+HTZkv®ãü\\_‘T ‡Á0Z7ˆ ífvQç^
+ïE‚E-ʺy–Ö
+Ô†ùvIi`KÓÀ‡ˆ4qÆLÅþ;ž/Ñ1ºÆC`+Ô€9wÙ?SÒvvÁÜ)Íj
+‡¨=î¶Õñâ_rã{ðÚ;BÌ78ï24yë›™ ò_èñ}¼–ûgNÄA{é˜KÒk5©ŒØî4Ââ)a›4¼kÏ>߯ƒ½BA9Ì®“:ðhïEÿb} ×{n‡I—&tÝv<bG^Í‘-HU@ŠÐ!îòÍIA-ÛÜí×Ô¬`œ™Žï’ ÕžBóÁAWy°‘¨ªBaÊðÔÈdBЄWÒ}†sôM«·vŒ¦Ì™Wž>ϱ?º—(+‹l°ñavzc€qà­ÊmEútŽ0ËŽÌPÑV¨+éQe6 R¼2]ÄÇ*CÝxU4Øáw@ò׊£ÔUÍC,ÊÍMå³Â»éy¤ïæç'ÑÕéòøeóùW¾+åS(•êþGù3“6~ðÑÂ;UƒOU³¯òK½_äÁíÅ?JKúCéæíÅÔEv¢¤jEäÚøÞA ¤¯ïÐáݲ…=ž/’ÑrJÓÕÏ=<¡žonoè©6ß!Õ´nÁùÁÈ!].\-F+ÞO\Nìé 4á¼ö“Õ×k¶˜%‹ùF˜ŸØÊçMïÏÞ¿ øš¡endstream
+endobj
+1256 0 obj<</Type/Page/Parent 1119 0 R/Contents 1257 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1257 0 obj<</Filter/FlateDecode/Length 116 >>stream
x+ä2T0
endobj
-1506 0 obj<</Type/Page/Parent 1367 0 R/Contents 1507 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 733 0 R>>endobj
-1507 0 obj<</Filter/FlateDecode/Length 2875 >>stream
-xZKsÛȼëWÌ!ç`šx$~¬³®²µÊJ§*•DB"b`
-‹¡L‡×,A`3ØŒiYÅ`3-¬àƒK¢xjwNœ¢ç,Éq»Y¢Ógö¢°‚és„4
-+^Å1ò)¬·»\Zù"oÇØØeL¯+vWkäYX¯9K}éLjÈ4 †ì"¥Ïõ²‹¹5F³ÕSCÞ«€™ ËU`½l²´¾‰ÐlK—òv¦,›:°ÖriÌqÆäš^”A¸„r¤bª]1 vEׄŒÍ9¹UÌò±©„ vOYÁ`A¤²‚ÑóùÄgÅ`±`W1XÌ5cŒWñÁ~¯vùÜ€Áb¯¨f_‚(²~\.X,@¤1ZÑèH* µ0XÁ`1(_`#QXbªY1Ø$bùFYÅ`Ó;AXÁ,Á’ÁYÁH#Š©vƒÅa¡)‹©DËš³«‰W‘ÍH²æL"Ø ŠHäç+`° w °‚ÁâÔË”Ì<¯¯È
-fž#øXÅ`1bê•b°¨Xª²‚™IÖ(hîã]qË0^p‰!oÀ`3‹>°‚Á.¹¡EV0¼ÂðÂî(«˜ñ®QaƒÅ)6‘ vÁcWdƒÅ ¹
-v#ègäydƒÅ5C½R ÷+õªÏ$.¼ÜD)/9‰!ˤ`°èØ ¬`°ð½XÁˆÈgrdƒ]¦ô9°‚á3.,ÈÆÈÚJIðÓŽÖÈHCæ2[’rsNðäö—¼ÀÁ[ôA/E)#5dJ#RTXÁ`—sXÁ̯˜Â
-F0#ªY1Xtî„ w(tÔh×g)á ‚`¹”ŒG \µéIÅ`q{TQÅ`W+f8È
-†K¸7Âá‘U £¦vûpT3Ã0[ÂR1jVÌà©ì*‹cgÐÄdøDáôá.±[Ab€œ@$ÑJ7r™DÞa‚ b°p=1Š*ëXÁLqÂÙ¬`°ðI ¬`$G³z¥¬]'‚¬O†«À·ˆÐ1=áåጤb¸„¶D~GÖÔÆð‹ãjj=ÕœWHÅP‹wÁ›‘z(ª˜FyïV°ÏÃBY;/ã%e¨9ÆÍ#¯9`°x*QÖËÚ;,XlÛ&“³g²‚awÎ=XŸ
-¤ÝŽ­9…X„•ì‚âÀÂɃMTXÁt™»QXÁp
-ᎲÞ)Üì˜óßØÅ#˜fy +¬½à
-+,Þ'àTÐ,˜bV1X8«vƒÅ] šcÜñÆ€Ú¬Íd§‡Ï„;°>¼À
-à ¬wõáVðîÈöáö²1^¦ÖH }¤WŠ./pÂ
-F¸¸t¢OFYûã';‹i4@½1™œûÀ D¨v ¤b°xcCþGµŠÁ¢ùàn`3S—ƒµ7á «˜¡®'v}eñÞc'ß c Õ>þx—Puäw$ƒõ³4²¦6ÂñcC‹»×½Ld #ØÇš
-ëE—ý'¾åG(iº<„`Ê$R1X;ƒ…Œ$Í#º4*F¦W¨‰ÿò€keÒxÀ·1TÜ?h\€0‰õ ©˜ñÝ"ˆ*kV0ÜE/ þѬb°1uJ1XÜnC‹Ídƒ…õÊ;‰©´%´ †(ê/¾Q2|Îà]Ä#c-‡6Jȇ'2@N ¦†Ó&œy0ï¿UØ 2d‚$힉áãXäAð· s5åí߀qBÎîܳß#ì½›9& kÂ& \€ÔÉ×ýÀˆœb‘$.c9óžü@'ö->þñúá}!84{$\€ô“±¹
-¨ÙÖ‡¼´½v7ʈ1 éÿ9tVf6{$¹b§UdÐןþénŠæP¶|Ƚ+;ŸÔaÓÀ×·› SÈ}ÕÔ{÷¹ì'|b J˜¹”Å›•Æ­ ÌÄq4ÁIᯑT7ID™ïëGóR3ï4´Ów¨·®éƒËy_ïv—7/æ·×àÆÕOVû®|Ñ÷ø~|þhã¶eSlººyvÁ‹I¦(ÂÿHý!™bÁy‰Ñuž={^ö~½-žmÀÌù?ðhš5ÔžgG“ÛTús‚)Ç,bþšmŸ´Mƒc²p‡¼ýÆSG¾ó•€«ÑŸSgλ®)ïO¦öx„ï/;Yz›±Ý¼ýâ8®[´–Ý:(pÌÎòý3¬òG,Øé0¾(„K~üÙƒÐ{Š?ÄÎÛÉx¿|ýC÷wýÀŽo÷ãY1-÷/Î"–»/妩Ûú¡CÙCpÖ)·ÏmW\×èÊêwNq;">Uõ7 «Ídòøšïºî
-#_㪷
-endstream
-endobj
-1508 0 obj<</Type/Page/Parent 1367 0 R/Contents 1509 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 785 0 R>>endobj
-1509 0 obj<</Filter/FlateDecode/Length 2356 >>stream
-x…YÙrÛF}×WôÛÌT`ìËSJ–ÆMYŽ"Ñå¼B D!!
-ƒÍ#èP¬Õœ^JÍqì&$²
-ƒÍr<¥X…7& |/S¬Æ`“äPÖÚSÄ Íaà%&d#rlê°
-ƒ-Fäd­æ(BŽfÍ‚”æ=›%¬—c†Ï~LŸgÖ7DÁ©ØOX"A¢ØšõS[¢”O¥‚›‘Msy…±HX…¡9g£(Va8ù‡²b7Éý)‘l ‹l¸CsšÀ;Å* 6c(VazŦV¬Â,>©XëUÊH ±ø‰ ñJa°q†U¬Â´{Ä*̱%¬ÆÌUˆ–T¬Â`áÏ]ësÛú¢²¨‘ ›I‡é3E±
-ƒM²CY…QN¯œfk7ömçX»‚”Ý=kí8VahFÅà³cf8 ŠµvÃÌödÈfOY»SsÄx«0«Q³c­æ ¶=çøÍ
-3{Ò±VÖ¦ñMØÏ‚¬WÓ+ZP,w[Œôr@±B“ PRÁÁ´Dš£D e²]ÑÊÐ"H…ÄÊá‚Ì™”X
-9Ì$„Rë5†»iz Vc°9ÇNÉ*Ìf éîlVc°XoÚ®Æ URìd[²²¯cìî BÊ(ÀU5¤+pØ–\#±ZØH Ü0•|!ˆ¡Ù#’3K ÆщÚS<*¸ ÁF1Â"‘U,œO+±DH$Ëœç¡â’ƒt‰êH©–+Ó¥…¶˜³h‘¸¤0dqu€YyVX…Y8ݱ³pÜyŽR! Í(:XA6ƒ•SJ±
-ƒEÑ -k#Š§«Râ#²HhV^á†xgVcë3r5³“ÏátU
-yu‰‰f…áUÌ"+Va°¸
-šU˜I=f…ᶻ¯em¼Át‘BP#A6“Ó®CdmSùÓM)³‚DTaˆÚ9VaºÌ9Vœ
-±Ôd¼ä2d‘h¶l¶¿*%p9¤Øtº*EÒ
-Vaä#‘ŠU¬\+á†è
-N+Õq²R÷rÜ2T´8‹°Ä-ƒõ”Ê ;oØÚ²)p8&Òè©"¡[vw^ €Jqšî!€s#R¤ÆL^Fµ³¨Æ`¥xŠU]¥H¼c5‹¥YÉmÙ#wච谂0Šõ¤IépBµ³¨Æt˜)T¬Âp 9Ôš5f8j%+>ŠÛS½¹}qXêm!^ñ"¦{æ„C‡B‘6 ¸°Íõæ-R×;š.9å0Crž/Qâ 8äàÌ¢ùx×wœ‚̬83 jÌÜqy;Q‘±b5‹¸´¬Æ`eå8Ío°1íj Ñé€lñÞ%ç¹ø$€‰Q¸ã\ÀLáUU.wx#ó
-ù.=‰QÿÁá`-ç òésãÍr
-‚ÃMéTr‰×Õ½=‘gì ÅIprO°!$¼JÛ%É&m»ùÌ9.ec:ÎApoŽ³ØtÁ€—"< õq!2í8{ŠØO-Alh+7CÚãÁ6s>aسxÆ_Y2³XÊgß,ª"ÄÈ3‹—ÚÜn¶}ÓŽƒYtÝz¨Ç-~»€À%2„ˆ}2ðÌ÷—r4Í0?ÿ¼ô =sÝ×åØ´+sO½uonúæ¿îËê÷rU”;;öe¨{ˆœ{2ž¼n‡±\¯a¨kÍõº©[qüòÈs<}Ó”«¶±{B#°Ûvì»å®¢ªS‹hn訟v«c’\!˜mß=­ëÍ™`$±’¬éÙÁ,;sk^Ê×ú\ÎpÀyæ±%e»­µP•[S¶K ŒÍÆY[‰gþ×=á‰vü·i;ÓíÆíNRq˜b¼Ñé'‡±/ÛUýÎã™gÊ7sß ãcÕ7Ûq
-}y.E¹g®–¯e[ÕK[u¤êÜs”ÖåÚ,÷ùäC—øÒèº =ÖÕ®oÆf]¿ÖëÓºá||¿jØž¹ëúÚTÝf»®Ç‰‚íÒ=#_'&[ÙúÖ6Ï úÒ­ºv0OõøV×­ùÞ´Ëîm0_R¡o_o5»½æ $c:è3\"Ÿ'æ¼²]ªkƒuü~4ØÓôMâîµADg,á¤ìWõh¾ ö‘ãÈÐoÿíÞöîšï]ÿû9Uøöƒ,6Uß ÝóˆÂm:$¶Qår{ù;éI\ÐÏ×rS£ŽýkSá÷[3V/ÇýÀ'Øý“Ub–ÌÕn|A7•ê;Ìäút[P  ¶^òÿ¹ï04·7æj½î¬è9Kh«‡zØ­G¸]½Líyœ<t«÷
-'ðºkŸ›Õ®§Î$üo›ß˜‘‡ú]Ó×Dx&i‰lãz%° ƒùÙÎñ±“èÌ/ͦÅ¡3ª0¸ð¹Z£'í>;T
-é¸JøðvÐ 6ÿ"œ‰P&æçmÝŠƒÕñ|†,³³ŸÁ9ßÔúáÞtäzÃÛhÎÿƒ’ûÊãÕÝÇ+®©ßcsÓU;ÎÜ<¾—>ˆóñËÌ/x¿9>þùM4KsüÈ4¢©ÿ,.~¹ø §-2Åendstream
-endobj
-1510 0 obj<</Type/Page/Parent 1367 0 R/Contents 1511 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 818 0 R>>endobj
-1511 0 obj<</Filter/FlateDecode/Length 1381 >>stream
-xmWÛrÓH|÷Wœ7v"4ºû1„ÀRE*,vÁ³'Ymy%;À~ývŸ‘5ãKQè´ºÏeΉgFbü1R&’Òlfqã7ÓÏïgyÅRT~nÄÄ&2#ZËbb°I¥!`°yqª ðF“Oqèì–IT!ì¼À_…r„­ajž 1Ø*Š€u¶ù¿ÜHU1]´LFÈZŠ( ȃ-Í)`-™ÒdbTŠPÍĺ”2†C¥sæ @+õpJi"Ç”F¥) ƒz6ÀL¸ˆò 0Θ’×˜ 'ìÓÄ)­Ò™Bj’¨36)pð—<gó à±ùçÎbÔ™Dk™È#džr<`Wi”•1Ø9'*ÐØ aèìŽ&æô±ÒœREZ #Ÿs¾P 'ßr¤0žÔl’HC ¶d?½±‰´=‡?§Å¤Y4‘:lÎeuÏ*`°s39)뜋Ò«sR8YçäÙ
-+¤'ïbNæ<&§€Â
-4¦‡b-BÒ c÷ÎrB^8rî&H&h„¶‡›é
-u¾A ¦Bð1 =~]>²~; ²`2t‡¾±Òt++/m-w_4>SšH> ‘nuhöm·= ë‘¿,ŽÖûÎeuýó·$‚ߘÅó§ývͶÁsÍ‹+ ßâ¾,Xéâw»vûìŠ<7ƒ‘«wg{œŽE·Ãp°jyR®¦‡>î꾺­‹Œ.?Ø=îÖ]óãšZõ/¶iíÏËDTýѾØušÜœGHc½’WOõ+‹ö
-ÿàȬ쮷M½·+†8=j|¢^¤g÷£àZY$Ÿm½’¡ýÏ^¦™GòPÿ’_›ö|%P?¶è#ìÑîK!×åŸû¸ÁLiÜÓʸ ݳ¬ÙK5æÿk‹Y\·['>ë g\³îë+½5˜†¯XT+#}®ÆÁ©½[µWg§‡æ=ØM×ÿ>ÎÔeš¸‘d±î~ÊݺÖí´N| »GPmë¦èìtÑÉeØ^í%^šòð)‡µÛé×ïªñ~3)þ PñµÍ/*\U‹Û‡7·ò©ï¾Ûf/o»æÀ› >.ì ¿:)¸)ã9Ÿ?ßh~œ”E…ÿî‚,2}¿œý=û:b*endstream
-endobj
-1512 0 obj<</Type/Page/Parent 1367 0 R/Contents 1513 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1513 0 obj<</Filter/FlateDecode/Length 1287 >>stream
-x­VÁrÛ6½û+öèÌD”HÑ”ì›ê&ÓÌ4nÚ¨“‹/ ‰hH€%@Ûúû¼Hš’Òi;m<™Iàa÷½Ý·øó*¦þbZ%´Ì(¯¯Ñ‚ÒÅm´¦t½Âïÿ[I{ÿ!YÇ—~Ø^ÍßßR² íXÙjMÛ‚€³À›üú¾“-Å‹ˆ>h'­pJèãgú¢taž-iéžMûÕÒ³rå›íW š%)P®?‹z'ø Ÿ¯Â ³e%üqD›ƒÔE¿(¥8î%«(ãE[CªÚ©ý‘\)é«<Ò¾Ó¹SF‹Šj™—B+[[2ûïÅ¡:CR‹]%=@!›Êk@òŽ1BÄ/C\Â’
-Eqÿ\™\TL¿"ÿ+ôÇ̾u:¢Ü"£ iö8;uØ™—P…l«ÃÊðžÐ@JØKÓTÃ8Ba”c%ÛBX5ÔÛ_2uM¨SôcÓš'L3ðÄ<LÝ~œcd ÊZ8viK…!m&,êÝ™!Ç~Nµ2øe1°|>vÂp¦Fä_¥CŒVAÛðD+ù©Ø”G«ÀÊ0Ìɵ˜iA·8b˜ª;%Núž”89—vŸE“9Š›B‰Áåyv”vmòœÝ¸÷ž!ò·«þ¸¹žqÛ8©D Ûotu¤eB;…d`•Ô‡ñÖ1NpTçèŽ '… j{A#àÞt-=^§o0–rUsÚ;ì =@Ø°;B¯*<^#ÄF¶Êo| “/-.±(îÅÆ9§òZú²´‡É
-á8ŠÏ“²Ý·"—Twè¸R`žð0™ê³±ÖäÊSÄ?4ùÌEjq¤:£Ñø±8)Ú`ÁIéÒÖoB¯<ü‚樼ëÛR5ÀpÏRb¾éÉŽ@ÝôÔ·èߊl—#kÕÁßzÃ_ŸÜ-ý0û·wÛ×ÛbºJ£U¶Ó=»a2ßm¯~½úeù}endstream
-endobj
-1514 0 obj<</Type/Page/Parent 1367 0 R/Contents 1515 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1515 0 obj<</Filter/FlateDecode/Length 1614 >>stream
-xWÛnÛ8}ÏW Ú‡uX¾Ä°ÝîSÚlÛn¶u±/y¡%Êb#‘.IÅñßïR’eÅÅn/h*‘s;gÎŒ~^ÍhŠß3ZÍéfIiu5M¦´˜Í“9-Ö+ü<Ç_+)/æ«E²¼ôb6_¿|ñ~s5ù¸ ÙŒ69œ,×+ÚdÓ)mÒ‘€Ya·Ê {$c)S.µÒ+£ùÒ¤…¯­LèÖ“/$UÆyÚ
-§R*å“,I”%iéÆ>RjªªÖ*|ß‘ÒѾ©¤Ú)½{³ùq5¥ñì‰m²ÑçÛ$²ÌJÇ/ú¦4NöžâvU³?I»ÒláêH°ÿ³–×$tF;©¥ O­¬„‚Ë\=ËŒr$"ôqàn/¬Wi]
-‹¼¼´9âºI °Ó•ÔžLŽ›ôé¾ Œª„“Ú¡þÖT$ºt+¡ÅN†k{iÝ^¦^=Édàö³A‰}«F˾åYtŽ¨a£Ÿ|Bá|SŸ®ŒÁÞªŠÑ9EÉi(7p¬€
-ˆk«áó¡Û¯÷x¶/môóe²`Œþ)¤FʵCp\U87)
-þX%}a£„H}¿»§‡ÑwæÜðbgEE­á‡7Œ5ú‘s¶Z
-uРumʺÆзm›çïÎÿD
-†f¥½HPÔ%Íð \·
-}ÏL†Jó½˜Ð8ÑåK] (Kôñ©´Cön+;ý_­¤ÈM­³@kàÑ€÷]«çÉŸJ×ÏÔô!Ý’pDbÄñðuUWQËšœisØA-øæ9ô–½ž`™A«éP(Ô
-C K£wî¦ WÉš÷*Dò0_®š$Ú(ÃËni=Œä¹YðÈqW˜ºÄÔ@_Ö/°H€™Gè°i 8ðœôöˆE†ƒlæšûg-J•+™ ˆÒͱ@P rp
-íb§¢ÕÌc½¿Ç…ZÞ±¼ÎÞÒxÁË-@ 仹L>®]zí u#õºYÜ;Ô"æ1ÊÝmQ•DègMT=Æî¢GÁTì ]¬OžcÝ“YBŸÂj1s©U#ƒe‚e ¯Ír»ÃØ ¯“›a³°ç°}eÁôã¸gˆå¼­SÞÙ1øC[±2¿mZ{¾ˆ­Mͯè2¬-×[¥;’N“5ƒÐ«êÒ+ÌÔH˶”\ï€ʉUÊÓN-èË©cÚ]3¡ûR
-¬ÑVæ¼”±èგ¶ÇFMlø_^[œÀ7‰ÄØ*]˜<¿ªÅe®hç Ôiq
-_NRu†‡@y_ˆp\‹ú«`ô€W³¦÷1Ý·?Àâ(@ûU$†ÛnŽÔþ«×‘Œ/Bh–3¼^G ÖΖøˆ\ßÐrÕlõßn?¿¿å•*xgÒš7¡0hù渽0^MÁœ¦1 †ÝÀ‡ø]-×Qj—K~ôÇæêï«%¹@endstream
-endobj
-1516 0 obj<</Type/Page/Parent 1367 0 R/Contents 1517 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1517 0 obj<</Filter/FlateDecode/Length 1606 >>stream
-xWïS7ýÎ_±ã|(LÁ¿ 6ɤ4¤Lc ±3ùÂLG¾“m…³tH:Œÿû¾•N¶¹ÆmSûNÚ}ûv÷­ôxУ.~{4ìÓ進åA·Ý¥Ó^·Ý§³ó!>÷ñg%Í.'«.½¦É ;çøVw»4É©þyE7b)i,í“Êð¥|¶ Ì虚WVxe4ÍT!ÛG“¯]:§sÚ÷{íÁîóR8·Êß$7°¸,…ßg„.
-/­†»'IR{«¤£™±Ì›“¨ü/T! +ßì5öÒwô‚p¤•£"%­”ž*ï±á"7«ÿˆ~nMUn×¾ µÉËÂ8ïv3·V®Ý4¯öÒÃÖHs­t¦¨Bºþ‘›—þ£wxÄ€œiC*§|ZDZ¡k:-ýÊ؇MPLñÆnQ“‰dÚÍ
-ÞÞ= ”Öx“™"mÙøسޖÙÇÿnßÅòOæ_âé\Q¯Û褪üvv*ëä1I~13BDNÒRf tK‡Œ<V
-iÁáù5‰q”V þ™*”ç::ï ÔBþ`ÝZ™ùb<Eƒ£íRcÊ<5dÐ>ã7מÜÂTENSIÚx™GÇ•FÁ Õy
-¸¤ó%‹9 W¨!ìqh¯cš¼»ë\ߥÅØ05ª}UX4àÔ«ÑbËJ×½‰=ÎU°ŸVgª3äJ)”ž“ÑÅšVhg¸É…]7£{a=¯…-è ÅÂBÔo³º9±œ
-ZG•®žÉUei¬z!Ÿ½Ô¼´›@z莚[rQÞ”žYá¼­2_YÙˆÉñ>d¬ƳB!vEÁ,‰i!Ù´™z¡ônÛ!Âј¾@TÌÊÑô—×·ãÐœ H½ÈsÔƒ“®MÓð:gk~Á½SéŒûX <Ö4Áj)ó`XÏ<R³[SÂÎÁ;£­c_Š‡°~‰£ûC5³sõÓ¶ž{ua…¥šÍúß)ÔŸÿ„Hº¶ P·Mpxü(gÄR!IXn‘ÄT€¨uÍ\a·C ±Iâ˜y&Ån:d7ñQj°CÊÑ2™70Ƙa©ÁS‹1µ0,T3%´¥Fä9—}L|+J]‹ÉXB54HŸuRÔmn®&V%T>70rS¥=©Í«ÉKÅQçT] %W¯ÐëÝ¢XB+Ìt ?l‹$=çZ=&`ax3òÈ…˜ÞªoÜTŒ‹8Ì!Ž~µPФ©Aç°ìÄ~IVjZ¿ K²ßЊ«×ÔÖšwz%³ÿ´Ï »ãÆQåêršmÔ™ëwãîZ@ËKŽq¨èãáa»7 “ȼ[™³¼À˜š*Êièì ¿)6¬œã¡¹>ñ9,ÀÿmVšž„U¦r“ÔûC¦:ÑPòÕ½?ŠìKjq»U¡ÐœÖ1µ’3¶Îß·q‡õ£©2
- ÙŠëðsÁJt÷š¾ò
-M…ÜÀ+,#èbƒq…Í|7n#®x1pá¾sÉ8é×J‘ŽýŸµz¡‰‘˜‹›¾q“H{Fï~»¾ys1zÿ¶Ûý…~—(ý¸¾£pB+­3Î;Ë+Ê7 Ÿ²áRK«2ÕºÌø0'\Žþþè;¬öÜBÐŽ ¨SÒþ/ê/·Ÿ~ÿðéöóÝÛÞ”1ÿu„ó ¬_Z6¤­16Ùøf;¥ê¼ž½½îŠç§4žGu_Œ./èΚ¯¿p’…“D(s6~’6œ »|‘<üÎY°£çlîlxÖÎq/…©Á½Ÿüqð$»Sendstream
-endobj
-1518 0 obj<</Type/Page/Parent 1367 0 R/Contents 1519 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1519 0 obj<</Filter/FlateDecode/Length 2027 >>stream
-x•X]sÛº}÷¯Øñ“Ó‰dÉveßÎmgìĹÕÔ_µ”Iò‘ˆ˜$
-…
-‚¹™>ΨRYajíw8b‰6Žì¦¦øzRžxŒÇ¤v­‡4/Œ'þ©ip:·gl5cÐ𘂥ù§§Óéú€Ì¨`líiS [„5¹áø`+§û- ©Hå•©‘R§‚u´1Èh®6žj6ÉŽœêÖdÙõì§%Ÿf”« Êk˜DØ)ØVÞÛÌ(dcBA üTyî´÷ÃtâÙÌED0¼l ;j¬©S++•3K“IP}œ?Š—| Ó<¦ådïtü Ë× -M §jN&vÜé̺ÜSn9oÔ8»6¹îÊ‹»4rl¶ #´´®Š^I¶ïgôÍÔ9øŸ®Y® k 2rT‚—›qš€ØÀ̵Éø™êg·R[a“ֹ·t]“~UUÿ±/$bÜ…j`EÒ]#8zçm;³wA!^®»^œ±èØ'í†R/N´Õ9Úa·Ï!»£$á.ÒŸ@m+8Í@™z…u¥µ/mCßOÖF‘êÙï0^8«ò Ìþþ°•tÝV,‡ÅKOWM‚|¡Öoô‰!Þ'ê/¿Ck€ ŒCTz6þÙjÔª »jÖ©S%C¼ÈéÐBò®@:ßð¤D-±{l´ҷ€óö,§
-ȓ
-¦÷Í55•Ma™ÜÛÅ/]ÂèЖl#•"œ©íΊO¡6ÖG¨«,ý:»}ÿ{ïñy›ƒT²Ú·\ƒ?[ã8Šžâ7.–<+”‚>n·+ê ì·š‘<@E¨ ¦œ®î²Ôlloœy$WT½”|;]¡õwÒÔ‹ Þ«h‹”¯ÈzÔw°†ûPô œˆw3‘`ºO{nÐ9^ÀÙý 1J0ó7&96Åj{–Ò
-ív˜? KÒF‘ [¶Ò+͘_¡µÍ¤sl°ªõØ”}\ &ÒiLñË
-}?âä $K½C2 Ò±·Y†kÂG–©´kA,>=ã|ɉó îr½Lµt@¸!LVÈîâ92¦âP(§2ƒ.úÔAø˜4»/2s8rPi’§B mŽ¯I|£1àÒ`ϧVU¢(úâq½¸à†ãXô3U-ú#kU2ãÅ?æÏÁþj;N²r•îŒã ¾N¹:§Éä"~q1»¾¿¹¦'g%‰Ÿm†+H Óp•!t—#þNåä‹ÑÅåÅðrrÃòÉŸr;?ú÷ÑJ,ÝWendstream
-endobj
-1520 0 obj<</Type/Page/Parent 1367 0 R/Contents 1521 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1521 0 obj<</Filter/FlateDecode/Length 1698 >>stream
-xXkoÛÊýî_1¿8€­HŽáGpQ@¶åV€­¸oƒ (VäRÚkr—w—´¬þúžÙ%-Ùí&½M;"—ó8sÎÌPŒi„¿cº8¥/ç”U×ÉÁç»+ŸQRàÎù%þ“Óh8(ÉŽÆ£á—áé’µ¤û‡¿}[$ *T)?%¿ã¹3Ãs'§xî(Y+çï~·®e¹¥Òd¢‘9)M ú®tn6Žæ Gd,²/Ü 6·ytó5M¿Ïæó$M¿-’é×Ó4½}šýcú´HÓiró>†#:çK#:#f'3ºJ;jþì‘&yn¥s|Ò_ªD¶VZ’•ä*ÑdkDZ e]HúCP]3$TK[[!5Ù\Ͼ-¼Ù5†ã]•¨k¥W
-¶D탛h÷M›µ ìßñ’­¿(‰)ô癲ð…Û²¾‡ÿÙO:a!ÀáÜžînÞ–- ãë$.iâ½gÃ|. ÏÞÀŽ)»®åKîEÁXl<…Eþ@Z¼â–ýÖÇ(ìF– _ç7'KÁ:c¤Ž7&Žï#Q3&·(Õ¿ðP7)ÂjP
-7£‘ß Ñ¼ñ—Š7•‚ó¶,ÐÚÞ‚}9ïÄØI2:YØh»^£‚à
-endobj
-1522 0 obj<</Type/Page/Parent 1367 0 R/Contents 1523 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1523 0 obj<</Filter/FlateDecode/Length 1607 >>stream
-x•WÛNãH}ç+J𰌉s™FÚ ™ÝHa‰gG#YZuìéÁîö¸í„üýžjÛ¹ ï2 PÒî®®:uêTùçI‡<üvhØ¥Þ€ÂäÄkyÔïy­.õ¯†øÜÅ_&iáôzÝ·t®û­Áñ‰[ÿ¤ýÙ£kò¸cp…Á¾ç‘žSõsFAà½jMÚä"WFSnȦ2T‹ ZÊWZ‰¸€ &Ãwmôeš)+ýLáRd"ÌeÖúàÿ8ñè²ãµ®pËÎxÓ:ùK¶Çf͆ä«HÒX’ŠãÂæ™È¥%Çd”/¥•ØKmáýÔd²i:^·õ±ßD×Ct¶TÚÔñÓÙãÓ˜ÎF_>i™¯MöÂѾÐsfŠô7K£»wÇ5lóT¤©‰$‡k§º½hïÙXÄ„Íde¶’Ù{nèöØFjÒ"Ùž¹2†ƒkŠ,”¿`»ã°‰M(b›­öl9|ö¾342’‘#²CJ‡qɦ
-
-¥FÉÇñ†
-š$A– R„KŠy)Ò‹f' ½H™òY†WɈ@ëÂÚ`”(­’"¡5T‘T’fL¢TfâDè°9,×LbË H;‰h¥,£áô怷ˆŽ€æL(\4ì[cìrâ ë Œƒ¸ýùš:ý²Ý\ö:ÜÐzø¥?¿Ìü™ÛÉ&ÛŸûÔÁsîK—Ý!oô—•%—;[8>0}s‡5=Ìè›Ò‘Y[šúÔGWD;êr/C ”6ÑGÍó»OAðm2úA0û>óǽnŒž&ŸfA0öšï|8g¢×‘öÐ`áζ9A“Gº‰¢LZTâ®–XtœÐÃDäᎦBe¶E“ƒb ù¦Ì3wX1qÁ}öèF¥™@ï+¼àÄé½/(’) gÆ€dK³vý»Ç6|“z¥2£™ƒ \_¨g؈Z ª0)Ñh6G¯EéžüY(tz¶R¶]úªÕkû^éâõá¶ÌÃöVu÷¡l"C ¼¨èÐoÑh:£{W%eêÞ¦C(R1W±Ê7‡q18œ„*~+ó"eMõƒª‘o¡(çš…1ägи"$ô É0<8UÝË„úg!QwìL9ºà<ûÉ †-\ê€Þz© Ê–i ©Æb¥'S™ßN¾ÌŽ.žš!mRØÃT•HVɃt¢p[tC»}¸È£D
-4 ˆ.UfižA¿Cp‰‚sHFF_GGwm·\4`mî„»–ZGl'€pc´Åü‡ 502“K•ãã,/ S 4ªÄÔžð¾£›C¤tpÖhwfN\T:ÁUvÿPjòŠ9S†/Ìg$ÙfÛ¡på:Ÿ†`¾+X|›—Êà-3¾”;‚jÌhææ1^2sîF°\Å:/EuçéEíæVì+ý€8m1®O)îoIå^u|l•^ügyÜ”{‚óZ'tÑ€fÊ©)#@x<Zª’±œÄ²Ä÷*<[„Ïë´ñ¯»×ϧ·ÓcvçuRn`B:ÐÊ!–lŽ®S2†“_
-&4
-†õÓ=BpR3ù¬Ð¬¡S,¢–÷c¾ÄÊéZ9TüRXÌRÓ³Zá?ÌÆ’Yo´<HäN¾ôÜr%à¾ÙJ@É\pÖ1ÃÀfBC·{WÙU'ÏÁˆµ<ñHŒÏ¼™càW¯ªÙdÞbU.—k­;wíнÎ콦]vû¥oõÄ÷#ŒZEšš,§ßé»tƒîNr]8®ƒ¾ û¢qS!U£}Uǵãûž^UQux=½êÑ`ð±l™³›‡ÛžӉ‘ îHNz9ðËúÀåÐã7цѠ?ì·†ƒ+¶ =>9öOþ:ùÁ5r¯endstream
-endobj
-1524 0 obj<</Type/Page/Parent 1367 0 R/Contents 1525 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1525 0 obj<</Filter/FlateDecode/Length 1779 >>stream
-xX]OÛH}çW\õ‰JÁI MèJû
-çžš»£-—0±fCw@§±Ÿqç]ÑpÆ^Ðu*0ãâÎ(¬„*¯Ù4 ÍÑIÜÖõý%Uo3
-ˆ=†šDæJÉ{íI`É
-¡[›Ê•-“!ïǶÕÂI¿¤¹²[>Óg ›…Ô‚Ä" {P£™ EÇŠËâ@n]s~ü.w˜s$aQ ¢íº[+TŠ1Ê"ú$&§Ó‹éB‹
-Õ.u!NÉ` $ií¡e±j`æï:€Æ“ˆ’÷/i™è"Æ·Ðuîe¹
-endobj
-1526 0 obj<</Type/Page/Parent 1367 0 R/Contents 1527 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 825 0 R>>endobj
-1527 0 obj<</Filter/FlateDecode/Length 1955 >>stream
-xXQsÛ6~ׯØé“2cÑ’,KòÍô!¾Ä×ÎÄIï¬NÚ¿@$d¡&–
-ÆYª\¡Ëw›?FSšÌ®²9|Ç*{ÎTFŸ7Ÿî_fïÈ5¤Jgõÿ–—Z5ôk cŸ<í°ìMU—º…¶Ê#²oÝeô36í][´Õ8¿*Íu1ðö*ÐÁ„=!Tz¸¿¥ºqÁå®”…tX2|VÏ^Ü‹FDøØê€<<“Æn,Ku©ðS¢E}Ê.hÛ². |oÜòóªú._þ³ÕÁgݶù€"e_‘Ó“ñ> À+$¢_„mœo¤¶ZvÝàƒíQœâcÄíÏŒq4Guôÿ`· ô$ù}oéþÂírŽú×Ï?ÿóˇé±ÏVÄ*£ÍÖñçÙºƒe¾ð¦Ï±!Ǻ¼Ë;6NVÙšk‰91_®ˆ½Ÿ¸*/{Òl`¥÷ó¹³
-4•DX¥xo£Ÿ „èß z‚.ç$+I‘” 3O]'Ù‡è› £  O@†ë,ö$ñªú#uŒ s 2$6¥Vh‡B&ÚèÊáÕ·E185—+4¢p º`Ÿ¹¾AöyNJ|–8…®€öÆš Ë£XPôä\A¦ÐŠÄD‘” Ÿpè=ôÎÑé|›ïÓ 3$ÇPÄÊe\{,€TãØ-ÝF&
-.OòØoµ/´`o‹Õ"[-×ñ¸šóÒÇÍèߣÿäU°oendstream
-endobj
-1528 0 obj<</Type/Page/Parent 1367 0 R/Contents 1529 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 830 0 R>>endobj
-1529 0 obj<</Filter/FlateDecode/Length 1477 >>stream
-xÅWMoÛF½ûW |rƒŠ%YR
-ä`ÇIk ¶ÒJFP €±"—’«ì.%ëß÷ÍîRiŠ
-[JcÄÊUD«_~vÅP.Lçì¹6ˆáI­w¢Rï «+ʵ}ªžGü…‹š¯jíã¦F&‹ÂBÜ¡>Z
-Ã|™‹r)h—žÁ7®t2î–JÐR­jÓF´ùåá0ç‘{.jY*+›Jg"/™Bƒ>KšÃÚ§ãùu©:ÿ
-ºBž[yÈ>”¿i$àáŠz
-òºËÁÅÝ~¸Cu
-/¬\ŽºaöÁ(Cç,{óÆ*)1 ðøYÁ8;nܳ"ZpCä‡iDÞE9÷ô1nFbÓè52<{ËökpjÃrÏQÌÝTGTb…|ÀRÀVŠ uÛ­Úò4?Ðåç$ì½I4)Aÿ=O¨M÷üõƒ|±?šƒ#ú=¯ê2{±"ù‚±`›]à*˜¿ l
-Ž")õ4a?=\ߢÞ3ÝÎî¯ïÜWﱟôâxzƒi¿?âø_ ÓÓ3Ȫ¬Øfò“·æ¹_%žàM)Ö(þRò¬9j;DÈØ…Ö¬r·šÛ^J;\X½[PÉ©“5ïFZËÜ‚tbt»‹YKÌpÏz_¬ÈÍúØpäRÚäÒ—ÔŸiVÌ ‚&è}·¯Û£åqcßw·®ÕxÂ`cL=gƒÂ‡ÖDŸa `Ç°
-_¶ºl‰ñ pÜx6v_;_thǵDQßcº
--ôy'ƒAßÉm
-ºMƒáΚÁm©ªÂ
-‹x;¸‡MçsÁm/È µMçùý ùyÚÇZLçâ1ÞæC¼ 9-˜_ßß\Ó­ÜÊw«7ƒÜjÆAôšã½Iï!acø‘—¦ÑdMÆS¼‡ÁÊdÈÆ?-Îþ8û¤:ƒùendstream
-endobj
-1530 0 obj<</Type/Page/Parent 1367 0 R/Contents 1531 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1531 0 obj<</Filter/FlateDecode/Length 1199 >>stream
-xV[SÛF~çWœ>ЙH²%Ç—´é $}6-Êd:¡ÓYKk¤DÚu´+ÿû~{‘± î%0€iÏí»œývÒ§¾û4Š)RVŸô &I8¦Áx„Ï1~N û Œž'ƒ0~îÄhòôÀ›ô$z7 ~ŸÒ’Ç#JsBâ^Òì<-JE5×…Ì©+Y­¸"–ç¥.¥ ¹ ] YUr]Š{Z²†ámÞ(ÒÒ>Sõ<̤XТ¬ø«Ó/H×£‰Ëăp€|çgg´¬8Sí-xÓ¾eõœÑÍå[úuö)QV°%‚SÅÌïR‰×£ ßCc.Œ6g(ˆg¶Ä…l¨–ZÎ5++upâó}%ç¬úóàß俸ȚÍR£/¥Ö²É½¦?øaîmų¶)õ/µŠ7Gbæ²f(½’÷Rüs¼Ÿˆ šÝRÅW¼2ÃNêÚA— Ïd]s‘óüH*©üÙ×8ê߉ûáÐÌêóô*ý0{?›ë}ÉtN"%k¾.XãRDÅHm”æõ‘œ g9IQ™)lܨv Ä6;€qDƒÅÌ“ ´Á ¿£¢| —ŠX–ÉVhœ¼3ç”!“æ¹ÀYVØ™¿ ¦hÍ«Êü5±Í“®Ò²@ç×·ô©¹\+š¦Ql˜^ã­RðÒ=:+Ý´™nÁ;îomÙð<4á¢w“­f‚xìX ¾ “°ÒGÀoYrк{ï–ºmJL£‚ -¹*sŽÞ ÌœrdË´l6¤
-ÙVùNÓ‡…~(E»–aù–¥¾m Hz³,3f¹d„‹„ÏMfTv FÅ`¸ïõ©`;ÊŸÙV`(Šæ`Èœ©‚‚œ"ÓCtj„Pæ§ÔÔ}îàð¢} eU–ÿÛ{DWÂÈÿÆkòý¼\ÿâƒvì~
-òqöý¡ð64òhÇ!튮—èÂqö8 À5ž¥áŽZN7ë‚ rÖÚa€¹!3#opS݃kBúý‰[pËÀ¹%0íFí)°k„ßí‚U(Ø`›óU$Z¨ìÔ+ç/ß?½»û¡Ëx ÜàÿœÙÃÎ0h/›IeqÁÊ2»+Hì..ÃÞJ‘U­Â–z€‘³@7c¯:3áEÅÊyűñ¼>#—¼Ë
-endobj
-1532 0 obj<</Type/Page/Parent 1367 0 R/Contents 1533 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 833 0 R>>endobj
-1533 0 obj<</Filter/FlateDecode/Length 1701 >>stream
-x•WMoÛ8½çW rrǵ×N÷–I7@‘v·ÝC.´DGÜR¤JRñúßïR’e%)°(Ø5Ÿï½þ:™Ñÿf´šÓù’²òd:™â—îÏ×'óåjòžïg“%•4¿XMVÍ7M÷'ýï%Ï“Yïiÿ;ž.—%~nh±¼€Ý¬NiŽÿNÒ6>8ŸÎøññƒë“·7ïi>¥õq/W´Îc¸ø%]¢
-ÒÑl6¡ow·ÓéJå½²†>¨àI˜œ~(“Û§»õ›õ?'S:›/`dt™eÒ{º²&8«é“òÁóö7[%gç‹ÉœÃ\|Wr§Ìc´šÂ<ò—è·êüzª=ÿ
-Ùó8DŸ^fµSaO¹Ú>6þˆ¿ñ7_¡8ðw'w¤L4r/ÊàRÁ„“Z
-/IùøHl”fk[ëzYR¦•4H>XÄ"ù¤rdDPO’º¼ qÆP“ÙyJ4Fû/¿þ„„c¶¥ÍÕvÖ&—Nï_J}Òx™Ò½³Ý‹€?¹ 3áä¶Öd,žYÊlY9‹ÎÅhAÚmtK\X(\m ‡`Í8èƒÒºqßæb7r¯ZG#[¥%ú Zrh슼T8p" ¢™0ˆ$ “º5ÍéÔF˜ØX”–;žË­¨u '¡kIMø•p¢”ŒÓ„¯yÓïøÎ4ùºª¬ éi‹†ÂÓFJCk2§-j”Â-dÚl·B{94Ú¿0
-®ž“·T
-£ªZ%à?TÊG¸ÕÎ <Û
-oBÓÍ܉y˜³mm2"1”ôÈõ–¸Q:wð^P¥Ä,H^¬Ñ{~<c¶Æì=µû]ÇËË”ÞÛ›ƒè6ÂûÈ ÁÀvHæš*‘Æ„
-¶ø舱ä¤Ek_â2Ðs+ž„ÒbÃK‚nêÍakqÖ>[¹9ñ ]â‚›KSÍló8Úù.ÉF–òJ7¾¦;Àq.¶ãT›Ñ’¨ÜÔcyXÛâÆ%a›•7éYìW㯙9‡ËÁ9_¶qŸ¼úezír¼X-&«å®â0ºzÇÉ]¯Oþ:ùü
-£endstream
-endobj
-1534 0 obj<</Type/Page/Parent 1367 0 R/Contents 1535 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1535 0 obj<</Filter/FlateDecode/Length 1810 >>stream
-xXßSÛ8~ç¯ØÉ éL ¤ ½— pÃMK¹’kïÅ–‰Šmù$™ûëï[Évl‡þ˜¶Œ]É«Ýo¿ývÅ¿SšàÏ”'t:§(;˜Œ'4?ç4;[àùÿŒ¤Ä/Ì&§x}eaúöÝø¬¿p±<8¾žÑtJˇÌÏ´Œ L&´Œ†Ëµ„aeIät»¤h­79E:ËD“[ G•¦´Ñæ OnM÷"[ ìŽI¤©Þ ÒJÖÎãLåÊ:#œ6Tõ¬Rù(ß,¿Lèhz:>ÁÙÃH繌œ„}σAD8ž,=Ø°d´v¼­Eþ(á‰$x&]«‚tB ,[Ò9­4œ”êH¤ˆàú>,m­“iÓ;ÛÈL;I™.svÀÁ‡Ë1-×€ƒy*«T²?…0ŽÏ…#lòøz^A:¤{¥jþ·zÈ`Z•F¹-aÙ³¥ Þœ„ÏÛž[" Ù–ÎÓTYÄΩ¼ZJ‘ZÎ$FgL¨¼Ú“¸‚¬rr¼xGSd™Ó}t:¬
-i2e­Ò¹íF' 6À¬LL«Ò9ø <Þ6x îv¶]cÃêË1]¦*zbW`6-­ Þ,•’+‘êG¤ök  +±ƒ3]×¢SËsOKì ¿ooþ |©±d¾t"æ<Wœâ8be‹TlÁ €Ê&m2ú-¸_ÇÆXÌžƒû«Ï_®>?<xö? ?hÄ’‹L>¼éÅÜúè«/¶`ó¤Æ+êã ¥[é.n>Ý{Ëu(¬¡TFÔ³Æî|Ç–÷”]¬ y”Bõ®5ÔBÅæ“ë©ú¡Þ{'ubþΑ±´‘Q…C]dó­b™;•lù™q®ðË7e ÜKœ’Ðóé«K@‘(™Æ
-a-*¦X8±9ð…ÐBþÆW.W1âw˜^0¹#¥dË¢Ðƽ•^ŽÂ
-´ÚËé0©­ô`Wùˆª¢ç«VÑ@ðú
-=áÐ!»tµ8V åà
-b¸Õ¹ì1jØð¼Í}¯Óí#`~p]B¼/uîŒN}P–ð¡m! Û)†X% ´)w>3&h«?¾–%투¦›Cœò '8¼@6‚Ö½Œ
-ôž]å%ÊX·“0èV0HW#aÓ1]³Í»Æt³ÅIççÕÊ:W€ Õ.‹cÐ$# –wßê$Úž1Ò:™œ#E<Ñ€U[òƒ| ãñ‹è,E=Ym+‘V¹ïwnm¤$™Ê °2Î/?„öÉ šÃnðƒ½:|9¤•r¶¶åM`[Æ®ã0ÙB<èœ?ÝZk»Y›¦ÇT¯|+%U@÷vÖäìÂ?¡‚y0‘sHèi¾uv®¶@eCn¼o-_}³÷4^´Ô©cªÃ!”–Ÿdºn[…¶+T…IÄñêa¢hNß QCò2UÐ<!m¾6^¹—§ŽÛ-¥†¡» ûõzÎ<È·aëÎæ 0$Öù¡cž@;yn‡èÀV| e‹0&U½½Îæ°"y?…}ða
-Û“¡0^_·ì%œ^Ô@ÙËOïÖˆy)½ì3»l#˜…‘‰zÙ‘‰u~?Š{d3G‘´vÏϪ¥ŒJl<'ûð^”vyÜXsá¢ý©Ð4¼†­A¬\w\ôó/<c ? ª¨LEEhß×<{x쥇¤@]Pö=„~§ }&F£`‰`fР{Ú€WXÝ%@ciÈ4´Yáxc˜ 4úEªE\·—½<.ÅS_;>ÕSõj¬KÂAÑ0íIznÖ
-ª€È¤È};Ï=Þx§Œäö‰dþ…Pƒ´uƒé…h×â¹n—{nÚó ¢È´¯†õ ,àæb FçH—Æ¢iTÃî6—ý„”ãEÐÒèÕîó[Ï› ÇôQ³ºH‡›€¿m0Mcpe¤c­|ë@ˬ»ï#ô€WŸt²“1½oÆﻟ¶³z/ú-ÏÌáºÖÜwȆ pDä ¢W;¨`éĵD¾Ýò2ƒÖZÅ8܃„£f6ø½a¶©ÛÿøZ™&#ð0ào]Ñ»¾^OÔÜÞ›óÐ!sص§Z#à^ò?íe¿ÕPÑÖmÓúÒöƒˆ(B;ç+_«“|O6ŸåÁ˜G_è<ŒþÂð2j&\‡W(¿Ð¶;#T]m¿¯:œ \1tÔÐì m'¥ª;D‘6ì­LûÖÑÞÔ†U‰>¤_IéÒ*Çý³NÜ|Øa‡¿‘qòºXÃÊ¿ðîøØë[åF—³*»U=œUÃótŽßlœÒ|á/—÷ç/ÎéÎèohªô^G%ÏG¡ÐØÑ£zûÑbò®™ýB;[ÌÆ‹ù®Ä s6yµ<øëàUendstream
-endobj
-1536 0 obj<</Type/Page/Parent 1367 0 R/Contents 1537 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1537 0 obj<</Filter/FlateDecode/Length 1510 >>stream
-xWÁrÛ6½û+vt’glY’eÉéÍ©ëi&ÝÖê´_ “
-Wkcw=T®³rLÌù|5Y²•è¾Ðéûð»Se…ð”äBoÙ/'!U®*Ä.ÊŸâ°ø¥(Ì–6æõ,J {K
-•<;Ê«P¾1=|}‹{L›¦®žÐ秊/Òž±¤ŒÓV¨RÕ¢ö• oœ´H»LQgCœkù¤ÉÎPÄ”DáL„HéZZ‘tVZUç>W㸰i(ב#T
-÷ÌŒHñTU†Éèöá‘D][´žb(?£`ìH"·µx–,äIb]ûº£ÚóeWí/™GR +J ŒÔef¾Ï•Ã’‚\SUÆÖqÚ˜[²fÿÝt™ïq<̱kÆìH#¦!ËÊßãëN& ºä ±¨UEA™PE’OžÐ¿cIG7I"£[©•LG1ÐïĶc}/ú5h”)ë
-eÙ•QD^SVF#˜>7®›ÍA]GCŽzdGg4jG¾íF¯#Ú¨¯3ü¿7Ù¡Çœ÷KÀAûzÂîš$G^"\£[Y@¡YÈA
-™†WÑ–Ž™!èËښѽå“Õt?Bé2½_õzkÑA”x Ý #¨ ==ž8þ,Ù¯”‡ÎìúÈÎ{gƒÅ‹»ë°MΖø‘v}IË«Åäš“÷xóíó ýiÍw¨Ýš¤)!+~Gg´çû ç«é§ÿõ“f±ZLVËkü,‚·ÕŠþ¶>ùëä'GCˆÒendstream
-endobj
-1538 0 obj<</Type/Page/Parent 1367 0 R/Contents 1539 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 846 0 R>>endobj
-1539 0 obj<</Filter/FlateDecode/Length 1445 >>stream
-xµXÛnÛF}÷W òb°iQR)ÐMŠ HÓ6zÌËŠ\Y›\†»²­~}Ïìò¦µ#%
-6–{›93ç̬¿^Ä4ÅOLéŒæ eåÅ4šâKÿëŸß/³8šR’΢•´HçøëG}äõ”,_E æfI´h<5[-¢˜–«)¾–4ŸÍ£´ñìxŒÙer<»œEsZÎRwð|µìGnïh “ ÞëÖòìx̧G³ÞªÅbå­ŠSØèGîäÑV%sÜ;š1û*9še(â4Žfðh%í€}½¾¸y» 8¦õx'«”Ö¹ƒyJëlò¡Ê$ ÚÙPV¨ì‹y¹þŒËvÇ„^|øã…ÿÖ2!«IÔuq »“T˦TÆ(]ú(Ê RÔÆMÝ©{Y-Pïu÷ÝÜ5z_ß<è¦Èù‚)]Çs¸°Î'ÍÍÃÍ#ÙFÕ…$#í‰*ç+zPEAÙNf_Ü ÙNTw2?ºc«\±UØ+ŒuK7Ê>ŒTåÆÞ©Y稑پQö˜R
-ó%t¿(¥•MD·ÕÜÁv',=ÈFÂ8o’û"ð¡ÒÖÝ Ï/ãK½2ÔŸB¼¨[K¢Ð•ììccFPGí”Ë|@öÆYY%ŠâpEÿÊF{³NûŠH=õŽ¿a~I„@
- x…¢ŒÞvîJŸ4ªMäœK± »«ôŽ±:pÈcåÃË®;(»Ó†÷·
-穘馑¦Ö¬$-;ÚTø6+)~½¢Š#Ö˜³nMF’pžªˆ ªFùè«ên
-S&*
-ÆrÃî:f+?4pk/¥œ4£û] åFÉõ­è¨G…‰ŒÊtÐ{8U¹~ŽmÚ×ܦ²5p»Ýµ¦½t»ç—ƒæVª` *åsFÀ=|V{G@ªðÒe²’n–r-MuiY§øI…wøbU¶/DÓöÌè:\á
-íŸï¡äû·š›:†¨§÷}¼ˆ£yó/¼ö ×7?¦ÜDphûi²üôÒ¯ÞhîýÓÁè11µÌÔVeLÖYúÅoêÚ]ˆy—2ƒ2ñkàW×Yå‚s¼0XÕÁt±óÌ‘Ïm~ÔvöÞŽ
-Æãæ3Ó7ÚŒïÕÖëU hœ¤Ñt5§$Yáÿ xJ}¼}ÿú–þjôgÀD¿él_âiå*;wÝm¸N§¯x}Gˈ޻¶›èS?† w¯¥EŠ$+<DZ;]ñ¡oÖ_üâàIendstream
-endobj
-1540 0 obj<</Type/Page/Parent 1367 0 R/Contents 1541 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1541 0 obj<</Filter/FlateDecode/Length 827 >>stream
-x•OÚ0Åï|ŠÑžXi PÂû©ªÚmµTía/Æ1w›ÚÎ"¾}Ÿí$ i{h…¶gÞüæóc’QŠOFù‚–kâõ$MRz‘§ÉšV›¿øA‡°°\Ü&›ñ«Ýd¾]P–Ñî€XëMN»‚'MiǧÜæÕÌ>]ï¾ORš-ÖÉ
-[¦m¸ n]b´^H#¸Óæü÷Ã-íùùvÕKé3Jh¬(H*ë+HÈ•‚ŽÌ°Z8a,ÒòÆú=%v'^Ë|{KªñeÍ–«¨:Ë’<¡w
-‡wR+:IW†hÖ1U0SÐ=«÷Œ²Äœ3r߸¾¸4†©Ùñ(ÕcL3”œ=àÄØeÉêZt‚ßÜÝÿ
-I{é,=LmÃKb–®€¥©ê|õpR²¾||÷ŽÂÔÒZèµ>VT—Ю”¶Åž-“…Ï\ †= fœ)Ú£âZ*ÉžÜIéõ1£+=KYÞéÎàÊ*ýH ó§3£Ü>Âþ6^Òƒ¯Ð—‡î” ó'¤ jm©OÔ ²+“JÀQšˆÀˆq.¬%80äÒ'% I‡VVu!.‰‚çH¬7PßòK¹àÇö{x)VŸÐ…\®Q…ªUÛ‚Ð>Dë˜ó¸ƒWãR‹r”^"$D¬öÍòÇt¾úX=ßXÏ%d
- Ī
-@±µ¶¢zÆž!¿ÆÂÂ~q$Í^6ÿ†8¼óŒ6ß¾hçsJWwï¯üÉ_3;%¤|ô&`üÉÿö{Æý,A)Û·lo:k©È‚©õF²cGn|REw­ Æ« Âé$z 3?t˜DX&ÒµtŠì7
-?Wn™ü3ßÖÖ“gÝŒÐ`&šª€0l–JÐ]ôò5S\T¿õÓ0Ô駌…ñ¹8òçö e\=#„êÜÉð/¼NúY#‹B¨à÷ùvÓ:*[ãµYâM¶‰—ìý˯^Ò'£¿ãEBo4ojÁò·¶¯oÖ˜åé­¿úþ÷nïn't•¯’|½Á+ó[ÿ×ÛÝäóä'ú.S¿endstream
-endobj
-1542 0 obj<</Type/Page/Parent 1367 0 R/Contents 1543 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1543 0 obj<</Filter/FlateDecode/Length 1451 >>stream
-x•W]oÛ6}ϯ¸@6ÌZù#i’ØCÛµO+Ð!Þ[€Œ–h›«DºüˆãþúKŠ–¬¨[¦ICñ~œÃs量Íi†sº^ÐÅ•ÍÙûåÙôÓZÌh¹Æ›«ëZV4+f3¬”“[±óÒÒ|QУ×j¬Òúòî3­¥J9oÕ*xY~¾Xþ}6£W‹K8™”R{+êú@Ðbƒ"ø-U)¼2š7sìùuŠýêâ²X°!‚Í ºÍJÐK{/i>o÷.®‹+ÞûŽthVÈЬéO­Éœ—£»‰Ü¼¥Û éÖÔÂ*w÷â% G{Y×ü™Ð#ž÷·¿ÑZ4
-ir¬ß•/I›=¯jõ]òÎ×ü"%ø¥›XÕ’Þ ¢Ï¦
-µäàÈùî—ðáä í¬yP•$02 yÁ±ê{ä%æa¥3Á–ÃÈ¥§¦&'íƒ*¥+è‹U8øg@ŠßV¡dz™dçTÉR9^¶à‚F8Vx
-œ¡ß
-äÍÉÚó‡A^·¡Ül¹5`¦ ¬ôƒ©1’?àƒ
-÷6|Rm6ª•ëÛËá¦QžìBvûQW(›,/ðY´(WE¬%®·V@Yn…V®I¡
-! -KuCÊdu°ÖÖðnIAWÒÖTñ€ÉÓꜞjR鵨uh+X Ù!!åacO@qKïPâÖš°Ù’Ñ’Ö
-%’xª¥)Ø4½Ëœö(¸›ôªú^HVÊsëQºR(¤ êè¿U‰€ºjƒÆ‚L”þaСB‡</AÐÚÔµÙÇPàZ“|Íî_€TÓ1}©I5ÍT´Ü‚³ìo+Ð!w³ãru´’2*£GCÐ¥i´LFåø0Wh;´'BŽ­Lyr^”_7Úfª’K4éØr (MíC] ªm%°L"&ŽÈ}tŽ;wlçœt/H ŽV’G'„9À)Ĭ™CøjÈØ¥Üù(ÁpnæT=Ü;ÑÜïöÕªpíž,‘I<°é§½Éƒà2UÈùÏä«y1ËXf²É9H—Q®Y«ÝÄŽÃ`ÿŠhÉmuèbð7Wõž¶»Uy‰³(½?´\›Ñs̵‰=5>³"G¢ÜYObW8¦°ûoÛ$<ÔQûpÞPõSËç¤Üž9èÓ³©^hCêei‚öm¸H›S^öÂ{ÕÈ‘ð'vã {réqí ^|ù;ªqËsˆ¡o;FVŽˆszšðùqŠ¦ÀcaK‹’­k§èíá׋ay?#ùëÝ ‹xQ↲3{¯
-Wgxˆ®’ùM÷‘vq•>ÒþçW$=çËñòú²¸¾ºÁ7+†üMœú—gœý5õ“Vendstream
-endobj
-1544 0 obj<</Type/Page/Parent 1367 0 R/Contents 1545 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 849 0 R>>endobj
-1545 0 obj<</Filter/FlateDecode/Length 1633 >>stream
-xÕXÛnÛF}×W PQ
-Ÿ\ع٦äÇ™(ט5µmˆfpÃÿ èMœ'ÉôßÂõq€„˜Š~è”VÐKú êßk'_û9êÊPÄŸ ÌCtR!#ÊP’P*˜Á˜•W¬¸Q´‡Ì¡ X±h•^&öÔK».à o”“Ë ²×ÐÓÚ#¼”®ÑÕ¬
-Ûï=ŒèC.y02…lmÞ8Tè”ú½ÔëñB³Y<!
- ¿s óka¼¨äëƒC/Ç¢+•ƒ9 Ù‘)&"ï¢òÒ‹T–etÉší­ Ùß¹:m&ƒlô‘†zµ¢'H(.Í1µ)r™p¡ï}ûBÔ²éùVäù@·>
-ÃY#rJ!ež×ÁÏy#]¦âAi9\(ßÚ@¢ ÌZ(ãV±ó dfG j <”Z¡Ì")
-¹Jy&3”ÎCØßæ÷ )…øÌ+—Á,Ÿè4µÐ¡š÷LÚmT“
-endobj
-1546 0 obj<</Type/Page/Parent 1367 0 R/Contents 1547 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 854 0 R>>endobj
-1547 0 obj<</Filter/FlateDecode/Length 742 >>stream
-x•TMs›0¼ûW¼[™š
-É•D\ÿû®
-ñ‰(‹i™RÙΠ¤4Kƒ˜’<Ãÿ_éö¤¾üüü6‹ÒeP'Hi)Bz:ž$­gÓsKqx,'ÑéÑ4 ®§Ñ4 2ºJ’ Gçeg8ùÎÓ3¢Wð'ÑÉQt>‰NΈfÙIgŸ›äñÛáoŠÙåׄ¢ˆŠz¥yFEÕ«RQÎ×Ü<‹’Óã|u»~¼ ¡Èjª™!f¡^Õ•NhEº¦½¨81Ã)îöÚü"Ö¹†+'JÖç8ÃêZ”ÁEñÈkŠ€ä!ËT‹jÅÁ2 ûÕ}ÖªÛÎ …³Ý%µ¯t±_ j‹†c—™]7)£’IÉ+Ò~ kÁÜ:#zî6 S­¥Ô{¡¶¾ImtK OZ-¤Pœ.wH1x(¬'ÚÑjúný°*>ŽÑ8†z€´fí†Áp±oîçðÃqrš¸bÉû¡m·Ûiã µx@èpp¿™ùb±®Y€ü©óÇ‹÷=+ÌeXË7X…”Æ-ÏÈ a¥ÝHÌ6º“£:ÿT,KÝ)5+²ÜZ¿ã–)¶å-6J•0â=óQ¼Š×¬“Ž6¼aÏB›3P Q;;Ìée,%‡…ÿˆS—h%=,*ÄViÈÄžŒ„Pû–O@ßµƒœ sgȃðLîÙÁŽíl/¶'q† ¿ø•— <ág®JsØ9Èj-ì\YúD‡ãÀ°¹…$~°· ÞÁ­®:ɱl¦¼ÎÇÝö
-endobj
-1548 0 obj<</Type/Page/Parent 1367 0 R/Contents 1549 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 861 0 R>>endobj
-1549 0 obj<</Filter/FlateDecode/Length 1403 >>stream
-x­V]oÛ6}÷¯¸@æ¶bù;: içµE±ÅC1Ì{ $Úf+‘žHÙõ¿ß¹¤$;j‚!À ÅËû}νÿôbá7¦Å˜&sJ‹Þ(áKûç÷_ù Ífq4§‚¦“hZrzè] Šã8š]]Ž“(¦ébŒ'MFóöÄO¯Ï¸Î¢E-n—Ñ’¦³ÛhÌo§Kè'{uÆí2~t{¿îݬni<¢õ±ÍKZg>$|IûïöâàdIñ$¢Æ:¥w$è“JKcÍÖÑ{e]©’ÊÉŒV*—¯×_{#Ž§ÐÒ8[' r¥”d4=ˆ",ÀãE08œLá5„a!Žè£†¾*uÊhD§HU-:^ ­]ï冩6¶é›’Þoíæ5JsT™´p¸B[2[²ò JáÃpÐ’›JENG%O|½E×eª”©3¥’ÞĽ£n/UV–Ú$mKƒ¡K¤®‚ªÃþl½Îܤ0„8X1¬¤RZS•)L üFKw2å7ÄíHä¹9YÚÂÿ½ÚíeYç²±+ŽBå"Q¹rçÙÂh(ÉÂI±“$¿#ì •È(¹Ð)×Kº4¢Ô¦”¤4,Þ3‰©PíÀµ-”9Ó1z©tfÒªÚù—Q-6ž£™|E”¥F‚]É…Bà{s‚Jü³í´½ è­¾S!Ò½Ò’6}Cqp2ÍLAÜPR"+å¬,‚é¸ç[êg I-’\Òçûa",zóýêÁgÖ?PjôVí*N‡£“r{_ V~³× ×ùfXØlÛéÅ>™—6¢Ï:•”T*wDØvøU» QŽÈl*4%g蟊ú"9£\Û‘»Ü r”“£g©ãRHå“q_’±ªBo…§ +Ÿ¾-’ˆÃŸ¯PÕô÷~DšŠ€µÓ±§vÏõ "®_‰® •ð ·¹<Êç]öÞú‡M÷©u9¢»V; ]¥¯Áá¹eŸëås¥¿Ù&^nkñs‘˜\¥n=\FiÇÝTcÆ×ÄTÈï¢8äõ똶׊êJ´éüZiÏRß}|ojÆ›ÏIܵ.JHØ%(R‹FgJC~µMO7Åù²—š:ø{𑉼5J|¬ûL\ÅRÃÀRÁ&òh¸
-@ôŽª.é¥@Ñ€6øéºyÝøÚÇÁœïYÎC‚˜äÎÀrOÄQ
-½cªòdúE錙ðvÆnŽG£Q×ÂYÊŸ˜§A5¾xÚŠªCÝ«ÍÜ©q ˜1½®›Õˆn›©2 öŠÖœ‘&~¼i:b„ù
-šû+ óïÎgªÀæ‰2–4€HoéáîÓýÝ3¢ž2¢çvÊŒyu`SÙÖ>gç @Xoé<kJwI†å3–.ð»Ø¹Y]á2Á} ´ÑÑÚÂ3 ôCŒ`µAXVÝáÆŽqÂ/s¼žìõ«p×·l63ì!È@š=áEÑ0È›¶ûm˜E:ÐW'ÂÇî½Tka2ZÌfÿ§«¹¦¡¥G´rç‘ÇT|ç“^¯QMN_æô#ý÷­úA
-endobj
-1550 0 obj<</Type/Page/Parent 1367 0 R/Contents 1551 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1551 0 obj<</Filter/FlateDecode/Length 684 >>stream
-xu”AsÚ0…ïüŠ½•ÌÄ6;Ǥ)·vÚ ™^¸i‰•`É•d<þ÷}²MÚÒ†¥Ý}ûí[~Î2Zà›Q‘ÓrM²ž-Ò­óeº¢UYà9ÇÏ1†ƒYžæ—÷ÛÙÍfEYFÛr­Ë‚¶Šg± ­œo´ÇcOžµ …ŠÉ÷õÞµ¤£6¯ž‚¥ÆjâC<6:ë^ÉW±§Þ¶Ô ®IE>èQÔ{‘^m_f Jò5ÔnÕüɳód =|":“<j6Á“†Œíhïlçy¨‚Ks ˆU‡”PéNìHÚáãc™ÝN|JwR²÷Ú<ª§ÚÙ@P;v"ȺápO»yWiY‘hHçIiÇ2X§ÑÑÔç(nwEA¼âm;Èï×t œmœÜF £à ´ÉÍæ–2 ‰ãH–ÙHJ3|é« ìcðï¡aòI§6ÿ¡¡7n†YE%{† ö¡Šô5ŽOÚ¶BkÛšøÞX“€Ô¨’´§Z(ÆÕøÎ!4Ò9iÉÂÛ àE€¾} FQXÂYÕʘÄp7%Ž&¨Œ4 ƒ¹ÓOËɈI‘–dzË×ýÝôpþæO­spJä^±ã5a¾à´ z
-endobj
-1552 0 obj<</Type/Page/Parent 1367 0 R/Contents 1553 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 868 0 R>>endobj
-1553 0 obj<</Filter/FlateDecode/Length 1648 >>stream
-x•WÛrÚH}÷Wôƒ«W™a›KÞ'Þõ®í8T–< Ò`&‘4D#Á:_¿§çBd‚÷RI¨ ÍôåôéÓÍ·£„úø“Ðh@gCJ‹£¾èãÉîãïG£DŒè¢?C*hЋ³ð-§éQr>Äóóñ™ðÛáD$á¿…LÆâœßáÌ$|Û½ÝíŸÃ¿JÑÒ]Júgèً׳£Þ5Lôi¶DÐÃјf™‹OÒÎÕJ®kUQr.è¡Òe­ËGš6뵩ê“Ùw7ù»Ý³s<Ë:8œº)ëÊdMZkSú£ç”$áè`„qôµzÔeÉF·º^Q½RˆÙG+iÕ)Me±d½KëN”²ÖEŸt™™­¥û­ch…JW²Ô¶°¤‹u®
-UÖ*c÷}ê& (œn´¤»i÷ÃÃÍ;Z(á¬NÞ½»N©”…Êh­×j~ÂI«6¥ª,2±d–!&SæO10ܸ•å,w¡ìùLež[†¨™!]™eš!’9-›Ò¡%s]?ÁÙè †O>kµ¥c€ƒt™æM¦ì+6 ®u£åP"ZšŠ
-¦ŠÖ4Uª
-€­;‹dBÝÜl¥P°ȲPª$k
-.Ѥ¦\6¬I$¦©i»Bý!3(¨¶T( ±BÇâ¹B‰fE¥©Iã/^`.|ktå’ÓÙcWÉ …Óˆ»¶5<
- ‰Ûs wºŸ€ÍQs5>cDð(Ë'ÚJÈ£AQãT(ŠW6AÀï‰$ ljëïÍ‚¬¡Ü^V÷|ÇàÂãHp˜Fyn¶ÜÅwSúã5¬Ö:Íi€ ¸âʳRùšô’žLã<g
-z\”·¶¼:ñî]ƒ¤vè7³EJ{‘µÔÐúayoè£â´ª’nrpÚ.ØÆ9†2Æ„‚†Jí)ExÚûºè…$mï}2žô’^ÿB\N¼Ù µ'¿h˜üÁ}½ÔMåzÊŸ½É 0Ýû ☈>Òð§cÉñgÚXAþ‹ªŽ??¼Ë¢>ýá_ù‡™\)H‘ç&z°ƒb+&€ë?07ÐüÁåW4˜c*xÆî[ƒ$tÃ1fLµÑ©¢´R‹“(â=ùk7/Ñqܱ‡Ø¼ "íÓñ5ÛÄr±çRæ`¶EëcÓÙ™úÀv¥1DÂŽ`ÑÌ2뺅DzmåyZ¢-¤µ[4æ¡þd‡Ø°ÅxÂn׆Ÿ¶ÐS!àS78¢í¶­0‰¸W€ë-¢—`æ=ÒWÁw ¿ç87i‹9q—hUíŽ~ƒ"Zð/2Ä5Å{»V©^úÅ)ÚãEiŸï>ÀǤÚÕ2l Ñ[ Ú]B‰XIÿW>>Ù˜F'Ö,.^£V¦–
-endobj
-1554 0 obj<</Type/Page/Parent 1367 0 R/Contents 1555 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 879 0 R>>endobj
-1555 0 obj<</Filter/FlateDecode/Length 1851 >>stream
-xWoÛ6ý?Ÿâ6 ˆ ÔŠ,Û²½`ÀÒ4ݬ™{؆eh‰±ÔJ¢JJu ìÃïIÙjês‹ØuÇûñîÝñýÙˆBüÑ,¢qLIy!žþÜÿt6Z šŒã`B%M£Ã¢ ÕYoYÒ|úÉÞhAdƒ‚£xÄ~Å’ý5va0îïöÖ%E£q0ïíÎYÕxã!DGS|»•UÜ[cw£þnoÍ» ×“í­±;ç°æI´€‘Ñ<†›%MàûܯìnoÝxÌz»Q„ƒ¢ÙyzÝÂJ—ð”å싼×[–4›! Ç½ÞƆ=n¾XŸ]¼š :´~D†ãùŒÖ©MlHëdð§jÉdª-R*Uš?î©É$©?H}nÈ”› QÕ#=æ…¤F‘HSûƶPQP-´(e#µ!QaGQ¢¥hð*´<ª¢P»¼ÚZégë·g! ‘ L&´¤‡z¤DµÚÈçdT) k–=(¦¢h¥Án›d$ ×¢ÉΉ¥…Þäzo÷nl$iY"‘)íò&{r®¨k­j³‘N5ìÔ´‡ dòF><ûž%.^…´p!F„&ÿåœþ»Ó"ïxLø\R)Ë ‡ÁÛ_5"-óŠ¶Zµua˜&6…<)ïc›ê‘wÑ4²!XZ!¼øVµÔM.ÍIi­TC¹¡¼¬‹<É›!A¤¼°5åü„à'/Ðô£7Û¿€Ovܾ÷Ý)Ç9¼h¾(T"Š #ʸðšOY»E:Rï ¶?éÎF«‘©/¾¥¤*¸ù%%—Èf•06ü`,çÛV€ÒAËsÆ\E;I•”é‰@]r8wø "7Íy@tÉäÃ9׆ٛF–„$•¹1¹ª WC)ÞN· Î6‘
-`Æ¢JUC ¯Øû–7
-EaÉpã´£
-%R>
-ó‡›!|ö˶hò=*)rÝ+
-¢J¥1{Xt¡óC-v—å˜ÐÀC0“%o)ðÈDOŽõö£\œUæzv€ƒ-í¸’i
-W¹cG±<ph)‡’BÑ€‰4*€§cÜcÐÀ䮫ì2ö»ªÜudAà9g‚
-¹:2… S£[i/ ¸1cÈ9v÷®ƒv# ¤AÒ–VÇ3¼2žZµ9FZ¾£= ò
-endobj
-1556 0 obj<</Type/Page/Parent 1367 0 R/Contents 1557 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 884 0 R>>endobj
-1557 0 obj<</Filter/FlateDecode/Length 1935 >>stream
-x¥XÛnÛF}÷W „Q
-S• ¢9wh†€|€‹Ñ‘«:Ù1ÒPƶ'<Pz
-ô&ø75®ÌÔA§œ=\úD·½àJ˜AÆÛˆà,?i
-Wƒ±tz.¼D®´6ÓUÏ»NøÉ©½WVhj¯00¼p¤'¸QØý>¦–ô;1½ÌLò€î·ƒòÉHÑH *¦4fÁÖp‰4‚4ÊÞÔ;±ÒÆtâ&sÏÅ^¾š‡ *\ä9ÐM®5Î÷©€(8–à#ð†ûLWûÐaB
-릮Ѭ(*°¥uÎÛAš%¹oþݤ“1xœ9÷:ã)|tZˆ•)mÙ”Â:Ü Ç¢†à\Do=1ü§<qeàþ×ü}» %r(ÈNC÷­ãû¸”´›;8´ž#ËɆw`ÑAgR|YÎçO
- „ìÉ b\ÄñÐåë"rsÊYﲎ´"mµ¯Î¤2¦hù0‡áC©•ð[ØÞß¼hcó>Ø„Ð |:8¾°¯’—¨ÜÑ ®â˜©ip¬cZĺÇÒÍýèÃÝË0e‘</y(7@Ht
-,Ë(wGè`?ó«f­*qàÂw‹3˜QµJç"Jl‹DåáÍtåÁF•—ÁFÈ „-ú>ʈæNHw{m!uØw³@qÐ=S$K¯¡‡¶ÐÚë,=`0´­lSJm/Þüªš»MYÚŠÙ7SÕ7íûNGÜþ†¤z_0\ÃhDj9q`) 1J¯gà5Ú^g¶ä¾¥[DÔx@CÓy0q²ÑÆ_Âð¨+2«Ò~âxüOÆcH´Ž裰'¤“Íë»_ØŠ³¹ÞË{Ìþ]ä­ñ
-endobj
-1558 0 obj<</Type/Page/Parent 1367 0 R/Contents 1559 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 895 0 R>>endobj
-1559 0 obj<</Filter/FlateDecode/Length 1645 >>stream
-xµWaoÚHýž_1—öT*Á†
-Zê;MO”i]üšË0 ¥Z¥KKh~¸ÇáÉåN扸ËO¦­M´·ZŽî9Š“4áu}õþj6[,׳“#™‡Y¼,b­N¦vþþºúèŠÎn†ŸÏohðy0¼¼»<§‹«š|Žéúf8šœßÔŸÝ=Ôi
-ÎN¦Îêêâ‡XÍöhüÍæÂÐË"²eëâ£ÙìðåÊ„ñgde¼
-C™çóU’<0ÑM¡©ø2(l^@ª:VmŸÓï ©; ¢(Vw4’k*;)§ûXP±TiíÁõ»” ëYMA7z÷@‘œ‹URÔÉÊ…žÏe–“H*«•ò…Èн˜+Q¬ Í,Mv·ZžÞz¡Vó]'5žÉH6Ïói®“HfÀžäšä&Î !V.—m("‹8/ç¾íGE.bú·È
-½+ä¦`dìdWþê& W.1DSXua¨WªØ¯ŸÉB⡃5¥ËDòaŽ:ÛÏk$‰Ð­/$sÂ2™ê{®Gld®Œ¦鳇HÉ„«gàá##Ñks¤
-endobj
-1560 0 obj<</Type/Page/Parent 1367 0 R/Contents 1561 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 900 0 R>>endobj
-1561 0 obj<</Filter/FlateDecode/Length 1184 >>stream
-x­VëOãFÿž¿bœŠªÁ¯„<‚î ‡
-4KÕIýpï†ìÝ>|Þ5©|g×q@æzУ<lÏüæ7¯ùÚI Æ¿Æ) FËNÆŽ&a
-ÃÉØýÆwÉ`å èîãú×Î`< ‡$C‘0LÂÉöJÀJâïá³âÕÍ£i‚Z-'Y':‹a
-I&øƒz“1dùþ‡}:'–kÕ‡Ê0
-+]‚]3 ìŽçH“ zåo%W–•?gŸ;1$ŽIFʨ®¦÷;¬­Hš„#/òLå’|a`*ŒÃ†9»¿a‚ÄÂ5£ð OÊ=°å€ôV¦…º¸>¿ÊÞͳˆÙ<ò‚9)B¯×}?ÏNgŸ(± ~é}ìÉ=è}è]ön>µ/3Q´î]ŸÞdóëlÖ5¬ô1ÅŒKJÛÝÊî<‡ß+€@®‹‡N^@Ðp~üŽ\Ktæ”>ÍXý¨ÒfùZC· ÿõu|üdþ$Gáëõà/‚:‹îH™Bka4£ ý®™×€ÊûY|$~˜õwÁš0½T³¨2eäk*2D.‰gî‹-
-âTGÁùdSVWùº/¢uA"+‹º  ¥a@züSÒÊ:&}£ ¸Xü  Kù…òž%ç™i©)Œñ4{Y²!ù’䞯â qî¿"J-F[íôMÚƒ7iߤ}ø&íÑiÛ“íÇ´÷àJÛúLçn^pø¯£Œ¶ÒSÿ³Ú|¹ s­V-½ö5|Ô•w'aÉlU*<eX–•…s TÃhã&
-· Q&lƒµ®ëô½V¬9ΛYÇî#vâÑÙ’a=W‰›r8¶Óð0„w,
-WÜÙu[¢Ñ’¹Ð·;Ö=‹¯¯îý§müXôûÈÑà>çV:²UÁ5¶Vaª’Þ…–Û¹–›©6дÏ>lÖ› '
-–ß\15=ì=¬ÜT1ÈXhú¶Ä£À§ì–)†Ù÷æ–•JSÐO+¬¶æ¶o׬É÷É
-ãحܯ9†ãa8MpMGùÉÔÁœf?:ÿ
-endobj
-1562 0 obj<</Type/Page/Parent 1367 0 R/Contents 1563 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 903 0 R>>endobj
-1563 0 obj<</Filter/FlateDecode/Length 1518 >>stream
-x¥WÛrÓH}ÏWô£S‹ßâ /[ÜR»@D±yKc{@šºÄköç÷ô\YqŠª
-S¶f¦{Î9}ºõýlL#üÓbBÓ9%ùÙ(á—öããõÙdr-i>]Eʱê2šùo}âõ4Mñ9[.ð9Á¿RÒÆ>˜-–ÑüÔƒéjŠ3O올8XïÁËøìâjEãÅd;_Ž)Nm’#Š“ÁxM#Šw’nò¢Tº®(6&«d}Åαw' 䧃£Å5VSQš{•ÊŠ}~ó7ÉﺙÔ5™ ÕðEéÔì+zÓ‹4¥[Ž&KüüC”iDW¦¤ÄäE&kɱq<lˆ¨ôÆ”¹¨•ÑÏ D%Ó›kcnsßË5Uª–$jÚÕuñüâBù{E•iÊD⤭Œ´¬/HT´—YÆÿ#¿^ÌÔ$MŽìmTR:ÉšT¦´WõΆ Ç’;–RUÕ¥Z7œ$ª*À’ð7ìA£³C
-è!5¢»™–‰¬*ÌøŽI  Ã [XžHÄðk™ HªZd™“X’).–ýN%;/™u-”&Æůì!4°Ì ÿIäkÁk‡Nít
-Ùg¥åÌ£äà0Jáù6*“Õ30 iÀsnÞ_‘ÿ‰µÀ…ÊN‘ÙIKÉÆ´>8[z,©ŸØEßþ:Ž«Éº?W“€õ:âkBìMP*j±f{v§ %Q. Ž¾7¦—Ò½Ýë@oãø–r™ì„VU^EôF$»SAì)ì#ö¢m¤ì$ˆª2‰²x}þø§%Žu"’º¡ñèÌk9ìm¬='O1|ëEfi©­â"= ¯lµOÿZ7·×¾TÇíš
-Ï`Ú¨,µa.pq¢Ž8Ñ¥„9 £ûÇ
-¸ä¥î¢-ÜáÆP›»chîÝp@ÚôZö
-W˜H‚Y…ƒ†.›áÛ_âQá!
-Î3põò¸îU˜||+Êðbý-þYÊ
-endobj
-1564 0 obj<</Type/Page/Parent 1367 0 R/Contents 1565 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1565 0 obj<</Filter/FlateDecode/Length 1473 >>stream
-x…WÛnã6}÷W ò”bù¯í,PÙl‚ ºé¦‹-°î-Ñ6JTHÊŽúï=CJŽ­MÛ\lK"gÎœ93?wÔÇï€&C:SšwúIŸFƒ¿N'xâßJZv>Î:½›>]Ðl‰ã)>d„Õý>ÍÒSâŸó„È–iª•,üºu®’ŽDA—YvoUá¥ýdÕFÚùéüÝ=t¿¿z7{ìô©;è'S<ý»¾’1_Þ0ylñúåÀyC"õ•ÐzײÌ
-\À[!rI®©$YYH¿•²h@ž'Cw#¬2•#W•¥±ž"™$lºV^"4+]B7Æ’| àŒ¾©"3[G¿ÎH©®2&²ÀtðœÑÉe‰¥-g_„“ö›…YK··Øþ'mÞ’é ÎöV/ÞS
-:)ï¹sÊ‘å'Ñ<ýhð¤v9'#Žo˜„‚Z›-gì©Àûv-|mÄŽçb#iš¨*µøX"rÑd/¡K„ê|…¤"µÙ*­[qZ$)_à™gœŽÆj]Ò½5¥´^»L mVd
-½{%4&½h£VO?§XZ~Ÿ+•>‘6æ fÚ~G¨+·s^æ@¾RÎÛ Ï¸Êä‰ûüË—»ùü!l˜Ï¯*k¡»+Sxkôƒô¸?Ïç! ùüºØ(k
-–g4z¤ñh”¹‚÷:rsÀ‹Ð[±sT9”A\ŠJh¶Fþð‡à ñ7Z‰ð¡Õ`¸E ² %ÒÖæäH]? g% " „>›-`Û3zùZ7pT¸-‡5&©€Þ nª9E±S´ª©8è7b&µ šE¸ìJhVÜ.ÊSÎäÌ~®=
-DrÁ8…Âô²,c»@8ZåÊ Ï…+B3pšö¥%8t’'±BÐuÁÓÂø5cn~‹`õQvPÙï{Ó–„¹MgÑïk¦j-•u>aû½› Lê~y>ŠZà=¡OJ¬
-ã”Û¯CÙóyÑ=ïdžÖ 2k²*åèãâCÂ:7 À½Ì­Ñ ô¥V•/ðY7L.ªUŒ†‰-mÝ®·
-ŒyÔbÛ ípg‹°ãíu¶º´&Ž‡»M‹âƒ¦VºhÐ"«‚K©àF„¬ ‹#‹íšŸp­YˆËÉ °–ﺡ»ÞÞm†
-J½±»À;Xldõõ錜 bÝ
-ˆhÂ&þp +B‡ª-Ý_ÅÇL)Ær/$ú*6*ÐyËͲ°UlÍA‹òƒzv¯9ÀI!õò '=V(s,ä6 d¹Ê2œ™¨³úüc
-õòjßU‹Ø:“:`Ib®ˆj©4æNSÓx+¨®ieaA J¾Ä^@'½–ÓÔä@š$ôŽHp}3Ç}LU%³Ôí,Íà»6€ÈbNcŸF«@›á ˜ h®4rù"ÁóeLSn@•Zn8ÃͲùév­Òuð²¨tN˜t@ªœÆ&1é%z&/aåÞp0Ïu‡uó˜Dô}¥ÍB迳õtR‹
-¾Û…¦‘:qq¸¬BWb
-’ûL¶Lèò™.£Ù.­01…]ô\É
-e‚æX…Vr0!6tióc ]°•L ‚ÍâMèßC¡òL küD= b½
-Ô+)àÔ›ÑÔ  ÃGa çÍ
-ßE<Ød·ÙÐôù[ÃégÅh2J&ã)N
-<¿ð¶ëYç·Î?¯O
-Mendstream
-endobj
-1566 0 obj<</Type/Page/Parent 1367 0 R/Contents 1567 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1567 0 obj<</Filter/FlateDecode/Length 1542 >>stream
-x¥WmOãFþί˜rGïNº8/„hAâtwêUªŽ–TU|XÛ›xÁöšÝ5¹¨êï3»¶ >hO*!Šï¼?óÌängL#¼Æ4ŸÐþŒ’bghz0Šf4=œãz‚·‘´Üy·Ø~Ñ-–˜â"%œh‘¼¦æ¯2ªt”è¢eJ'4¬­ƪæ•¡þÏ÷*Ú³o7;#ŒGÑ!ÔtÒyu×ÉÒcé;6ð_Ò¦xl»è¤ož±}WËZV¢¶²ÓѨ°Áÿ$˜·NWÿ[…0Žu ?Ni<LfœŠ QÄ‚l¦ë<%+’/¬.EœKJåRÔ¹³´Ô†\&áj*+Y¦ª\‘.i£kCvc,Èm*ù–âڑ¿-_¡*¹Pæ^oDé"úÄßR©½\ŠýhÂöë’‹e.Ž5R&î%9Mn-Åmc–Èu"rä
-æÒ¥h‘u¹³m"_‹ J–užoÚÜ5öl%µT2¥J¸¬…´oIX¶C¶Hc*ĆÝlÜðŒ‘‰£ó³ÅOt/òZÚ¨Q:™ESâLúl @¡ s!·¸ˆ%y Êô-§g­òvn%Ž"w•6ÂlYµ!½ôùãt ÙŠ k<{ðZ•½€øàeÐnì5<H8;q?ÀVSYö@¥S…$æ0–KQ" ºFm8M¿èŠ¥ÀÓ¢ò¾*l¢ó³gÞ{ íFú
-ÅÒI¢J~ OËBå>Ó!Y…ZeŽ–
-Žæré np—KKŠã\º D>œžño .m–úœn·<*“J¸[¨"È].\Y±4»
-l渄ÜÜÔá-$Sƒñü`JW¯y1¾‡öê n
-7{ß óçVE£V¦Ïéx*Â΀ü¢žÛtÑUô*¸÷
-À›¹®i8ˆ5jÐl2ë%³ñRA½‚b,X…²Ø¥Ú•˜×–vhW\îQDE:é5¬ÔÒL˜lí(ýE®õ-a3à>|ÌͤöM‹= 9c¤õ[:¶‘‡Í–?žá'Õá>ÍæMk_œýòîŒÎ¾áö½Nü¼óqº­À`>âß[¯¿m°NçÓh>;ÄD†ÈÑ„5}Xìüºó©UÁendstream
-endobj
-1568 0 obj<</Type/Page/Parent 1367 0 R/Contents 1569 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1569 0 obj<</Filter/FlateDecode/Length 1323 >>stream
-xVmoÛ6þž_qß”±üZÛ P )¶¬V4[<  ´LÛL$R%©$úã÷)ɲ“¬Û’Å{yî¹çîëÉx i6¢ñ”²âdh:ã}2Ÿá}„+i~˜ÌGéèµÞOÓéñý‹“þÕ„†CZ¬ác:ŸÑbE°?Ð";ýÛT” M_+•=ä;Z+½"SyRkò[I¥5Ë\¤=)¿¥©,n*í•ÞÛ9/‹”¾¬½ÔTJSæ’¶â±=WŸ‚%eß-îOÔŽübuÚ—>ëK™(á' LK[(ç”ÑŽŒ¦Ga•©\ôˆ e%]ʆúWç4œÄœzãaŠ¯«Óá$¤ã”þÚ
-Hëheè:õS<¸£7b0Z *'CΉ—ΗV»„ÓßXQ7”meöÀ_œ”{t
-)ËgQ
-m9ꈔºx» P­Mž›'η•æ
-iUƘT(Ÿu™P$ÿvz%ÛŠÐÖ|Ì”H+Îp0扶»r+¡Žw§I/¹{G
-aäöZ—–î¹”Œ(/#ÇAö0@10¡ )ñ5.ÛIVÚȱƒC¡‘B=Ž^=þyG7<S›©£D¡  î5è1î^Æsá¶À=
-¸³øFV|£ƒ©.ð\X„ð½jñ{æ^³õ>ÚêÞï!n”C¬Bkï+Ò™ôŽc
-Y”Âya10 ‡ë0" ñ€>CSm@pó€¡O5§Òé0Ò¡W±ðÁv€½`Bpã*p(hm륕Nn³'æXmXê büvóG»!Eγ‰$/3¹•bõ¢ù!î<]@›3¯Ù™:äkûJ˜AÛëe錰f¥xV,g0Ö3„‰ªïW®7"?Â0äÖ!äÒ[',zß‹¼Ãû&rÞ%4ÍmM•¯0Nœ Ûë_?ýyCNm´È öæŠ%?Àó–o… IÇ7 D¡mܺQúWózN°UÏÇ4Ô›Ãíåç—hDsÏ°ül2¨¶öa/Š 2Å*Ž½Ù
-endobj
-1570 0 obj<</Type/Page/Parent 1367 0 R/Contents 1571 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1571 0 obj<</Filter/FlateDecode/Length 1591 >>stream
-x…WkOÛJýί© RbHÃã-EêUK¹@Õ[ ]ic¯ñÛkvפ‘øñ÷̬M\«ííCrœÝyœ9sfò¸3§þÎé耗”V;³d†§7É‚ÇGx>À§)ßy{»³qBóÝ渲<ÆCF8>›Ñmº7_$‹äMBÙy]‡ Õ–lš6¼¾ýŽ« šÏãÕéÁ®îÝÆþ…BSe} Üµ>8L}OrlN35¿Hè›m©R*Ô“rñ»]MèI;“á
-ýkZ+O¹ukå2M8ˆMç‡É;÷:PÛ¢µSM£)gÛš-hJmU)~¶ì'¾ËM©'´jÅ<ð`ã/ "r[ÉU W»¤óv°Žðvaœ"i¡Ó6[©äÐÂÎO_¿?ûøñcr¯ƒÀ€³‘3÷EˆXÐc«[Їœ6@DÁFë1EooÎɺQ¢¯®N†‘|cm©ÝDn¦ª¦ «Æ:åL¹!l³Í-~À륦žø¼¦,iű¯*pí1ÙÐßœ×6ðéˆJ–ЯOùÈþÅŒNz2€8ŒQÙ¤4½ê ”xâÙ!s–|ôÒ®»uL ’Ô¬Ð5
-âÜó uƾÕæ,¿n븅Ø@~Ð$Û阔Š¸ae-F‚í[ËCj0E»DHe€L82³]¢¶ÐŽ0¿‚¤Þ¤Î4A|™KÑø<žªlih±Þ×-sªFxÍ9~2©³7ÀƒR¤^‡„.àZÿPUÃ;%¶Nœýjê“7#ϸÜ3%òëCéŠ+ªîèRUúùnïZ6Çw¥Iî^_AN¡¶Fã²ò’ÕóYöÄüËžCvá%ˆe×^Ȧ…µ»€OÑ»àÊ鹋4’‘ÁóWBýš¯xMß y¡æ¶äál'„Á!z(ÃïG ÄiÃ5ä=`ÈsL tý{ΖhÞÕK¢‹«¯
-endobj
-1572 0 obj<</Type/Page/Parent 1367 0 R/Contents 1573 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1573 0 obj<</Filter/FlateDecode/Length 671 >>stream
-x…TÑn›@|÷W¬*UI¥˜‚M0~t”FêC«´¡}<`m“Àå–¤ôë;wà¸r“V¶%ÃÞÍÌÎìÝYD!>­´L¨hfaR’®ƒ˜ât…ÿ ü:¦íXã y©p&/âå%
-µ]¥…ËwÙ=öÇEãþùb…ÝçÙ¾²„¯Â:“×Ü앸7½íU]T¨ÞrIù@\Éž;,à”lkL]éÙÁ
-¶¶½ˆ{¬ôÖt’Êh˜Û`EuBfëd„4–ÁÂѱîM>R7êí‘ÄVúÁ¿q‹¼XáŸBÛªæ 2 ¦ï¦>;²UÓBvi€¢íÛÖtrB|4( ï¦§F ¤}Š!Ö
-NÐÙ¦ãº(èÆ·C×,\¸®ÎýÉŒöã™/#L:ô©¤mÊG¥ ܺ<àÒ+|6£À‡ù5óœE(ÝA‘ìa]*½u–{1•«éÑ÷'„å={ã€
-Ó4J—oÈ´®ƒ;PIìžëš¬еqà#‚*
-Ó{é.Vvpô­²^€Kòí· Ý¹è&
-ˆÉ#ŸÐŽ<c
-Ôºc>±0›J‚á·#›²ê0§¦¦¾ÒéÔG .§tI‹d:~w›OWL¤¹Çz„]ô kñähæ‡ óU¸~æ^1ñ
-wP’â‚Âì¯/ʇlöeö?õžµendstream
-endobj
-1574 0 obj<</Type/Page/Parent 1367 0 R/Contents 1575 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 910 0 R>>endobj
-1575 0 obj<</Filter/FlateDecode/Length 1794 >>stream
-x…W]oÛ6}ϯ¸ðK QbÇIÜ}h—v+†4[c õ0Ðe«‘D•¤êèß¹—”¬(†¢A‘÷ãðœs©¯GSºÀ¿)ÝÌèòšÒêè"¹À_úã¿ÐÕ‚V4¿Lfñ¡¤‡£Ë«¿¼š‡—‹Y2Oüvz5å·³›ä[gó«dŸø-œ_.ðn¾¸Áï3ü·šò£7Ë£ów/ivA˵]ß,h™IIøKzüëV5^[š^%ô ÓÖ~O¥þ¦Kw²ü"[§7aëÙåå.³c¬&ô¾öÖdmê S‡¥sšNãR©KTµVäÚ¦1Ö;ò[”dÊÒìŠzC¦á½ø«‘›Ò¬UI®Z'©©sj”U•Fq!ú½ì‚Ï“9×ñ9ìø;¼Ÿõ燎ï]ìçÉþczEŸÝVYý£uÚ®Ž3«¶ô«“xü¦íÌTª¨¨ÌÅÈþ®9ðŸ¥VNßÈÅêû²+U£ô 7j©uü[Qã÷Jq·¤ê¬Û’™´­tíéöþîõûÿܽ½{óöc²õUÉ%_ÐÙ” ‚„*o-à³´VéãÆšq2íUQ:BØP4U&ÓÔõÐx*êÌì
-RÌUçxL8 þŽyÝ`ºÀ÷ÇÍzåXÀ؛ԔTëa$$zƒ‰†Ö¤îCU€ë¼I0€p„·Æ±2HiªÏ&bõ YÁ,nžwÁXÛë‚„ó0¹,ÄZa”‰ÈÇ3Û°ÚP‘i%Ç4ÊT8F Ü©£¹{‹ãÆ 0u-U™SrçÙë^xLK–#ÒMBç¡ú ÏLUGþÓGõ/œW·³n|ñÖgMò¢3ÜupƒÂm(!~Æc?®ySÊuì~P?(ˆ˜õ¹5Õ“H°Gyž]ò¿ã3‚zn÷¬*n3Lä05!û&¸Óg'R®ž{§€íê¸u\ŽâÜ™O¼ÕlÕ‚+Nsÿ`‰¨Þ!p‘ïe[?Ä’úœÌ™¶àÃà,6[ÈB¸ÎHze|ÞQÈSî#}<S©ÜT 4Bâ–ùـþEin|:œ x¾ °¥G4#ö˜ú©3–7mÄÍ÷¨ƒ<tÜF½aîp³|]8X: :Ò~.£ ÉŽm¯¤¬bê*eEgÍÃõÅ—Ewìú«cÜooÅåj°C±EñÐâꚦìnDR’LÞº:‰©:IÜ?žB±;©~0$lø|ÏûÙ ÑaÑ Ì°0Ó¯N0ï½×<5$PwÎÝ}³oèš½ù¨Ò€É2ˆdó3ƒP™¨`u"œíÇ(È 
-¤ÁG w WÓhTͶ¿‚@äAO„ò;“†aw(UÊ:%ÄÕ]7˜ p»x¹3ŠÆ>¸8;ùÎb/E
-ÜΉe*ן¾è aZ¬1÷¸ „kè(/ö2è£æ9ÍÝ a/?Ø"> F
-'mÑ>GûÛa‹CD]¸iör\Š
-endobj
-1576 0 obj<</Type/Page/Parent 1367 0 R/Contents 1577 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1577 0 obj<</Filter/FlateDecode/Length 1049 >>stream
-x…VMoã8 ½çW>Í
-âxêÕÁîk}ø óœi«0¬1Qܘ¡K…V±õúJÄÕ½q^cbE|OÐòØm<%8øŒÈ²˜¡†Øáðø”x”a!L¸£WM‰É»ÊÔÓHäþ¡b@é•Öš_ŧ¼"a÷?аBZU„äŽ% +“×fà5P(ãyIÁÖʪ£®±‹)`’×(+Úý„ðä"ųÍÊ=hzAÎRM¡³™(þæq7¼Q¬6xÛØÝÒï²wŸ¿<=|¡?½û‰Dß\Ö2¤b±ÃëñÂõvyÏ{úk©šˆÖ[ý†Í<Œí^Ýíï¶wév³Ã› lï·üèýâ¯Å
-Cendstream
-endobj
-1578 0 obj<</Type/Page/Parent 1367 0 R/Contents 1579 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1579 0 obj<</Filter/FlateDecode/Length 1618 >>stream
-x¥WMoÛF½ûW zrP[±dErzK‚0Ð8n­ =ä²"—âÖä.Ã%Ũ¿¾ïí’M-ÚÂ6l“»óñæÍ›Ñ׳¹\ák.ë…\¯$)Ï®fWòjþj¶”åÍ/ðSkÉ‹ÅÕb¶š¾x»9{ùþµ,®d“ÁÖj}#›T`ç
-O’ów¹ª]Ë|5“OÖdF§ò‹Û9ëe«›Nk+ŸM]çånóbóÇÙ•\.–0q®l*Ÿîn—Ö»ã©-òýÍ×Ñßåõr¶àq8˜ÏäÍÖ7µJšxl)óyl±Fè8vk½«Ucœ—EôôÁ$µó.kFáH“×®Ý墤íC/ºäŠÑ#ôy˜T×HJɹ+ã¦ø¡Ïd~ƒ3¸£ƒÛi«]ëq±¬Ú†yi»7µ³¥¶—ÌÕ0T8<oL©gòYKUk—1£UŸÑ¹tc<†DÏ/p¶Å&ØäZT¹U“ˆ|kÍ‚ªUé9)ñ®@XH±qáêÓ¼qv[èaEç(æ­P&SVx·¸'„»'‰*
-!÷E»Û)•7-BµIâõ.m ,“¸S%2ÑõÞ$øÝ™&É$̸nT³‰ÓÔ•
-à#ÎÚ‡ãU¥0†QWið@3ïžf<ƒÔû|J•äÆ¢›Üx©ŽKª}R›-’fH£€µC­ýÁ7º¼ý­*à›5æᬵ ‘U…ib¿wbŽ ð
-z ÓÄÝuz¯kퟦ, Ý€ :ˆZì·!A¯™mhCGÑ?°¤rLê”äÆ–Búk•òâ<ÞÖúkk(¸;Xír)H”•B+Üdqmå¶æÏȲ^¶žä=ñ<àT’1âìJ !¤CB†ÜÈ~@§SÃvÕü®j†ËÁÏ…2[k-¾Dc£k†Xb€˜É'n›^MRÜmŽ†©3i-^ù>éÇÅåzvÃY&Y¬Öߢ^õk,ĨëÄ›ÿï†ïû:J’+»#gçÿ±¹¸™Í_Ÿ0ºM5å‘C8ú
-T5¬#•Úz2Ì{Ä¥sm‘öZpà\ ¥T[ Ç‘ê!úMîÚ0ŽG¢Ÿ¶U1Œ.pr¬q Í±Ã•'Ç{KQ.B ¡“âˆFy(>ñáÝHF"?r©ÒÓ…ët ]€u„³n`IlAú Ür£;8ÍQG3¬6(‡ºÊûG“ïåd´+D¸HäT
-Y[àK]n"²SØY%®3ùh±˜4Üðb;•F;Fy
-®sbÄúOL‚‘rÈ•-×%R‰kTœqøßÝ>üȈyrâÅ]ú½tSl¼«NdÒÈÛ*g0,óä%G²=]Ü59ùËX 1I@x>{Š<e&…sX°‡c†M¢ù£úqÆ^_[Ißrb€©{N ”Û?>‡
-úŽ})Èï±ã ñÃJ¿A"ˆtºV0ÚÙLÞêD!¸#esDV¶¸G?K
-ÈsÑï0´öº/ç{£Bìwa[ˆa‡e|’0¶.®Æ,+#x'…ÙÖª>|yÿ;†#dXþˆÏœh1ÊG٬ٵ…ŽX_aÂÚ¦ï͛ӧ§å«?Öý»Osà=i zߤÌf¹^ÎÖ«›8‘^ßðÑÏ›³_ÏþìÑÍendstream
-endobj
-1580 0 obj<</Type/Page/Parent 1367 0 R/Contents 1581 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1581 0 obj<</Filter/FlateDecode/Length 1670 >>stream
-x…WÁrÓH½ç+º8…ªÄ±ã8GC–Z Yb
-¹´¤±4Dš13’µÞ¯ß×3’ì(ÙÚÈšéî×ï½nÿ>™Ñ¿ft}IW J«“édJ®fø9_^ãç%þ8E›ðÁÕr:¹|ëƒËŇÉü­–Ë×>®O.>Ïi6£õÁËkZg„ÀÓ)­ÓÓï^9OÖP](ú~ÿå'UœÚ(J9<4ÔxE÷kùË›Œrg›-®”'örpO­mÊ,¼ùÎp­wê]¼,¼5y¿þu2¥óÙÒ[g§k9!ק…m mt‰›¼ÅM\Çë à#•Q²—Ø™­X‡L$YGj§ •6dzZÎR—,]cFa9¦ôóü‡6™mÉ+ï5*G |¡O÷r”cº
-$ ­èúÿP6yÎI©hõâШÆ;›5¶§Ó‡ÕÝÓ{ò{$] ‰º¸ã˜;Í(ü@A¼ÉfO8MÊH¼Œx»-»}ìÎ(hÊ[Nt©ë=X^î^‹€8^‘Ý “Îý°gËÞ·Öe¦ºU`zÌÑÀQú|ôŽHÅ×½¯zŠ90)máÓi'õWÍ~zúsñù†f ½xÅ9œ)(`¶˜\Mf¨]®júåH‰Ç¾r~)¾rz$…:¼,øÔlΨ.´QªÇ£‚w(Åú[ûZÊÆ ‹pz™cZ¥uƒC§;ªÁ?F·Úƒ‚èbƒôÄÅ
-Ê” ¬pü•,Ê)gŸ˜©D]{À-08¢{\æ+E , {hÞ©Ø––÷B¬ˆ|«Ð¯-,d€å&j0¼`¥)$ëX8êÐùMÌ)RaØ÷¡û™°…O"=z9Êp.³uÈ*´
-v€a¤GùŽ`íyÅœ!XŠÊd(Ù‹T‡´# åQ$éA2`”Ì|Ì|BbÌô’ø!¹Ið‘l&‹~È´ÝéL 
-Ô¹ŒAÆÌ…Õ2¥¥¼‘ÎxŒY]£PÈ„VÐ98€ÉgÀ…êC7ùOJ˜RÙËN)cU¡ÔÔR&$x4ªñA76;Uz›>ÃZ†u#–̧~7 Kè ;r
-­ERÃ'bR¹2J¤fº@xÿø: /õ$)# ›”1‡c^â`ȼèés<£Ca¬làzž IDQªÂ±¾~`†î)Ÿ:àPS’u c|ú†ÎŬûÜ ìI0‹ú„ÌÞê°ô÷+ä¸TÂÓD¥½bçÏHm€!À ~˜ˆÛ£Ñʉì°ûìØ…•ã‘«„i ŽR¥ªDv6—©Ôfªi"{*Ö¥ÈáÿÉñîñÛça&vÖtàb@Tú]YTЉmÓ©2tØn¥ÕPÐa†AXº¼Ø|·aŠÔҲɄG.bY±á<´ëL:ˆãÅ0BŒ"v¶°µ¶Ä=Ð@)nœ¸ ª
-1Ä«í^«2ݘ›a“ÜPè\tUY…{€£ o·µ˜´cª÷~||ßz
-½ÃN JqÊ4U[?L̨§°DÆâE›„A%䀪
-šlò0^Üaå™ÐÇ=ÅMÝ…'¸½PˆÅiÅЖ`Lrqðø£·¯ílpƒŠ·cÏ Þ´>žØý1| @aÆŽî>|Ϲø¼ì,w¶ÀWºå-fSq€ÇÕÝÇ•¸Å/™Ÿ·6E‹°&ˆJ¤êóþõóëé¼ÿK×üz>¹^,±žá›9úÇú䯓ʸǥendstream
-endobj
-1582 0 obj<</Type/Page/Parent 1367 0 R/Contents 1583 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1583 0 obj<</Filter/FlateDecode/Length 1828 >>stream
-x•XMoÛF½ûW |r›–lGvrsœÈÁ®[)hoÅŠ\JŒ—\fwiUýõ}3»”(ÊAPFdjw>ß¼yô÷“)MðoJ·Wt=£¼>™dºš]g7tswËŸñã4•''—ŸßÓô†%®Ìîð¡ ŸLh‘ŸMgÙMv•Ñ“ª5͵{­rü¿©B¾þeñ Woh:W/®nqõl±Öo>'ëèi>?§Ê“¢R«Ð!€°VŸ´N{ÝàcCµj¶ôõéË_d[íT¨šù­ºö} ¤Œ±ÏÞ't1½Î®Øk<€ë¥u5î؆|—¯IyZ[„ïÏaº2¸_)¯DSPçµ;¸,-5*ã­yÕ•ÎÖTTe©¢û´Ë5‚úŒÔô?ªn>Gn>À´2¶Ñ1u/x&AÕjÛ[OI¸° ]…mI¥Qc·eeðÖ!@äPpcseH¾‘JetOì‡Æ”•ó¨c@IÛ@H9åûFD£”%¾3¤‹*"‚†rÛøÎÀ,=}™S¡‚Z¢Ì„~WÏ}zšs¢¯è
-$ lI©<·FL7]-se›¾¢ý}{¿®ˆi™jé”ÛFû˜b :WÍÎ
-°–ljŠy3.U¼_«|,ÈuMƒhG9ö-ay-:6R
-‹oµ/]+µ~ ¾%üñô¿£‘L`”û²YWàIpf¾„jÓ|ضlxÜ´ª.ÎÅP¢> î´U¨BqzhC @D\n/)>¥‰‘VY&«®ÍhÁsÂU¬Æx‘}«sæÇzż[ƒž…„5e«0·p˜0Óz
-R…vË&ñ/Ï4vÛ–´ò #ì}Þrý:€å5¦——Aô1Ö:Øà€ƒ
-i6X÷"‡øDZLJ1B·æ/x¸ç«±rwI¢Mgø{ÇÝ5Ínïø¥q~ÿøñH²ß¸·ŸlŽ—¡$ùÞEüâvòžÏÿä 7³»löî
-9᳓ ÛøuqòûÉÏ'endstream
-endobj
-1584 0 obj<</Type/Page/Parent 1367 0 R/Contents 1585 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 913 0 R>>endobj
-1585 0 obj<</Filter/FlateDecode/Length 1790 >>stream
-xWMsÛ6½ûWìÍÎŒE‹’-˧։ëÄmóÑX÷™DB"`P²þ}ߤDÓî´£IFÝ}»oß.ÿ>JiŒOJ—šÎ(«ŽÆɘfÓY2£óù%¾OðÏJZ…çWÉùk¦“4™¿ò
-æ+šLçIÚþUÒ}ðÎÇ/]¿]ÝžSšÒb…hgóKZäÁò˜Ù‰±¹´ -
-åHi/íJd’*ñC:y®ôši¹%ÑøBj¯2á•Ñä¤Ý(œ\KJ/•Îi#펤p»SeI¾WeîÈZÊ7‹Ç£1Òi2A'¹Ñ’à5ƒmâçg·Hhõ¤Õ_Ûh9q&>ìpœPeò¦ ÷3S+™³‹³R-Ϝ̫üîlh@ `öúåú#eF{kJZ©°‰÷Bµ²”¡}‡©AY›:>z\ó"E%¨@÷RîÝå&k*ä2f’3Xû"=Ò Uº$Æ}Eéy,àhš‚FÈ_:KÎñ¡o(1š÷Ö45ÝÝÐ5¢‰ezˆ&\ý“Temø&¼¯ÃE”"³2 j4HÁeÍÍÖѧ—Iy.*ÛdP,ÈP‚à%€lP‹œù±R¸úýäëÝÍ÷7‘Wƒd–+ÕºðåŽrµZI‹k\¾oŸîþ¤m¡²‚
-“z-ɬØÙRÚ–*!õ.æ½u¹ Ph×Õ‰JÆëCçºõ
-z58Ô×™rƒp™¨ÞJY‡‚©JžF°šði-Ÿ|D0+kª`#”–é!)Ôª¶&“Õu©böcébüŒGÏŸ]‚·
-ÂS°±‚)f*þ€êÃÞó®Mwïø»Û½ÆÃñ"Mé],êÇŽ‚L"Á!Í9ÕÈ­r¼ÇZMs[v¡b)œ¤B– w¢Ï—Ôýü/m#µiÚTäFhQvÝà Á²6ڊ݈ÈEB_(z'²X8¹ý¡ÑÊÆ5BÍB«»ÐU”ØZji!
-@Qš@áÊ=³Hs/–ÆühjôØ yJGrø­±?Ð`Td¿
-a{µëKnuT ¾C¨ä²BÂ'4' &6{MwòïFjø‰âA® ÔÊi¹cEËM%^´K;J”¯ÕÕƒ:jпŠŠm¥o¬†;˜ôåæ]èkÄê¸(Jƒé¹U¾À©A8úŠÒq^f G^fwJC¬yˆDŸ=Šo!?’ûD訋{‰8U=HÌc5Æ$…²p~a0ÔYåS­PºÓáŽÈrÂA‹^—sj@„ßÌTP;œk”€¥„U`P®V
-ûQ„À^9ëPLÒàÊ“!¾@ƒ¡Ûh€:W.Ø ´ó­Äc >üºYȸ±÷bÆ…bgg·Ó°¼g¦Îí˜FÝ'¤(ò‡=½kÇ@ø%^î–›0¦±ÈAo>r ± éaòüj
-M ‹f‘%=beá/?;-j^Ç°Ç!µA¦!§–7ÎׇÏ‹Ï­|
-V"^áBÈÏ´ ÏâÑ\ºÌª%ú¬ÀZƒŒ¬¥ß÷»Âæç8YŒÄ6Z³þáXÛ?P‰(æxÚ[±1ñД-»3¥ß•nžhižp*˜Cà]'í]Æí
-þök6Z»=©†>Rè-ÇWîM),' –¨ž=¯±îXÓÜ™Çø
-_ÚË#t/»£©Ä?ùçÅ;éâèÖÜÛ]ÍSc£²~˜Ý$˜Qègck”4lÄ=þÈõÊx‘¤L/ªÊu}O S]¯”—ÙFof êé~¹UF¹ªÆEþËý%^Aâ(¢n³…±K¬êèè-_g¿Xtâm£Sµ› Ö‘>h¬«khª†ŽÉîL~ ¢ÌŽ­\7¨ú1Xi{ŠI€ ‚†ÞÑà5vYH–¯±=bù“¨_ŒÌê.uðäÚ'“¥q)±Ámñš‘eAÐqÌÑ(cUÙqX
-@<žŸˆë犉ß$ã4¬€nC’pcÙp1O
-endobj
-1586 0 obj<</Type/Page/Parent 1367 0 R/Contents 1587 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 916 0 R>>endobj
-1587 0 obj<</Filter/FlateDecode/Length 2000 >>stream
-x¥XMoÛF½ûWLÑC@¢DI–dôP8iÜc7Q‘‹/+r%nMrÕ]Òªþ}ßÌ’4Í|
-iá¤'í"^<½Y5 ôv}Î,ùÌÖyJ;œUjÊâD©MêYÿ6·ˆòó`G~åïwŸ·wÄ´7‡¡rÊþì+]¼„9¾ÛÓÙÖ¤ 2SsÍð!Z`«horI®eÈ‚T™ÒÉøŒ±xí•q H+oòóÃ+2e¥Œ é@$Ÿ:@tïlÁ×;bbl‰cÀÌ€³>nã€D—!'†ým3U‘W&Ó;RsõaKxz}‹ëÚUcòVr-Ô9!t5¸i§«
-ìb瀟NX‰˜˜I`#‰fÚkª”ô ‡IÃádmbZ­˜†‡ùjM¥+ë~2ßDñM®Ö©x]Fóˆ>ê¿kãvÿ’W¦• eÔP$bSH²Ø)Jl¹7‡è²þ™! Z.“Ú90 :jà£h ¸½¾~óžÞméÏû^Þ;j4ñ,™œex€…šðŒî8ìn¥<¢J©>2“ ó¢ÑTWÉô¨Š(nJA‚B?sf"÷߈Jj®ü©‚aHTT¨µL;k+Jü"žÛë÷o±ß}xKî>®èÕÑ­ö Ä]AÜHAsO‰‚_¨GOWP¬”‘ÅîSÂŽq@!ðO¬óB%™)uÐëOžNÙV&ð¤ÊŠwÀ
-¢gi÷9Šžw ›Œ¥„ËOz…1ˆ£8k˜
-ÓJInQUhaœcÇ5@‰Ê”
-êmBñð›„3n'çüýh¹Ò ŽDcÅ)ÝÉ$Zœ¨‡ÍÑÙ'“‚ÐÝ9ä0i8“}óúpÁZ+Yãn´„Ò`Y{]Á!p,Œ™//åØ0]±¼ƒ\ha'n§[FYñ|¾pÑ6Ïà–1«(¦¦„s³sÊ Têìëw‡nÑ èƒ3ñÂ:ý›ŒôQ~·Žâqǯ*Í.´*ý°ä`!“Y´^NæsNôy$…kv, „UçRŸ˜! ™Îû:guªÍŒuò$»T?éܹ}C§É#¤ê¹0ÃU]Ýs²ô[¡„õmׂq¯a-à\“Ë £—ó]]½Ì†]TÚÖk íƒêJ9ÞÐ¤Ä¤ï ’3dÀÄXz4HÁî÷,mI%ˆ ã| ­VV—RÆ _"U Rô¾ÙÎQô$‹ÃB\—­å‘/vMßéÜ®iÏkʯ¬áêžÕšÉËÜGœʇ[cãBì
-ƒRº·Ô®áK°(>* údíÝ“ï莓ve/¶)ï)”m¯Ìµ!µÏ8áöˆðŠÀ-vµÉÙ—ÄÕQ4AèiMn¡dÚºaü¾ò\€:mº}Ï9¼%¦ëG|Z†Q
-N&f,ï
-EÐÚÚ3`Š‰ ï7ÓÙ‡¤Üa3c*Î Ï‘43~†øv0ô!–|ø×HÐ Ï«¿gôñþ–-F<¨`zç ƒm`óÂ9âˆÞ4Sk˜OÚœí—üòî{aÚe¥„½aúíŒGÏ(§Ì!«À4Ô—¢ð
-¯ð.Êã“x…¿Ó`Ãd=9éè[/vËÕ&Z]έñLf€·Û‹?.þ{{vkendstream
-endobj
-1588 0 obj<</Type/Page/Parent 1367 0 R/Contents 1589 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 933 0 R>>endobj
-1589 0 obj<</Filter/FlateDecode/Length 1493 >>stream
-xWmoÛ6þî_q@QÔEcÉ’cÇ)¶ÙºýÐv[¼OË0Pe±‘DO”âØßs”(ËoëºMLóx÷ÜÛsä_£€¦øÐMH³ÅÅhêMi±˜á÷õò¿Cü¯$¥v#œßžÝ€oÚýúõ§Q8»öfN§Þ’
+1258 0 obj<</Type/Page/Parent 1119 0 R/Contents 1259 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 615 0 R>>endobj
+1259 0 obj<</Filter/FlateDecode/Length 1192 >>stream
+xuVËnÛH¼ë+ú¶ÙCdñ)òè$ë$€•8+åq¥¨‘ÄÈÑrÈþûT7%NSØ…Åšîéªî™ñ¿³€ø hR”RYÏó¾Œ?¿ç/”ä)~kŠóyr'ZϬ)Mç¹â¬)|ÔlNÒj vÏC•XãšÂÅt[Ù' çª “ù’¼©‚5-—\íÈ)XS¾D¸çd%Köc Ôlº˜šU˜•¤óH³
+³’|’Yc°1wÀï«1ØT3V%.à[
+’ˆÕ`„ 9—;r
+Â…˜Ý9¡$N¸'#©1»r­žU˜uN ÒxЉƌ±¬óŠkŠ‚h²¯èLÒy QÌ:°N1·ë9kÊ2Øä9YgÀ“9j<êôì S0Ø<án{ž]Ø0H&%i ÂŒU±s·§U‰ в )wM€¸à!ºsA#'aÿ",⎠0q°3®tä„Èáø¤Æ`¿§Õ˜íKÙ«0Ø,aë=«0,À À ‘Õ˜‡h1‰Õl6e¥Æ •+#
+xˆˆ^}¹Á‡K\.gwä$%æœÏßR€OyáÐ`h91—KŒµç8eœ/dÔc¾ßÀ)D•1RzNAî»æIɉ«O'DêX€”é!'ÀPyNA䌸NOj W\¨Y…Ñ ôõŒ›jÌ] '±ƒ…YpÄÇ*Ì=žî«1OûTø
+¦R~°Nä´ªÊÖ:»ïèJùPÁ›õ‹ëLM]kàSóŸ
+ŸP”$Z÷ç³m»[ôµ<Úƒmmá˜1–ÏnˆM½cyðv {oÒ<Îí¶´zYy¤ó©?T2€JÏeÅÕÿðë®(Jÿ=¬©ÆŸŒ4\åXwV,–Nþáè«3íÝ
+ÃVa®Ð&Ûc`«î×b)OeÑÐã»û'xךñ/7•øü}óùÚãál8Û·%fÛî ýª
+zûm}ô¾µý}<ŸÙIq³bÈt6­Ó &¬Ý=d~„ãˆï(Lûíáñ/É2ÍpÌA¦!çÿk3û2û ¿ëõõendstream
+endobj
+1260 0 obj<</Type/Page/Parent 1119 0 R/Contents 1261 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1261 0 obj<</Filter/FlateDecode/Length 1355 >>stream
+x­VMsÛ6½ûWìQž‰(ñC”웚ÆÓÌ4nÚ¨“‹/ ‰¨I€% Ùú÷y ~˜’Òi;­3v$‚xØ}ïí.þ¼ iŽ!-#ŠSʪ›y0§$Žƒ%«%>Gøm$íüB<_|oaµ¢yÐÿiöø‚}á*ˆ{Œ$X´ ?lGðúìᎢ9mvˆ$]®h“ûu<É&µ“ûF8¥÷ôé }U:7/–´t/¦y¶ô¢\A_Dµ·›?n)\¶HÓ8 "`MÖ{©ón9¡0ì–£eòòÆÊ¥vjw"WHz–'Útæ”Ñ¢¤Jf…ÐÊV–Ìî;!p`ÎÔb[J˺4§
+¼cˆmNÓ0n#–€…ö˜òÕ!@Æ:Ÿ™LÕ¥È.2~ÜÌ¢9˜sˆG›ÒìOg Ô( Nä«eIòUTJË{^†¦Ãú£¨$°­)œ)(êÄý]«×ÙÏJ^ióþóìãg¤sTÑœÃLÁäÈ'a@ü_‡d.a‘ÜÁÊÜ+ƒ#®ECbg˜Ñ5æOæ…¶ „fz1@šÎ©ÀønI&ë<í¼€'¬3«0l=x€A‚!øúÈQœVf‡F¹™š‰:;73z§öLšG¥ô²RV¥´Œvf5ú,Ãäú¸÷œ )zŸ°W²­9IOEi´ÄYÍQ6-ú<ˆWI«‹èNh Ú¬ÏøÜP¼ÎTçbn*•*Ym{ØNêíuЀ¥“FÔG˜Ý@‘±À£~lq‘¦kLYöØ£³§A¦´ˆÐYà°Eûø­’§Ñ‚¦hE¾–½Ù~û£3”9S4{ø^½w5Þ+Ù*°SP2rá]0â
+e™&¯hÚrš= Wú2.¬™tÙ¬0ÖÙöЬ{gº V™OQºô•ó†à¥<†/ÎcÀ‘ýG$ŽæÿÀÑÖ¢ÃfÅ?Æ
+)D3ڡ묂ðŽ¦qØ6§KŽÎ„aÝÙ)p"wFøÝ©ŒJe}E;Zç9¸±Pˆ+]£‘Ù€äÞ×
+3zÇGâ¤8ÂÁQøÔý„hõ8AØ}/M&Jfˆ†OÿÔSÏÍ#í å.
+ÂYu8[µßš×
+ôôÚ\ƒ‰W›¼‹^eÕAã'}HG%ÎÎ¥íÁOŸÑäÄM Àζ¯ó´þ$sìZg÷ß®Ûô‘¿#4çOë÷ý÷€ÑGVBÄhô ‚.OËl’Aé—Rï]qÁ st§š“ÂŽ–Ä^Ј‘·3‡†ž&ÉÓ-Q¦*NûÀ=õŒžZ lØž Wž&±–2ùÓ­·4y±×‚° ¡ðœÊ[ø׫6h“ÖI‹®cÅ•b-.O”«½rTà¶pðEâVŽ¢ÎpóÐmíQ2¿_Éû¹¸£û8¹_¤á~€Nƒø<›]#2IÕ¥WLc}ÖÖšLyŠüÅNŒ—ÙT 'Ú¢R0 „#{T/œY—P]x†ZyüÅQúno UýH‰‰¦G;ZêƧ¾C!—dY™­Úû;‘oô£sÙ¢2†¢¹²Y#ytðX
+w†€ÖΗFÅÍg+P0ÛQ–þŒîN;* ùpâUË7BÙúžiž=¬Þn²ñ"XÆ îUÿ,“`™âîÎ[Ó˜q?ln~½ùí?¨Gendstream
+endobj
+1262 0 obj<</Type/Page/Parent 1119 0 R/Contents 1263 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1263 0 obj<</Filter/FlateDecode/Length 1616 >>stream
+xWÛnÛ8}ÏW Ú‡MZ¾Ä±îSÚl›n¶q±/y¡%Êf#‘.I%ñßïR”%ÚK.9·sÎÌøçÉ”&ø;¥åŒÎ”×'“lBóÙy6§ùj‰Ÿgøo%•áÅ V/_¬V4ÉÒ»Å/0¹<Ë.ÒÑyvÞ¿lÒ~IgÏVdzGÉb°Ýq<1²ù$[F«×ÝÀðøóœ¦SZ—Èo±ZÒºŽ'´ÎO¯/?‘(
++Sz›Ñ­Ò¹¤ÞSé¨nœ§¤me6¢ªÔhõ³‘ïI肶RKžZY ¥•êIT‹÷‡wë'Mϲüžî…õ*o*aIi/m)rØñ;Ilu-µ'Sâ&}¹IQ-ڡüÖÔ$HKÿhì=^i±•áÚ^Z·—¹W2¸½6
+é¼Ò1ŽŽ³´—B‚Æ5j\D`b‰s(O
+ÿ€K4HW`¼*C%úÌc°w/ìVú£X2¶IÎCzPÀ¸l©õQh 76
+×bàtc(rUðÀjéwñ1A©£ïW7twú9w%¼ØZQS2|÷Ž±†9g+Ñ `ŠÑ±»qÅ_Á·2¨M'_'·A» wŸ0Û˜þáúµÈèk«öžqECW
+Ë<Ü„„@Ð)?ïhFW‡?Ù‚¢uÛÐ:¡s_ãâ'á—å‡çÿ"ƒXi/ò{ û’fx®S‚î™Éè’Á|/&'º|ÙWÊ:>–vÈÞ5be§¿%… ¢4.­G Þw­žÆ+Ý<Q«C4tHÂ9‰Ç7᛺©c/ks¤Í `‡nÁ7ŸCßaÙÓx7,·Hí@;…Àêû{ÍÀq³SúWžSûc¸8cn;YíCÏäJ·±©÷äÀ&¿ p*§J>ÈŠUÈÄÕÅ#C>©0!ÀaÿÂÌ£¶÷FI½bb#Ñ°9ס*±©â¼žÒ ŸÇôèl{hi±ÃfÜ#ÌÇy>šñ<?=æçeUÅ¡3 ¼R+ w÷`Ç¥Ãü §SË3<É™]ÑS)Ñô*£·mƒÍÛÎ;Â2Äû"¹›-–-S”áe·$gw§}¹bEðÈq·3M…ñ
+öö©"˜@G8ì™oÏÎÛ&Ǿ&VÐ÷Ú +„z6Cγ¾£˜Ôþ‰ŽÃ:ò~£tÇI,ñýcuSy…YY˜
+:Jf—Á<Ì¢ºØUÑZÒXB9*%-“ÝTR`O¶²ä­‹»šä sj‹­ Gp¿•Å Ë{ š‘ £å×H;‡–›ïz<Iw<9ö¢g8”'ÿ Æ§¿Ôµ
+‰^™¼áÝ($ÊwGÓ>†®Îh´œ€y­j³a¾œgË>…òÅœïýµ>ù÷äØô®>endstream
+endobj
+1264 0 obj<</Type/Page/Parent 1119 0 R/Contents 1265 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1265 0 obj<</Filter/FlateDecode/Length 1704 >>stream
+xWïoÛ6ýž¿âà~˜‹5²e'¶;t’®é‚5?Ö¸è—
+ÞÉêL•¢`†\)ÅW¥WdtqO[Ì5€}'ì}7›/¬gÛ­òkºC×ðø3'6 AkáèƒÒÕwrUYëƒpÈï^j¶í&Ƥæ–Ü¡\J/­pÞV™•œŸCÅŠà<+rwÀQÌ’X’]›…JïÏ2¼¸¡ÏP³ut)ýéùÕM˜Ò€¤žä9úÁI—ÐÜt¢®Ø›_óU:ãh{º Éj)óàXØP<R³ßS®À;£­s߈¯Á~ƒ£Û¾Šâ98;®žÖL5Ä› j¿ÿ†ZºÄ¨»ièß¾~´3r©ŠP$˜[±i@ôºf®pÚ‹‚¡†Ü$qμdâXõ9Lüª™´>å™Ì8cÌðÔá©Ç˜zXò‡åÚQ#òœÛ>¾5¯Ç…d,¡º¤ÏMÖ WË:Ÿµ)ÒžT»Ðjòšæ(sªn’»Wèûý¦Ø@+Ìâ>~Ú5Ió=÷ê+B†£ŽÜˆÍSÕJq b^,Åa!qöÛµB“/ &‡e'ÎK㥦õQX’ã†Qœ½¦tÊâ‡E‰¹ìnG•«8öº¿ÖPðO¾1LãáQkbŽ!n,%p,¦ŠÒ¦8Hm“,W¸6hîEü ðû«6[MwÂ*S¹ÉçmŸÓ‡&A ”ƒT@ao_F¦%õx´ªÐTÈ´÷ŠzM0öΟwy…€õW e"
+&Á™•ðÊÜ6öq‡ñ¢ÙXþ¾Œ ;á
+³BY#{íŽ{¢¤{>söùÁp?ä&øœÍê{F:9N&Ç)ÞgÇÉì5–ZÞ¿9¹8=¡kk¾à²‚³po
+Î9¦¼†ÏÆt8â…8ïלìÞµž¹ùŽ¦GɯÐxwÎû“cöýn~ð×Á?ÏÚ’endstream
+endobj
+1266 0 obj<</Type/Page/Parent 1119 0 R/Contents 1267 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1267 0 obj<</Filter/FlateDecode/Length 1989 >>stream
+x•X]sÛ6|÷¯¸ñ“Ó‰hI¶%§“vÆNÜÖÓø£–2éC^ “€’õﻀ”BÏd¦MÆqe····wô÷£ ñgBó)Í(­ŽÆÉå%í¿˜5þgL³ËóäŒÎ/çø~r–ÌÉHÊqvŒ§û/ñìt6K.âÙ)ÎwGi6MÞ ?¿^þ1¦w´Ìi’œŸMjž\Ì.i™ù«Ç´LOhðß—‡§¿ÿ|zøüø~"§ßè¶vÒÔÒѽ¨$=I«Ë4öÍòn?§É„¯…ûGÓ¹³ÌNnÙB·eF+Iµv2#WG¢,é^ºëÛ‡U"-T--ÒX+‹08"•!½­©F4KÂR>&±Ò™Ð²P–øoMaÃ#üY2EV'©®ÁÇä4-?<žÞ>â u*œÒµ¥m!ÁÎdŠ?Àv”ìñ+Y¥j@1ÂiC[°™0|*9$=•.=-´u–´ÄG>Þ/(N¬„•‰´c:ˆ-¬Õ©LÈV¹‚$H àYf¤µI¼q:KÎ9£Î[ƒÀ†­jG:§´Få*õI y~ëQ†ú@Q¾>'{Ðá]áN(W%@Õ\I ÜÈT›ÌR¦¹nÔ½Q™$ʇ»2rnäv 3”kST¾Úw ú¢êLo-0+Yƒ³L6Ñ4ÈÔTj䀇q›¿
+ÃÓ]ˆQ|¹k$G¯pÐV0˜=|+¡êAž¥^)c’&!ˆ:G:!V´ãn_C†#âC>ŽDÈÖÑjÇšf¢T½Æ¹Rë綡¯'%H âw¯ŒY
+e}Cx”dÝV*…†}4µï&Ï|!6²ï+ß|hþP¿¼Ÿ¤¿ƒAG~ƒ˜F~o%z]†ÂpöP˜(5d†CFº‘u ÒaÃ'%z‰ñí¹‘6¡/…‚æ%(DŽ)€dƒçŒl ™š±š‚™9;<Ì«ÞYâ„Ïùx«ÍóÚè¶9FÏÒq(õ1"xH¡¸Ì#o-_/^íë‰äXhPddÕºö­Ç't>H
+¢hå¡6a³Œ”]
+6’¹¶³vÜòìt‚Bè0ۆʶЬ gtyXŸ¿ŸVÁ‡v¤ß)^3µîÑP|Þ@j£m 
+¹ú£Ÿ7Oÿ€ã=??Vã ”ìö-÷à÷VÎ"’'øäÏ%àŽÇíš:
+‡£æÀ$XñRA„ÆÀuã(ì«Ô5lo\y×»zéëmd…ÑßYÓ ; x+Ö-J
+\Aõèo§S0 øpÌ ÜˆïÞ‚é.>sÉñ ,î®áˆÁ‚q˜ÿò@`‘ã¡ÐÍã ò}\@ú`_Oð·] «R¨¿i=´ŽÿYøÝ€Õ= CÖ©hl‹Ý¢õéÓ ú¤×°aÇ|Rõ3}Bè>øˆsë=¦!ª-¯VGÈž †qóù~D}óâ`“2dû™…à׸\¤r˜‡(­f÷3-& ,^ý/nîÖ>&…a<ŠôKàÍKZˆz[öøѾX«Ý ð=î ëÞ˜Dp
+‹[\èù¶Ã®Šòƒâ<<®W/¶î8ŒÍ…¨VÃU‰W‚(Yñëçàùjˆ;Žvrß'3ü&âòŒfgÉtvÁN±¸º»¾¢G£}?ê/5‚,“:êÍÇømÃÏlè|~žÌñˆ1›Íøé›åÑ?Gÿ] ¦¨endstream
+endobj
+1268 0 obj<</Type/Page/Parent 1119 0 R/Contents 1269 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1269 0 obj<</Filter/FlateDecode/Length 1742 >>stream
+xXaOãHýί(…/Œ™$0!ŒV'w‘ ÑìV²têØí¤§ÛÛmr¿þ^uÛ$p×3·7Œ ±ÛÕU¯Þ«ªÎG}êá§O—:Rº9êuG#Ú_ì
+z4àr1ºÄõËpØ‘•”]/°¼o,ÿ|wEý Zä°;áÌ?ïÑ"=Y¬%Ý?üíÛ|1§\òÓâ÷£ÏwÔï‡õgƒK¬Ç2åüsÂïÚÕ¢(vT˜TT2#¥éaNß•ÎÌÖÑlApÊXôà ›ˆÉÛ<¹ùš$ߧ³Ù"Iæ¿Í“‡óA’Ü>Mÿ1yš'ÉdqóÞ‡:ã[=:ëŸwìNjt%”vTÁýé#³ÌJçx¥¿µéZiIZl${°Uº†§¥PÖu‰ƒþàTƒÁÇ­*¥ÍÝ 4Y]O¿Í½ÙU†ýQ–J¯
+U„ÃŽ"Ðz³ˆŠ2#S•«P[ör½áÞ%¥•£µÙþÐòÒbT\ ³Bôøô¢R`¼”kñ⧆ЩÓ‹²FsÝáÙÁ´(GÝæÈYúá·P³P7’€Ó)©Š®–Ø× ôÐ@—,#µÏŒã¥¼ï2¾›´Hø^lÅεŽ)QThW«5ïè©
+¶D탛(÷[MÛµ ìßó’­¿(‰.ôç™2÷‰Û±¾:ÇÿYOa @áØžînÞF.4ãëE\ÒÄsÏ–ù\О½=SöU˧܋‚±˜xrŠü´xÐ-º¥QØ·,A¿ÎnΖ‚uÆHnt_G¢ §LnQ¨ᥦS„ \’yÄÅSž,<=¥bN˜(áÓøþûø7̧‡„*­ÁD"a£Jyäb|æ4W܉:Ëâ€ZPlùÕÀ¼6ƒòZã›ÄGô;x¦fÊB“êåÓÐ!f™¯Bì˜C-Gñ(ëe¡Òð|W¾†±Ô·sòû
+š²•$…СC¦’„g´D¹wI¢±µ Ñzdã#Iƒ´•+ eáî\á$€Æzô–Ž&ÿÌÜ ÎŽg7áI=c‚Wåñ»!
+endobj
+1270 0 obj<</Type/Page/Parent 1119 0 R/Contents 1271 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1271 0 obj<</Filter/FlateDecode/Length 1663 >>stream
+x•WïoÛ6ýž¿â|˜$²e;±S`’ØÝ $n«+
+h‰ŽÙJ¤*Jvòßï%ù×â-]ÃfÈãÝ»wïŽ?N|êàŸOƒ.õ®(JO:ÞpHÛü?:Ôï]z×Ôð½{Õõ|Ê%-°¹ƒã›fswàõšÍ8Ðl¥^÷úí?ø×¾7ø÷‰·<Áåm¿‡CÎømð†+íº¦`A¾×ïué
+Î_^ )ˆÇ
+¢ÕÿQv^´&m
+Q(£©0d3©Å+ ZÊZ‰¤DÈ&ÇomôE–+](ýLÑRä"*dîý|;éÐ…ôpËÖø±u
+–l1IÌš É‘f‰$•$¥-rQHK"IÈ,¨XJ+±¡ÚÂ;ûá˜ÉcëäwºÞeß»Æÿt¾TÚ4ñÓÙãÓ˜ÎFŸ>hY¬Mþ¢3ü çÜ”Ù/–Fwï0ŽkØæ©È2-RIW¿º¹hçË™X$„Íde¾’ù{nèöØFf²2ùŽ¹*†½kÊ<’?aÛwØ$&‰ÍW;¶>;¿ËØÙ!¥£¤Œå±
+[Њœ>îÚl uÑ€­…SìFc¡òÁŽÑ–óo2r”ÀôÇ ®ä³®,L‰’¨ÓxÂûnŽ ŒÒeÀY_@›ÝšÀ‰sªô«ëþ¡þŽ"À‘è;ó‰C¶Yº¶( ]ËÓPÊ·q{À`BóR¼e¦W:GP‹ÍÜ ÆKfÎm–ëXç•šn==oÜܨ|­¥ ÆÍi ÅMñ@#wªÂÝþŸeqSy¶ œhÐD’)§¤òañ,©*¦ròª’Þ©è|ùŽßÆGw§Oo§‡¬ [M2÷n`":w«©•l6S1…“^ $4 ­…õÒý ìG‘¢¢žº3t‰Q4r~È“D9«Zþ^¥/…Å€!5=«>a6‘Ìv£å^·rí çsUÉO`6Ò
+âa®ﺋÇfÜšÝ<ÜÞÐcnœ`ŒLTrKrÌH\4G.·&èúÞ
+endobj
+1272 0 obj<</Type/Page/Parent 1119 0 R/Contents 1273 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1273 0 obj<</Filter/FlateDecode/Length 1774 >>stream
+xW]oÛ6}ϯ¸èS
+8²¸v2`ÉÒ¢ÖÁú’J¢-6©ŠTÿûKR²¢(° K»ˆ¼Ÿçœ{ùëlN3ü;§Õ%]-)«ÎfÉõ54;üÏŒ–««ä-®Wøûåm$mqv†ÛýîìÕõñ,ÎwGéf‘Ì;Ýïï6gÓO3º¡Í–æÉâê’–pòayM›Ü›žÑ&;§øÏ^iK¶­kÓ8ú“¾š÷›Ÿg3º˜#`\“ͳlpìåå%üÇw¦Ÿ4Ÿ³Ó‹àõârå½ÃȾ9œºŒ§Î÷ÙÖkç¤,¹BÒÃwyÞHkÉlýo~<|]“õ‘$áÒ ÍWìa_-’‡ýÙì)mÌÞ*½£m«3§ :§Ÿœ¡\Ö¥9u"-%`[°p9 ð]êÜì µÞÜZT©x.ß[%Kö|‹r:ádN"5ÏrB_ÖôCé±P%²BiiÑÀ²¥DŠª¡¯ÒÝ=|[“>>ž«D&ødã ÿ…¶¦! 1ÒùUrɹ*“äµ$¥ÉÔ²œïã{2š£AkÛ:¡ÛÒš ‰q€\fù"2G•t…É)=оPYÐ*ÌŽÜ;ñ„ ëR Ï%òªe´“È‘kã|Jƒzd¥’ÚMC3©@d©”švê? :=ò!1Aœ¯ìÿýåó·õfM¥1OmÍáHÍ-Ì'ÚÒ=°ÃeVÉYS¶\±W7¤Ë<À¸¹Ë
+˜1Fà^–(>SÁgÇäŽÜFbY#;Ô?
+¡[ÛÆT“!ïDZÕÁI¾d…Ð;¾3d »…Ô‚Ä^@ö  Ä(?Œ*šŽ/ /Ë™Ôq}â®êÌ9’°,GÙöÓÍ݇¢EŒ²Ä„>z—óùÅüaD
+e?p¢ ¯™à”ö|Å_„¦×($ϳÖ€Ž~ØtÀ™h§C®^X±ÞHiq}æñ·…@2Ü‚bó˜ƒ{ÐYa´²~trÅÝ“ÚH¼@½]7Û¢ 6>o¼rsl•&\mÚªRFîû*u“›E=(’?JFe§ûùÛ ]^«a©‘¿ZæË ¯uÓ§cÛmÀ $&mT¾ƒ`~wõfÉ 2rn%Opn6 ?æ/i(8nÇqßÍ=°Àcƒ$„=Ì©°EQŠý-3I4–Ù‘Ë“g•ˆ_˜‚ Â,M7Wþ7ýé7¦A­FŽ=^Ž•£ Vûà
+endstream
+endobj
+1274 0 obj<</Type/Page/Parent 1119 0 R/Contents 1275 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 622 0 R>>endobj
+1275 0 obj<</Filter/FlateDecode/Length 1936 >>stream
+x•XßoÛ6~Ï_qè“ÄŠå8þ1`É’¬š¤[\tòBK´ÍF"]‘ŠãýõûŽeGi±-œH&ï>Þ}÷Ý1ߎRà_J“!)+É
+h_Â6ηF¦Òïr²Â‚ÅÎ;Åbà¶ÆÍÖÐVìì/ìåÖ~/4Ý^ØØšSΨ?ß}øíþê:>¶Ñ
+¹Jh¾†uüÒf«™/¼énîmøcÞd û“5
+\"3"Ï9wÈ\UƒŽai:B$œ´ ЀšñòžN²Ìj¶áÉr6òÁï>üÈì¯D†à†ò´›B9²–>¢çcZàÕÕõ=É<˜uŠeO÷®+•½£©÷AÏ¢¨%#dÛºp¨JaŽ‘ûj
+P©ºaÆkeòèd~â·„#€î}iXÊ"x²°ékµå£¡ ‰l o™Ù a‘Šñ‹Ð#¯<ô[•UÆš¥c*#n¢¼O:³ÀcC8ŽX3Å‘b¯ì?zlû@t %(c)ú¹Ä–UŠ]Wr¥ D;ø®Ð|qAá"8㣢rÏÌÖ[‹¢Ûm6œyBf¸ÎBOò^E{¤†t˜ÆJB€TÉ„M_+´D!“
+Á­diðÕë¢èœšË‘ ]°\Û ÷¸%> œBW¥•“ÅÎ[´2&'•KÁb¢øt§ˆZçèt¶ÎÖ˜0ü Ó%Ç©•ËymsL@e1N€Ý¾Ûø @T¦ÆPÆéSÖÖ^/âø6{i\ì[ärÑÈo—Ö<ÜE–ÀÈ…*ª@“R9¯üp‚Ž™Ç•&¸>“¡f¦×iñg<½ÐŒç>L²gCt÷ódŠŸÐ}vë';*äsÔzôkÓˆ‡aSÏ‘AµZK˜ 1ûÞõÓ&âÚp&à\¶b†ÛÀ=HiÓÝ}¸[M¨ær„£Â˜§zÓ.Œ³È,xbäâ)L&ºêow2F"ËVÌ_t)3O<îüµÏËÏ3·Fcô…Üh|àúœ†Ýg;qcŽžÞ ›±§OСn›‚ý ÔÛÓK¢Â¸‡H•†¤KŒ&]¿ÞÉžPh¾þ á„õ¥ÃîR<µbRª–OŽN‹;ÎG‡U©Ñrd‚Õ¯;Àð‘¸Ï‹ö³/d¥QmNhRÛø?øûÝøÅbù™ø•µu\¼VúáŒëµ/ª¬KÒu¹`ÔË}™Jý¬¢íZeë¶qLN‹Ex9Ü£ ²œýŽ« +$«|#–1„æð÷L­ð
+Ÿ«@,?2Æ ðü5ì±÷xì£ÁA ZBÅ€ìKðB°0 •†I® Îv®oÚzv4è/|¸Ob¨«LÙæ–³£no–%™GU¶æüXáÁ)H_ü}Õ«Ïž åS‡fù²vþþÈt ïâ Ú ì¬™Ü1½4âæÈsÿ@ñ¢Q äØAèm.vý{ÌÚ7S_fÊ…Ò/nrÇdN›´§cÜë§g4O“ÁøœUóáâöò‚>Uæ+æº2Y]BÚ{v?néOÝWwìÿq³÷uö£»üh2J&cü ƒíOÐëùÑGÿhx—fendstream
+endobj
+1276 0 obj<</Type/Page/Parent 1119 0 R/Contents 1277 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 627 0 R>>endobj
+1277 0 obj<</Filter/FlateDecode/Length 1478 >>stream
+xÅWÛn7}×W üäÑZ«» øÁŽ“Ö@m¥µŒ @ƒÚ¥$:«¥Br%ëï{†äJÖF(Š
+ð»þ¹Ï>–¿î+àá‹Š´×‚/A È*„äa¯Cn8/tö•t…ŠÌá ʤqUV«3 í„T¸îÇ -œ“«µcôáÕ#k¤­
+ÈYéiHl–m³ºOP Ož75mÏ5Xiä·JAј:xÕOÄgð&§§R½’È2]•¡èL¤j˜q05òÍ
+…c!›“Jx/¾ÊH45«á;¶}Ü“3×+ ;ÿ¤‰^1:<|ß©áÿ&†‡DNˆ!ÆÖ×…ÑÕšeÐk¢ á’Á·jºÖýtEïŽ:)—\ÿœ³wg†‹jÅÅEÏ&Ïi3Áw¬¥8^´ s)Èrã ƚ̬à N‰R0y 0À7q$p4Ì5Tv«@É#6=L›mq‡²š^xò{lj£Œ¡·t,jL)%<~Ñ0ÎŽqƒh¼! µŸnQë}„Põ0[­ŸœØîÚµONÙþœÊ²êsAïË‚5%‡xÐJd€
+¬ú^d|÷ÿ:ù2@} <ïÀ±Æ1Ïtˆï[ã ûÝdÐc
+>^ßß\Óg£ýÂq«3/}~1`ŸíúF{ÔÁRü›{„ooC|­ãÛ£”~œ¶~oý BiCendstream
+endobj
+1278 0 obj<</Type/Page/Parent 1119 0 R/Contents 1279 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1279 0 obj<</Filter/FlateDecode/Length 1317 >>stream
+xVkoÛ6ýž_q‘îCT’%9–Ü-Òç>4I·¸(†vhŠŽÙJ¤+Jqýïwøíxq‹.d%&ïóœsï—“”FøM©È(ŸoNFqYÒîÑÞâÏ&qNã²À{šgñµ‚8<Âõíc8<*ã4Îp!}Èn6)âi8Š×b8ûÙìlºá;fÓ³4³ùn}#ÚtœÅåa´Ïf'É«)¥cš-PŸI‰—Êe:¢ü\«…¼íaõ†5sFÌSÄún)T'9ë¤VdD{'ÚŸgŸ`jLiêMEYSgKi¨Ñ• ½8¼X‰†©ÊP·dnæ8§ì;½SòkòFªþ+™éDCsÝ-‰¹/Èt›Zã\÷ªCXÖûˆ¢43ëu-ê:kšùŠ³®!·ZèÖÙïvL³àið1XäH±ÔšÉ
+û¥—-ÞQ­êµqàT(ÞnVÎ8‡º­h-ìÀYå<ß\>#^K„rPŒ8Ë&hè¶n¢[j¸Wwº¾¨}UIWrÔÒÖh¡ëZ¯¥º…Ç–5¢-ª©ÝwÈ;æh-d-žúîŒhj›ÌäEÙY\âÎ=¢U-˜Hs!PoÂ÷üí‹çôûõûÙ5ñ%Cz-ÕÌ>¥¢¡
+šé dÙ ‡\T6+[ WFKe+°^×B†ÇX;àþ‘KÚ@‘¡d˜Ì™YRTQb3IN-duJQCÃû]àáÎTÐÊïœ#z©¬¼µÊ
+
+endobj
+1280 0 obj<</Type/Page/Parent 1119 0 R/Contents 1281 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1281 0 obj<</Filter/FlateDecode/Length 268 >>stream
+x1OÃ0…÷üŠË׎ƒíŽ)…­TK,,®ã@ªÄŽSàßsnʈ„,ßpwᄃ÷Q0 øÈ
+endobj
+1282 0 obj<</Type/Page/Parent 1119 0 R/Contents 1283 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 630 0 R>>endobj
+1283 0 obj<</Filter/FlateDecode/Length 1685 >>stream
+xW]sÚ8}çWÜÉ! é¾¥™¤›™NÚmh»y¶ÚÊ’+Ùaù÷{®dc’N3€ìûyιW¿Sšàß”–3º\PV &ã ~iÿ|ý8˜-–ã÷4?/¨ ÙÕr¼l¾izt¿t9§Óîwœ.­%~nh¾¸‚Ý9¬Nh†ÿNÒ&\N¦|||ða5¸¸{O³ ­6ˆ{±¼¢UÂÅ/ÙðÛÃý_ôEºBy¯¬¡ªò$LN?”ÉíÎÓÊ®³Lzÿnõ÷`Bç³9ÞÞXS9«é“òU8aÓeôq~9Ïø©ïJî”yö²­0Ïü%x,[žjÏ?W[ _ÉÉdÜx™ÕNU{Ê•Ðö¹ñ4§é´ñ4[¢ðô w¤L0ò(ŠµàÂÀ„“Z
+/Iùp$ÖJ³µuÝü2­¤AÚ•E,’ŸTŽŒ¨Ô‹¤6/«
+q¦2L/cŠ10ZÛøõ$²-l®6ûà´6¹tzÿZêã”î"¦û`+v/*üAÈ)\|Ì„“›Z“±8³”Ù¢t= Ñ‚´›à2”xk}E±0àjc8kF!@_)­÷)»–{xÕ:Ù(-éÐ'XВˈèDcWä…2@€*š ƒHª~R÷¦y:¶„±%Ö¥åŽçr#j]ые¤&üR8QÈJ:â
+Ok) ¬Éœ6¨Q|„MIÙn„ö²oµ=~aX¹ºÿÔˆ¼¥BUÖ(kø¡R>À­vàl ôÆ,CeúD 8ÿÃîZø„º·°ƒTm¿Žf>6 ¸C®è,óuˆ˜F¤hº–çøšý¤ª¶¡ìN=o+*,Ã}]W§
+¸±J] dÜ/@2dÀòJ¬A•«W‘Ê–À‡ûKuqwHï±´ã6Çts¨ âÆA”½­{É|qøÛåG'…;(jÏøÉ£×u®XËúϱ0ôÍ~ÞéüV•½‡OË}ÒÊ7Ü$À…¼2Á”À%°ôJ瀠ãF<Kº†€ÿª¥æ¨Ê€MüŠú° n¥Î™\Œ¯ˆvPˆ£ì@S”¥ŽT”E¸Âçø6¿Å£­«`#F¯HxØmU¶åÇ0 Ï™¡GP½Nò>/DSæè”Æ!#"{Qa¾=GÅ€Œ½Þ˜¦›‰ò0ç›Úd,A¢/æ뉸A:"wð^¥
+‰)½X£÷<öxºDlØ{l÷o-/¯czw¹m„#ô‘‚Qí"Ì5U"Ù
+~Ýmû¬lëÇ}ëH/ßp™KŸ9UÆ-­b¡'•Ø»ø3gØÔ/ê>p¹ÁüÊ›=‘­v”âãí J±Q,*ÝJáýκœrQÆ.ùôîH¬Oˆr£íéZÑP˜‡ ÄÝMˆLNJšºÅêÍ%è¿w ˜ÅÆìŠeK‹Ïðõu' èÃZ¬ú-ú”TRyè~R…NùÎn˜½5²Ða?;Ð$–Œ i%~Júü:»‡‰š­ÊDma*"Ǹè…^îñ ŠíCBNxÏ:/õ†ž†aóhB…ý±“Cp‘+_j Kc€€×m-°ê\5+H
+endobj
+1284 0 obj<</Type/Page/Parent 1119 0 R/Contents 1285 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1285 0 obj<</Filter/FlateDecode/Length 1798 >>stream
+x•XÁrÛ6½û+vt±2#Ë’íHN/;±;î$Ž«I¾@$h¡&
+Siv 쇫чË1-V€ƒy*Ë\²?¥°žÏ…#lòøzVC:¤{™äjÿ·zÈ`:™TVù aÙ
+»¡5Þ¼„Ï›ž[¿" ņ.ò\9ÄÏ©½ZHQŒZÎdÖB(]ïÉ|INy9Ž^¼£)²Ìé>:=¬
+t]åeÊ:¿/(V¯i,¹k¶u·Ó–n–8ÙÜÔ‚J9Â
+0bKñãGkªò4yÀÄ’=47‰Fg­t¥Ñ)“r`¥H#°NK~/p<þ hÝ¢,¡#ËM-ËJ‡çWVJ’¹,
+TaöG¼úEœ!¶§ïƦ!…™*hš´P¯ÆÜËSÇíŒÒ–¡» ûuzÁ<Л¸ug “’}è™'ÐLž”0´!:p•ÞAÑ FuOo²9¬IÞOa¼Aœ»öä'TÇ×-{„¦5P²Ó;…µA#/U{†`’Û
+eie¦^vdb}ßâ™À¬@I"Ûó³nå
+«ºh, …&+`Œ³€AŸÈH›¶²—Ç…xêkÇçfŽÞCuIx(¦<IÃõJC5…:´qèøð&8e%·M” ó/†¥­L/|@»ÏÍ p»ØsûóžoE¦}=ž¯awh0,'¦²­Ç žp›ñ¸˜'¤/‚þ–ÖŒ¨qŸßzÞ´X8¦O†ÕEzÌþá~Á4MÁ5‘Ž•
+­­²éºÐ^A
+¿ßÁ>lÇí»mcÍ^ôWž‘ãÅl{³!¯6À¯ ^7ê¨
+€£Ïþ‡öÊË Vkão
+Ž–YöÆY¦i÷àêdžÀ?„¿M%ïúx3As;ßž‡Î¨a×!œz=Ž|{Iÿò­—õ–þ£’ßäÍõìQ‚6Η»V&ù"žd8>ǃ0(¡ÀyøüÃÊh;áàâ»DÙÅvÝ™êèû}µáLàJˆa£fm;)u½!Š|ËÚÚthí½QeXPˆèO@ú•”î!­4î#˜qÒàÃ; ŒÛOÐÃVþ-@p'ÄÞÜ"צÂxUÛ­ë༖§3üãü”fóp™¼¿øtyAwÖü‰fJLRñ\$<
+Œ=j¶Í'ïþ×Õõl~6žÏÎqíÅ08ËÆ®¿üÇuzendstream
+endobj
+1286 0 obj<</Type/Page/Parent 1119 0 R/Contents 1287 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1287 0 obj<</Filter/FlateDecode/Length 1504 >>stream
+x}WÁrÛ6½û+vt’glY’ÉéÍ©ë©'Ý6ê´_ “
+5ër]{åp• Â–68×ðI›^ | ‰ÜÛ‘6•rB¶V]e!_á¸pIW¨#;¨þ…¹à©,9 ›ÒÝÓWUå4Ðr¡ðŒ‚A°O ‰ÜVâEðHikS…Š£Îóe[ç‡4 )……Fj33ßçÊ€[2'_—¥uUœ6f•ªØûýzcœO
+ɦõw,éèVJå=Ý)£U2Šx'¶-ß{ѯA£T;(YàŠ%c+t,·.² ÄCGÉÐ|KŸ3 t®Ì5l£tÌBt•†Ô ýÏc]µw¶èEd&
+U9‡¾ë ÃÊ
+Ãwª`Ä¥³R%5X(E—8ƒ ”脃"õ†4W*NÍóù„Ö,…P¥öÎÖ0cÈš|a*„ÑeCa89„Â9Žp|W[gëòª±sä²I
+@CV¼NÔ„Ðò(p„*
+endobj
+1288 0 obj<</Type/Page/Parent 1119 0 R/Contents 1289 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R>>/XObject<<>>>>/Annots 643 0 R>>endobj
+1289 0 obj<</Filter/FlateDecode/Length 1440 >>stream
+xµXÛnÛ8}ÏW úH_%w}H±í¢Xt»»õc_h‰ŽÙH¢*Òq¼_¿gHÝ̤vZ` ÅÛÌ™9g†ùv1¡1~&”LiSZ\Œ£1¾t¿þùýb>DcŠ“i´¤‚æÉ ý(§Ï¼žâÅ›(ÆÜ4ŽæÍ€§¦Ëy4¡ÅrŒ¯ͦ³(iF<;cvÏ.¦ÑŒÓÄ<[.º‘Û;äùœ÷ºµ<;³ÁÉѬ·j>_z«& lô#wò` «âîÌƘ}Í2“dMá-Њ›ûvuqó~N“ ­6À;^&´ÊÌcZ¥£Oe*IÐÎÈšÒ\¥÷æõê+v,š#zõéWþ[{ʈ¬&QUùìVR%ëB£tiè³(Ö‚
+Q7u§dy´@•¼×ÝwsWë]u³×užñcºžÌàÂ*Õ7û›G²µªrIFÚ+eÆ'–´WyNéV¦÷î†t+Ê;™ݱÑ5®Ø(ìwB•Æº¥ke FªtcïÔ´uÔÈtW+{L)„¹ݯD-
+ieÑmy w°Ý
+K{YKçMr_>”Úº{áùåäÒ_¯ u§/ÊåÆ’Èu)[ûØÀ˜ÔQ3å2½3F–V‰<?\Ñ¿²ÖÞ¬Ó¾"RO½ão˜€_!Â^a€(c§7­»Ò'j9çRlÄÁ*½Ç1Vy¬|xÙu%Ãa·Úðïî`ÓžÑ "ðaÓ!-+ä²².C Æ€Ý@(ølƒ0ÒƒÈwÈŸ±Þò.)Rçÿ³0õáÃaU­T†+ÕE%¬Z«y…̵ۆ Óˆ•i¿åt±[6°ãPãmDÚlƒe`M­³]*³ˆVàCѲö ¦…ÎÔæÀ‹:ü†TÜeH— S®<,Ζ6»¥q RíOùhG=rmÚ÷®ú9&bD©å#ÁìPÆ:¥è¢pžŠ©®ki*ÍJÒ°£I…ï³Ò™â×;!
+¡8bÝ9ëÖh çù' ŠÈ 2`”¾*ïz
+8}_Óý…ÑÀXΓÖvjÂ럪c%k»„kW`K_YÏ)Y³±%ánx(È}C@Y:ã}åœ{$Q¾E‡ªTÐ.
+S*J
+ÆrÃî:f+?4pk'¥œ4ƒû] åFÉõ­è¨…‰ŒÊtÐ;8Uº~ŽmÚUܦ²5p»Ýµ¦¹t³ã—ƒæV*g ë+åsFÀ=|Vµ{G@ÊðÒf²’n–2-MyiY§øI…wøbUºËEÝôÌè:\á
+íŸï¡äû7š›:†¨£÷}¼ˆ£yó/¼æ ×5?¦XGphóe´øòÚ¯êßhîýÓÂè11•LÕF¥LÖYúÅojÛ]ˆy›2½2ñkàW×Yåí‚s¼0XÕÂt°óÌ‘Ïm~Ô¶öÞ
+Æãæ3Ó7ÚŒï
+endobj
+1290 0 obj<</Type/Page/Parent 1119 0 R/Contents 1291 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1291 0 obj<</Filter/FlateDecode/Length 810 >>stream
+x¥•ËnÛ0E÷þŠAVÛò#–³LšŠ6-â ]dCQ´ÅD"]’Šá¿ï%õ¨¬¤‹ 0 X&9sçÌê÷`J>SŠg4_/Ñ8¢Ë8/i±Šñ{†¯´ óËh<ë/Ül“õŒ¦SÚlk¹Ši“âDmøÁœ ‚Ù—óÍó ¢Ñl9^`Ëp« Ô¬ëTôÖSiwÚÿ}¸³¥>?Y/Z)m¦ƒ@ ¥)Ie`)é-¹LОV'Œ¥TZ^Z¿'Ãî±×2Y_ÑÕø²FóE¥úNa;ãNjEé²Ç:¦RfRz`EÂh+sAÌ9#“2Ô¾ßKµ«BvåÅÀ Õ¡‚í-Y]ˆFÜíýC'H"¥§¡-yFÌÒ°¢ •ÏžÎQ–ÓAÈã·»_´¦ÖB¡õ±*=cÚdÒÖˆ§sô™ Á°$À‡3E d×j›KîðäB¨ŠT“‚+½JVU/xi¤;‚!ËõŽÀâ½3½Ü>Br ßçzÐñ˽t`þ„´A­ÍôÊ=áQ6eR8JS
+tÛËäÃ|;XkOuÙCƒ™(ónÀ°YÊd@wÒËOLq‘¿é§a¨ÓO ãsräýö eK\=#„jÜÉð/¼NúU#ÓT¨à÷ÉzU;jºÄÛi5§ùb®Ðë¯7×ôÝèg¼2èVó²+KûêFÍöQ]ùýÿw‹/âÅ8^®ðZ@¨xå3|Þ ~ þ
+endobj
+1292 0 obj<</Type/Page/Parent 1119 0 R/Contents 1293 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1293 0 obj<</Filter/FlateDecode/Length 1448 >>stream
+x•WÛn7}÷W àU€du·ä
+;¨\e ‹°¿ñ¢ö÷n:Ë&,~'ʵ a
+vSKÍh<n¤&‹ìŠ¥>©Êµtd7ô§QOä>ÈÒÓý@nßÓ]eèÎjᔿ󖄧ƒÔš?=áõñî7ÚˆRécôõ»2ÕÓ[2ö@UPZ}—,Ùä1žÖ¡Ýêj»k-éó\è‹-*-Ù9b¾Ã9l„#K{gU! ¸œA€¸`Æ:õ="ãpÒÛÊåçžs d­&/ݣʥÏèÖ)T
+-RãtΖ2cÕúY´Áý Óµà÷úH²P‡Ž2…B#UBGû KØ¥-F
+"QæU§ç =Çy€6Vk{ˆ®€µ!ù$Êý¿$R ûøq‚¦îi†"£Õ˜%{;YºÛ=·«§µ”‘*“۲İä¬<s±sÄx
+hä80ÊT DþÕFì‘3TµIŒç8rê„Àt ¿©4¤8©fPœ1isb¬ÑgïyfóPAwœäÀh-y p@Ø
+æ0ƒºÙçÔèä½åÃþP¬3ßÈ$Š bÁ†7#ºæE0ÎfÓ öË<[âëàògóÝ8¥Œ°!ã9 —‘´‰±mYâÜá”ÿŠ9ÿ’†ë¹‰³ïÜÔy53®HGœClC±I„Sl"úuccD/•/ãÆHž(Í×g¾ «Úÿ·nM?tSóâ¸K¡ôKÍ ¹©y°;´,æg°!ô<·• »›WAvÜUÊ÷Ïôú“µ…yý¥W_©ú5/A†®nXsuzðåi—ÖŽûÜæ«3U îøëô °´ ø3ÔÛMŒŽ¨e?Ñ(<¿Ñ…öàã
+wú6É+Ò<¶ÏÙ¯.D·D1£Ò†¢•ê±âD¡ªä:âR®¹ñNJ|Ʊ0?küz¬vRòÜŒ)µ‰‡mFõe¢=VpCwqõ%t™d5ÅXšÙÔ˜Þ,›kj÷ù2›Ž¦¼ÿ>ýŸ_m|xå—Úl1ËWøáÉF×ýçÕÅÿ
+endobj
+1294 0 obj<</Type/Page/Parent 1119 0 R/Contents 1295 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 646 0 R>>endobj
+1295 0 obj<</Filter/FlateDecode/Length 1629 >>stream
+xÕXÛnÛF}÷W Pq‹º_ Òê"­Õ·
+?I1ÎŽh:_Ó³O&ãq°Â“Up{ún Fõ—Úþí2XÔF&0ÚXïžüõÇ«Ù"ÓtL(£ñ|„{Ý/)=\½Z_ ßÌh<¦uŒ€«%­#wψÖáõ:¿:Mõ^å[’"+RþÄP‰'©Þªœ
+£·Fd¸¼HE(­{TYI:v?~·þ€;,wÇu!²ß‹}´ ¬öOšÛ¯)ÓQóûD… Á‚3ŇF4Oáþ:º¶[ÊŒ
+aí^›ˆ"QŠÀmï¯{ eݹ¨wÑ ;jéýEG·FWEïäûïh¯ÊÄ…ì9½¤§ÀföíLNç‘mD¦ê¼*÷¹¾W¡ÑVÇ%Ý¿ž‘ÌCs(JsÄ~tnO„M¤ h(ÛÚÅ϶Ô¯¡¤Hó$K•5ÃT‡"ZvjXµ¥Ö±ìŸäùÙ ¸Úx#ϾL@|9µqݾDÏ_L‘,d1huîJâÒØË„b4g©,Ž1¬º2ô[®‡?©¼z$7N–ì{òù*ÖXFZÑ;!±›C]Ì4ö¼A¢MáCŠœš€Þ–Šœ6’B*õl!C82ÔÈ'gÞô ŒÁAÇ5¢í1]p¬M&s2Už³%—œÖŸm:µÀ-VÛÊÔ÷µÖlhTQông@
+†,f>ŸuæO­ºþ¯kÞ÷Íç솬”®f‘«¶<ÀÂ1â3>ZT.”høcoõÍGÊÈ?4ÌäÂ&ÿ"EÊ–Fm*NOÐø|Ë´8fÓ &ó`…ïà o¾}ww?#>Æiï»ÏLð ó «…âIóÇš/¤Ù©Ðe´k¢gRT ”Î?#?U#j>ê„ *¡\G2‡¾‘0ÔU^6¿Âè˜AûÏŒi»6s¹'í”Bâ}=–î;êÁÍÙN)´pBŸ)ƒ
+Sÿc(òÑD…Œ<® m;+éžµÌ.´vó¤]h§1‹æ¾Ô Ë=ÅÛ[?RZÈ5ˆqŸ]£`΂¼Á²™ˆÀgšCæqâµÓWîpŽç¤Œ
+ÉÕ¶IL-|˜ 0ªTè8% ‡
+"  ¹-žF$R°
+©Š™¢J7Nv÷{:ï%%y=5 öŽc Ѫyy
+endobj
+1296 0 obj<</Type/Page/Parent 1119 0 R/Contents 1297 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 651 0 R>>endobj
+1297 0 obj<</Filter/FlateDecode/Length 872 >>stream
+xUM“â6½ó+ú¦*̇ ›ÊÉdrɤ6ª½Ì¥‘e¬,9’<,ÿ>O¶™&‡5ÔÈ­î~ïõkóÏ(¥>)åsZd$êÑ,™Q¶Ü$kZ®sü?ÇŸ“TÆ
+endobj
+1298 0 obj<</Type/Page/Parent 1119 0 R/Contents 1299 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 658 0 R>>endobj
+1299 0 obj<</Filter/FlateDecode/Length 1435 >>stream
+x­WßoÛ6~÷_q@æ¶bÉvìè€d×<ÃÅ0ï’h›­Dz"e×ÿý¾#%ÙÑ æ
+S7”V@E"µE0=÷|1ýÃCR‹”ËðÃÃ8Uùnõä‘õF”½U»šáptRnï³ÁÊoVISpÃñ˜Oƥͷ½Z’9pj#úYg’ÒZn„˜ºÚ¾*ÊÈfBS*pŽJñP4ée亊Ü™£Ô˜5K=—”_õˆëº”¦T¨­pÍîÛghË4â°Ãë«®jë‹k?¢ßMMèµÓ±§vÏùÜDœ¿
+U2á §…<Ê—]öÞú‹ÏM©s9¢ûN; ]Á×öá™[Æãë1°^¾Pú³mãå²ö-~.SS¨ŒÂ©o׃QÚq55=ãsbCWÈ/¢<ù뙶׊šLtp~ªµg©ñ÷>¾7MÆ›Ç$îÇÚ$%
+¤hQèLiÀ·UÛÖt›œ{©Y ×Âf>2‘W‚¢V‰G`ĺÏÄY¬d0Œ~
+N„†óºnVºã©‚É9M0šæÑ¿Ád¯h͸4Í⛶.0SYäУö^Só§§ÊXÒhGzKO÷î_õÄúƒ zîfMÂۛʷö%;ÚzK7`[S¹Hrs¾`éÒ„;7«–Æ Óe”‡ô”wSñL'€$AÂD#oÛ­×cýIÇþ1ú—¡ÞŒvþU8›Ó)v¢9V
+T¨R… Ì„¥1`ýG¬"¼ö’8ò­Î>BP!cÃ÷±‘”©ÂÌõáÒÍ…Xù¼ó¥¡®å¥y¦Øã§snÿ°–_Ö•Ùb-nñOkZ&äëÁ/ƒ¿]ûôendstream
+endobj
+1300 0 obj<</Type/Page/Parent 1119 0 R/Contents 1301 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1301 0 obj<</Filter/FlateDecode/Length 680 >>stream
+xu”ÍnÛ0„ï~Š½Õ"Å’\K9&M}kÑ".zñ…&׋TI*‚Þ¾CIN[#µa€àÏîì·³þµÈh…oFeNņd³X¥+ÚäEº¦uUbã瘎ãÁÇ,Oó˃ûÝâf»¦,£Ý±6UI;Eˆ³ZÑN.·ÚˆÓi Ϻ–BÍä‡æ`OZÒI›OÁRkµ q ‡Þºòµpìi°õ„kF‘ÂzÍA¤W»çÅŠ’|µ;µüáÙy²†Ž>=“<i6Á“†ŒíéàlïyÌ‚Ks|³Ž!¡Ò½²#hiö{uô)ÝIÉÞkó4©žsg€ w¬Duãáö˾ֲ&Ѷ,ΓҎe°N£¢¹ÎIÜþŠ‚xÁn7ÊŸî×| œmÜ& “à 3´‘ÉÍö–2 ‰íHŠl¢óÕöñÑŸf¡ãI»µü©™7^†YEFóOé# j¿jÛyllgâ¾±&¡IiOPŒ«qÏái¤òª%_f/€9B
+ΪNÆ †û9pl~P¤aôë~®XÎLÊ´ÊèÜ–}¾)éߢÇó7Ï|꜃C"ïšðÈ Ó§eÐ#hX¡ñc}C»LF4è–¯mwRkGH'Û³“Âó»j0jù_)g­[pò,;§Ã@mçZëÙ_OµÎæH@,CEÞã¸~8ûyVV‹Wx»7À\ë6ÎÎEZv†£­A5N§ÕZŠ½~20š}'¨±JGR—#¬§:›|xùпHTsײ¢J«Û‚²2O«HëñîËý}söSCVv Ú$bObI¶ÁŸSUPR®nãý7w¯ËuZn*8»U/Þ-¾/~ˆendstream
+endobj
+1302 0 obj<</Type/Page/Parent 1119 0 R/Contents 1303 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 665 0 R>>endobj
+1303 0 obj<</Filter/FlateDecode/Length 1631 >>stream
+x•WÛRÛH}ç+úª5UX¾`l9o„„Ýìqb§ò°ÎÃXáÉJG#ÙK¾~OÏÅc¶v paiÔ—Ó§O·~œ ¨ŸM†t1¦¤8éG}\Ù|þõd2ˆ&tÙŸFc*hØ£ ÿ-§ùÉ`4ÆõQ| ùîx ü7¾ ;4œÆшïáÌÔÛß‹cûô„Ïᯒ”Ù‡ý¡5ôìÆÛÅIï&ú´ÈôxÓ"µ±âJÒ™Uª¬Uù@óf³ÑU}¶ønÏ&î|÷b„ içCYW:m’ZéÒÑ`à 'ˆ‡ÞÊU–ln§ê5Õk‰]Œ¹FžÓ\+AÆ93öD)jµ•ôU•©Þº_Ð&UÈd-Je
+CªØä²e-Svߧî€áƒÓ­t7ï~ž]Ó²£"Y«óÙÇ·ó9•¢)mÔF.Ï"šUr«tch++ƒL éÌǤËü1†'nEy'Ê}(>‘ç&ò‡cÔ
+,®HSʼnœ²¦´h‰\Õ0¤·*…áÕ£ËZî(Äèá U&y“Jó† ƒYÝ`Ù‡2]@*s-RFÙ%q­‚e*—ÀTﱜ^ö¦qï~ÑöAÐ$WÀÏP³Ñ%¥²ejSèÝ$¾”ÝI3¹‘Ìr8žÇÑ» …¶7÷°Ù„(
+•TÚ謎]ô,
+æW%ò.Ü#xÊÃ~1|»W³˳cð„ì_…ç‚å ÜhÓíz•$ÒºÖ,9Ý*’¡¶×·\[ßC¨›^}—ImŽ¹þo”c‚è-z(4 ÷ƒ­¬ÿhd# ¤V›&whÔëJ7N‡#¹×ÑÒ–‚Ü ©¨Å
+ªd,–fÖ½—ïzÕøXì¡‚G`ëãh0¥n
+ª R@¬Ð±¸.Qb YQ©kRøÅ Lª¬Br:ì
+ 9¡°±bצ†
+ÂÂðb_1%>·##ÈÐ~Ïò3ˆ»ø°Ò"zQfžà®
+®¸Ã@õǹNZÌ [D«htt´À І]‘!˨)î›LTæV¦`{¥}¾õ
+endobj
+1304 0 obj<</Type/Page/Parent 1119 0 R/Contents 1305 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 676 0 R>>endobj
+1305 0 obj<</Filter/FlateDecode/Length 1909 >>stream
+xXoÛFýߟb®(`ˆh‰’(ªFs§5pqUKE{8+r-2!¹Ì.EÀ}ø¾Ù]ŠŒ«UK«Ý™oÞ õñbJü›Ò2¤YDIy1 â˜ú?zÅ„æ‹8XÒ<^âó4Ž‚iIO8<øéÏÃOÓU°¢ùl†%-ÂÓ¢ ÍÅ`YR¼øbo: ƒ9ÍÃI0ƒà4ŠƒÈ¯Xr¸ÆîŠO¹³vw°.)œÎ‚x°³ªÙj†ë :]`Ó­¬è`ÝÙ$˜wkÞ]ˆ’Õdekì.¢Ó=¼;W02ŒçˆX‰ø…¸×­ìî`ÝhŽèö»aˆ‹Â%²À¢¬×-¬d¿D€,gòÞ`YÒr‰€ö{ƒ%Œ„p´ßä¯æœ›áh µ6Á¯¶Ïs @\½#´}r¢xIÛÔb`BÛdôoÕ’ÉT[¤Tª4:R“I2R’úÒ)wA¢ª'zÊ I"‘¦öľP;QP-´(e#µ!QaGQ¢¥hpZžTQ¨C^í­ô‹íû‹ ‘íŒL&`ñãH=Q¢ZmäK2ª”„5ËžÓ'Q´Ò`·M2†.kÑd—ÄÒBïòF }´—{7v¡¨ ‘È”y“=»WÔµVµÎÙH§vj:Â2y#_üÀWoaÙ4˜ÏB‡À!ÞaøœëÿíôrÖñ5áuM¥,w ïEÕˆ´Ì+ÚkÕÖ]œa Øò¬¼pªsÄßÅÔȆ`o… ã]ÕR7¹4g¥µR å†ò².ò$o
+ñòÂÖ”Ë3‚_ éŸÞl4œÐì¸=÷ý9Ç9%¼j¾*T"Š+#ʸòšÏY»GRR v<ëÎN«ƒ‘©¯ÔRRÜüš’kä´JŽ‹ƒ>0¢ó}«
+ª†QÁ¼úhKÆ
+ÛzäbÁmw\ù¹p^sÞÀŒ1D•ªÆ^±÷-o:ŠÂ(’ŸáÆyG¾¿>HA‡›—|1kí‰gÜ•HΕÑEî΄žœF½²/…Gì[k-v94„²‚íZ4¨*ä'YðMÞ_ºL`ÏiÅ×Ò 2*R:Å1hjë$Ðyïi‰yå[Ù”ZÀ´‘ŽÏ:2|-_ ©XjÏ4§ÁHd^ác ‹ ŽÿÊ:tø3¿1ŒÀ÷(+„–Û\ËRÐáÜ_tq¡¿ÖJÙ¥²–UŠÕ¸4CpN\Æqë¬iÀðáðbQxhß‚¿Á,6´Ï"aƒ;dú˜l¸°qi<¤liá"‡9 ¾•ÖÅ«·Ü'Spè²ãЛ¶É÷—{å2ÐûÃ-"
+&Ñ¢‹ #ÙjeošL€ážÎÍßó*OÐýÖ»Æ}á ·ØOûÛ<AÂSÚ¹&g=a§Çöd;úR×n¥ªÀ£vß]·Cæü½”HDÁTrÄ…`ô–œñuºîUó,ȯUÕh´I rÍBí9ÜÊ¢pà"’iTåcï€ÑaÛ êp#M1 _N½õÙµ¸KÐAé®1ÉêS®UeáwÈ$"Ñû}
+%R¾
+ƒˆ&|Cö˶hòÍ*)r_=(
+¢J¥1„Xt¡óÓ--÷åØÀC0“%o)𕛞]ëíG¹8«0Û ì
+endobj
+1306 0 obj<</Type/Page/Parent 1119 0 R/Contents 1307 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 681 0 R>>endobj
+1307 0 obj<</Filter/FlateDecode/Length 1882 >>stream
+x¥W]oÛ6}ϯ¸04bÅVü•½ IÓÚ4k\úZ¢m6’¨ŠR\ï×ïÜKÊ‘Õ`(0I#‘âý<ç~;ÓÿÆ4ébFI~2ŠFxsøõñ÷“‹ùetA³Å$šQN“xMÃSF÷'Ýg¬Î¦Ñ¸³Šƒh:à‹ÉbŽ¿cüTšÖl†Æ—Ѽ¿0žag6ÁJNñø"ŠýÛê<bmº`S¼QÖžsºÍÙåvízyrþfBã1-ׄ}ñˆ}D³-S‰vDËät¹Õ¤’Ä6EMÓ)Õ–[:©ùÏË÷*_)ÚZWSÞà×
+_P®ó•®È®eËËåW˜‹ƒ¹Ó²2EU•æ¦ðk­+§”WGþe>ΣWe™ž~‰gs:þd#êKƳhÂ[>¬áaS9}&¶ƒ·p½C¼tµÉ2*­sÚ9^âÿ‘JSZ›LˇçšUj*Äk+ƒ·+]hUoÙ… ¥°ù—„ôËß}Ô!ôz«jR°Á§‘Ûª
+_ã9-©{Qi•’-²ý Zí)ÕkÕd>òaKA†1¿ˆ%¨"Ñ´· mÕ£¦ßÖ\ øWéo üK©õªGƒíª@ÌÎÙÄÈæã@ÎÈ™¼Ìö”Ù ¼èÖ²‡b5ÎT¶²¶¦/§¶
+eø©ª~yyÈþº²9ŽùlŠÔîÝ.iÎãJ2£‹:¢¥.hp«ë­z¾Üj³Ù®PÝ­µé€àÄàýžÂ^ºËÊ8ÀWN¬°å¸Iaà(—™M¹ô¡žõŒêÑl°§møÁï_EÑ
+SÉ󒙇rƒ„”AŸÀòsFÁ~æ!VÍúYUâÀ#ïg0¢j•Î-Ä“ØiÊÛéÊ7KU^þ!7¶èø  –;!qÜíQ´ÔaßAÌÒŠƒîyœ"Yz =´·…ÐNgÙðƒ© Me›Rj{þæ95Õ”¥­˜u3UmpÓÞoBâî3RêCÁMàîB¤”vÂð¢´ñ:Þî:³%ã•Jl1ã7ßDœdàA¸àKZqEfUÚOýñhiÖž}vàDt²xu÷™­8›ëÜ[v@·Æƒ»å^F ùÜ
+¤@ÑÈásýve”µœ…Ê[1"@öˆš¶@£ªL|?ÁW¨š¸Ðon%Ã)#Y°ñîñmŠSx•á¾ÓóLt>íEß~ñ’ÜØÈ‚þ®p3’lE_âàaÏW[\†±jÜV§A¢-B ãîó \²§j³) éû«÷×W Eû•GöM
+endobj
+1308 0 obj<</Type/Page/Parent 1119 0 R/Contents 1309 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 692 0 R>>endobj
+1309 0 obj<</Filter/FlateDecode/Length 1703 >>stream
+xµWïOÛHýÎ_1G{j*%&v~$NJ´œhàHÚž”ôÃboˆ[{7g;7»^pBZ©GUšíìμyófvóÏžOmüñiP§OQ¶×öž~å·X´©Ûéy‡Ô øôϧ\Ò›Û8þøËm^ÇmÆ][¯ßïuú°uüÀPFðÙ­)÷jËŒÂÐ k¶Ú2#¿ë{ýš±¾†€ëGë댂¶ÿˆ€ƒÖ×°"‹:¤N胂 ì#·Œº8;¨V|¶¾†µ×õz5+S :  ¶¾T >èûL–ßà
+·†é@$ÆŸ}’‡ùT•=°ÉJd"'Söw“"98kÓ!Mæä{ÝN@}T©×i-µi5^ÓÛÉ·½F¾Œ¢4‘ª¤¥¾ÕÔúD¹Öåï…ŒrYR+¢}©VYœ'w2/öùH›Z>PÁYãDg"QÇÓÑðzt>üJ—ããé'•¬¿ÒXæ8p<‹ìFPàyK¤Ë…è|­|,+ø˜~IT¬ï MhöÙ…¸ÊUÊœN :WsMþÑâŸjÇHdòˆ¦®èB2ÿYtÛh" JdAWcÁøÿÿŽÐ'øûñïüT)—–Ð_ZKW,S‡y*n‹£i{‚övÛѽ±Gq‘¦3ü\]¾¿œÍË–Áµss,‹(O–e¢ÕÑÔîß>×]ÒÉõùçÓk~ž_ ß]œÒÙå5M>œéêú|49½nîôé,ƒü¦ÎêtñC¬Îf[Rüö•éœB–¶qÈåG³ÙþËÊ„ñWv˜c|¼Š"YóUš>0=¡)5U
+³ÔE5‰ztnI°i'¦?j1¿0j˜ˆj@6yJÈ<Gíôœö‡æ ©ïó„Áën•ó$­ [²=iƒA
+endobj
+1310 0 obj<</Type/Page/Parent 1119 0 R/Contents 1311 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 697 0 R>>endobj
+1311 0 obj<</Filter/FlateDecode/Length 1231 >>stream
+x­WmOãFþž_1
+NEÕÄoy)Ház¨@S°TÔ·ñn’½³w}»kR|g×q‚ z4 $¶gžyæeg&ß[„øÁ8†þÒ¼ú“ ìßÔ
+/BˆG}?‚ÁdŒßýŠÁ…CTß½ÕÂÃ?Ü
+Ǩðœèͯ­þøÈ@†~rDø“íU·Ð\dü¸ú^?Q§b³3pš´‚óŽ YBäú1ŒP8š@BÇ’ôð
+¡¡Ë(hŸ»É”.EJÍ(,¥³f@ÙOÑož1Kw«P\¦ž¢Œº°áâè~‡µ‰#ä =Q¹"ß裵a֮ï™à1pÃè'üÀ‡Ú‘²O3Ør@zKÝ@ß\\'fóiÀL8Á”¾Ókˆ~œ%gÓ/”¿t>wòíu>u®:·_‚—óiV4îÝœÝ&³›dÚÖL¹eżkC”ioewžÃoŒ@ •ÅC'-À«9ï¿ùž%×=€¥s
+4ÉÄ1wÅxC¿Pâxœg ëÂ0²L×Ð~­ ˜¼¨
+šPê{Ä'?E¬cÒ7¼ËùÿZ³Ì¿Q®àIrž˜Î%…1¶Ç×%k’¯I¸*ö"ëþ¢Ô`´ÕŽß¥Ý—öà]ÚÃwi~LÛÛv¶Ó>€kiªžÎí¼àð_0Fm¤§*þ'µŸñE ó…ŸJ±lh4¯á³,¸í„Š™R ì²w$+Y¥ 9ˆšÑÆNn gDh¿ Ö¸®èG)XÝÎë‰Éî#´âÁùD;{Õ
+©r’e`ìlµ#Gyng÷å<‰Ž»µ“}\0Ðì‡ß¯ð&œ_\žáNLß÷¡bž—Ú
+ ’‘¢i , Ï@bmÕ§ öëb x¦¶Á¨<l@/ìZ¸äÖ®]µÌ™ ½¶Ëcu(p½vÕ}øøï‹þ9j\èìNG¶*q­ÂD™;n§2Ïñ0Uêãs›5ÇCHË­®‹Šž=¬\U1ÈXhr¥°¸”­˜`˜}g>òrA© úq…UÖpIwîD#ü10éÃ(ÆÕyäÊàvvu:Ã.¿²ÔÀG™–¶~Ü&mu{µJoâšþbSŒþww\ÚéádbÕÏ’Ö­
+endobj
+1312 0 obj<</Type/Page/Parent 1119 0 R/Contents 1313 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 700 0 R>>endobj
+1313 0 obj<</Filter/FlateDecode/Length 1516 >>stream
+x¥WÛrÛ6}÷Wì£=¨«uÉK'7;ž6Ž›0“>ø"! 0 iUéÏ÷,@0-Of{,È%v÷ìÙ³ËogcáwL‹ Mç”äg£h„+íLJë³Éä2ZÒ|ºŠ&”Ãê2š5ß2úÈö4Mñ9[.ð9ÁŸ•´q7f‹e4?ucºšâÌOLVììÑå1…»å
+ úÎ9·Ò;èA¨Œj ð^°ˆ…#ˆR8hࣼ}ÿ9~ 4AiÎ}<îs6›fTF4$s,þYÈ
+ÂÍ›)-éNZ,I‰UEõ ÃLÐuüÇoÄm—ÒÖŠ”w#s#žoŽjG®‹ÿé:ˆ~œSe¼ÇrFkƒ¥ÈrÁÁ\
+íÄž%áD/Tó‘ˆð<MQBé±õ%;~2Ã~ÅÀ~Õhñvæ&•iÁ…é¬sRîHP„£qÊìôÚÛ¥=Ïí`íî*N¢Ž)Kf³1P• &†¬6ØB!‹²`5KÉÕ'A¬{³ƒ„5µèë˶ñË|íwôÇf~ÎçøK?lm‘œ´m:D+Þ±5N'ˆoøÙG$tcµÙý\0(@…ýk¨“[A[¬gºðþ"à†w>ãßÞwâŸqDÔÆôœ®Ñ$\¤k 0…œS]°pC£ fnq<uŸ…݇Ÿmö?€|þË«1^Ïæ—cš/ÈpÊQ}|ñîå ¼s˜/8^w—{~v0žã½m9¥Ábhz°óF4[Ì¢Å/bl´\ñ³o⳿Îþ{’{Uendstream
+endobj
+1314 0 obj<</Type/Page/Parent 1119 0 R/Contents 1315 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1315 0 obj<</Filter/FlateDecode/Length 1547 >>stream
+xWMo7½ûW |r
+ºÊ²{«
+/íÇ
+ ‘Kr¥H%©HÏBú”Eí0pÞÏÂ*S9rUYëá)²J¦kå%r´Ò%tc,ÉÁœÓ7Udfãè·©"ÕUÆì7UcÏ^•8ÚröY8i¿YÀZº½…ùŸô|ÑO¦§`:Û¡^^P
+^)ï:pÊ‘å'žÞžÖ.ãdÄùÍÀEi¡ ‚ÖfÃ¥{*ðw³¾É6*Ïų¤h¢*È™,‘¹
+ÕE3$²QZ·ò´(R¾À3Ï.¸{ŒÕ¥{kJi½w™Ú¬ÈzûJh,{7ÐFí¿ÉŸIF,-¿?*•>‘6æ 0m¿#ô¯Û:/sD¾RÎÛ- ÏÜ°Q—h´†¸_~ý|7Ÿ?ƒùüº²º»6…·F?Hâëù<$4Ÿ*ž•5Ë3‚6bße®àýY
+¹ÙãEèØ:ªaÊ ®zÄdgkÔÿ‘4þÖÐJ¤­à1¨‚–([›“u½!ÎJ
+è½àI‘äh%jŠ&b)¦˜Y[SqÒGr&µ šEºìJhVÜ6ÊSÎRf?מ›ºÁ†À–Æ)4¦—eÇÒÑ*W^xn(¼C#ÔqÎà@Ón¢´‡Iò$VHºnxZ¿æ˜[‰ß"Y}PtöåE÷rÚ’0Ïkžö(Ík¥Ô.1Œë|ÂøÝ›KêOxpBKÃQììJ¬
+ãT¸! 4|<Ñ‹3±X“U)çaö% <ì’§—[cüK­*C`°™\T«?SYχÖA\YÀDóhÚ·lQthxfÔ¥59âx¸ûÐ %¾cj½anõ±@:|=¨³°¸#²8 ù w—…œœ ’jù®G¸ëîÜfè™Ô» Lïõê—§sr&Ès# cDŒøÅaX1tèØÒýuÐx¬"åÄXà…Ä$…!BEtžKº¸ú­
+*…k†W8ˆ’/±ûé4°×ršš‘f§ }ãNˆ×âx2€©ªdöu»J3n÷µA8ì æ4Nf  ®€ ‚æÞâ…+Áóe,Sn@•Z>s…›có³ÍZ¥ëàmQé,Ü)­ÐR}É4˜Ä¤—˜Xº„•ïÙ µ vÉK!Z÷$¢ï+mBÿÕ€ï¯yx|Ht lP„í0jÑ•Ø~䮞-]þ †Q`ˆ6¥`E?*Y¡Y0«£«&ŽëÒæ‡p–l
+‚ÍâhèßCäÐú¿f&0;~¢.°n¥«Ë¬ëøv‰¼5³êí®È5_­Í†‹ ¦©PØó °×ˆ…©üÿ"Ÿbú¥`•½rŠ½)‘\a‰…lÍ·†ÂuYañÜa1”À\ý/¬îÍ´^?úã‹d|ѧñxšLÆA%Ww®xWzÄ”¢&|¯0Ž£ÓÇ—ŸÞtHIß9²³ƒ[a4ßžøÉe >ÍN~?ùOÛ5üendstream
+endobj
+1316 0 obj<</Type/Page/Parent 1119 0 R/Contents 1317 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1317 0 obj<</Filter/FlateDecode/Length 1510 >>stream
+x¥WmoÛ6þž_qK—-jÙ²ÛÉ–
+fgÇÐjÍÒh ›ñdÜ:|=Âgÿݘâ˜æK$2™Mižú˜4Oß~E•Ë“—óÛ½þ»³XGCê ¢Þçé!5•Q¥£D…(S:¥~mM¡Ê~^êáÿâ ¢ËÆÔ‹Ò®v^ÝouéSí{vð%mS<ªê»Øjß>ãû¾–µ¬DmåÖFc†ø“àÞ:]ýo¸€g‹{¯Etê‘¢—¢X²™®ó”¬t(¬°º‹\R*—¢Î¥¥6ä2‰˜SYÉ2UåŠtI]²ëdAnSÉW´¨)üÛò{”'Ê<è(]Dïù[*µˆk2mà¿.¹Š0æ2áØ"eâA’ÓäÖRÜ5n9€\'"hpï”.mDól ¢mSùZll0²¬ó|Ó‚Øø³•LÔRÉ”*á²RÒ¾"aÙÙ"]P!6f†÷`ŒL]œÏ¢‘×ÒFÑá$sdÒ£
+•{¤X…ZeŽ–
+æré np•KKŠó]¶
+endobj
+1318 0 obj<</Type/Page/Parent 1119 0 R/Contents 1319 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1319 0 obj<</Filter/FlateDecode/Length 1483 >>stream
+x•WÛnÛF}÷WÌ›À¢$êjA‘ u AÒZEQÀ@±"WÒÚ$—Ù%­¨ÈÇ÷Ì,I]b7­ I$µ;;s朙Ñç‹ ñ?¢yLã%ùÅ0Òl<‹f4YÌqãå4­ñÅbA‡7·Áͦ“Y4o–ŽÆ¸lÖi2]tߌ§Ñ¸ûFÃæ­±2™£Ñ;p;ß¾]²ãg–·h¹F„³Åœ–©œ<¤er¹Üjê%6Õ4ì‘)R“¨J{ª¶ªÂ›¦»¢òp:·O:ˆ7$6ÏuQÑj/k|¾J2ÃŒ'E+SQn|¦UjŠ Ù‹Œ^-.†Ô‡¯1<¸üÓÖ”¨‚ìÊk÷¤ÅÛUEJ¶®Êº"¾„…\dÖ>RãÔ ÊK~E¥38um2ì·äµ¦]ë¸Ó¾Î*øãôKG®Mò˜í±?œIf-n”ή2s4;SmiokGrÇã÷¾ÒyD×\+µ-qúV!„f_³ žwô@WÉ@,%ª ~[˜Öxyc Ïh=)glíÉô¹Öµè n¯i4 yìG.ÓË?8`1©§ÔÒ{qæ>ù8ñý˜ßÁ^û
+Ÿ oiêUã|im>< R;ÄÇ=JUËçx”veņ4JÌ59â½,탦R Õ…~be"jQ9þ
+jærü<µ¾ËëW•åGá#Ž¢èÆ–Lø×O*«õ œ&°eAÜ ˆ•«²ÜzÔä, nJ¡¿jªf¨=>³GyÕ+é¥õ
+LH#PäK•h¤U„­‚l)Ÿ§¸‡JOì‘Z¡}Û =³Ëm[$ˆ`ÏVØÄý=úÛÙùìèθe¦àÆlQCÑx¤3ƒÇ9Úá^$ ÏÉúN_®Ø"¿¦ £Ý¬6¸ðya& ~ËòÒѧRüoÊ?;ÙÇD "½EÄ÷¸íz{éÙN6‰®Ì“íñ³Û?ìé÷öV/ÍÁH‘$´Å½ýÄàø9ƒ7~{|!Y ÀBãIþZ: SYn°‚; îO,N^°ø=sÏÙš[èoˆÛB¢RQú!#GŃ ¦µqH…¯”CAu\KÍÕ#tQm@p³ãôYڑ¸“‹V1:ðÆ®­}Ã9Æ×àP7
+) ŠPI!µcŽ…†‡ £q*(à—O¿è¦À çù¼^V&¨ëÓâ7âoÆA[œk†Hf^;E‘¯%ì3nŠƒÍ$uE˜Á"¼1\Î $™ÝØÔ 4Pý0½àù†‡ÌLˆ¥¿îÉ€,ÓëËžñ¾õœ'ŒÍom¥è®pNÑÝûŸßýþ‰¼Ù*cýói¹y·_~$! $_$€…N¸P·‹æ×Áh‚9‹1Íæ³hz-ÓåÝ›oß@ŠöùÑ&¨ÛE%óRÈ ¿°¥?bzû÷it2ŸDó~;ñÂë˜÷ÿ´¼øõâÚ;„endstream
+endobj
+1320 0 obj<</Type/Page/Parent 1119 0 R/Contents 1321 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1321 0 obj<</Filter/FlateDecode/Length 1541 >>stream
+xW]sÓ:}ï¯ØZf7ßIûV.tJo†ËL_[NDmËHrCfúãïYIN‚Ëå£$öj?Ξ=+¾ i€ßCšh<£´<$š-.’ Ms|ᯑ”ãÅbA‡f/šNfÉ<šÇøm4¾íߌ§Éxÿ“Aü½Œ'“dúÿ‹döË€ÓY2üéÅ«%WÔ y~}Aà -s”>›-’-3ŸÔ€–éÙ;½"++×£J“n\ݸ—˯'ç×áþhŽ#g˲„?n#©ÔÖQnëŒpªZS-Œ#SmTÅú¢*ÅŽ6âIúþàW½êÑ“4*W2ÃáÚÇ´–rm¶Âd2ëqêå·ÒQS“ ­u- £›Š=HJuY
+þ¬9Nx–«BöhÕx÷è;߈Ìuéút¥Ib´Ñ L@´ke,I72}d·¥xD üüñÝ›«÷ï¿0&ké< °åŒŒZo\À‚¾5²‘ ½ÍiD|4–ôêþ5iÓ)ôýíÃÉ0’­µ.¤éù“©¨ÈɲÖFUìÈ:]j`€ðÚ„ÐSKlo*
+Zqî«R9\[Lv´Å»NðJ;¶¨d }²ò’MίtÁd&“ñˆú£i²À¿@Š¨¨SêßF }VáDËŸ~{fîÏâÌÞÆ„
+tœMè³rÿBX«¬U*[S»³ D§.‘•ª‚!æùqL„'%·ÞËžž*¨´ÒΪgŠž–‡3ÑR]aöF\9ýNh¶ÕM‘‘ü^Ë4”ŒJÚ.‹UiõÕ†œ7›ëþtóö:å|N©q
+ÄÝq™tÒ ¢#¼€P'pDP¤®ñÀ)ûGÖ¥? sî‡ì¼¨³ó–ÃD/ÂèQ¦ êÐf·—6[û!Ì
+endobj
+1322 0 obj<</Type/Page/Parent 1119 0 R/Contents 1323 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1323 0 obj<</Filter/FlateDecode/Length 799 >>stream
+x}TËnÛ@ ¼û+ˆ
+£ñu8A£Êê=´é/bÆ"öÕ‹H•5IÎX@u4_»: ­d”4Ädm ŠþUŽZ­myX—cE.><p^YîÏxŠzm-.@ê™Ý H
+*MMZ—±`å°K ¦Ñ…ÄÁwߺêa»g0…Êg°-ND¢<ŠçñžKP| Ž#q¬Ð®Qø¦:Ù,H†Usðü·l ¸È*bùäüõˆƒ’‚ÐÛ·m{`l\ÆI½…²á4¼âÙ§vçUböÜ&v{ ñE«¾t-Äš„à ;ÎX‚iE ¬€BÛºtýã"y«RÄ#zd>“nÝ…< <—;£-MÇgÞÔ‘\ãù„&Ã1î8¶ýqùùv‰I4OȇÉi]péÃàÌàø`0.þJâYͦs\m”]Äòúãº÷µ÷oÿ!endstream
+endobj
+1324 0 obj<</Type/Page/Parent 1119 0 R/Contents 1325 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1325 0 obj<</Filter/FlateDecode/Length 1596 >>stream
+x¥WMoÛF½ûW zrP[±YrzK‚0Ð8n­ =ä²"—âÖä.Ã%Ũ¿¾ïí’M§(ÚÂ6l“»óñæÍ›Ñ׳¹\ák.ë…¼ZIRž]Í®äz~=[Êòf¿ø©µdáÅâj1[M_¼Ýœ½|ÿZW²É`kµ¾‘M*°s…'Éù'k2£SùÅíœõ²ÕM§µ•ÏƦ®ór·eSùtwûû‹ÍgWr¹XâþyëÝñÔù†>æëèãòÕr¶à©7[ßÔ*iâ¥ÌçýÅâÀ­mô®VqV\ÜLR;ï²fH“×®Ý墤íƒ.´äŠq#è˜T×HGɹ+ã¦ø¡}þ*†epG7ºv;mµk=.–UÛ0#m÷¦v¶Ô¶ñ’¹†
+‡ç)õL>k©jíñ2f´ê3:—nŒÄèù®Ó¶³¸Â›\˃*·j‘oM£y BPµ*½ '%Þ )6.\}š7În ]"¬è\Z¯y‹ÅSVx·¸'„»'‰*
+!÷E»Û)•7-BµIâõ.m $“¸S%2ÑõÞ$øÝ™&É$̸nT³‰ÓÔ•
+à#ÎÚ‡ãU¥0†QWið@3ï<ƒÔû|J•äÆ¢›Üx©ŽKª}R›-’fH£€¦C­ýÁ7º¼ý­*à›5æᬵ ‘U…ib¿wbŽ ð
+y´®C±sÕüC+äj¯%5Y²ƒY¥KuùZëž¡Ì” ÝIvè£
+ €ße¬/+€Ã#“NrëÐ`𲎄ê!ïB)2ôwhÁR¥šÀ1,“´Eƒ
+O3¶»5h:'±<D“tG0žö\}RY«ë€-ÁZAò ­fG• Ʊ9"£à-U‡“€I­é e LF©Ä‚·!Uà’$®e›ÃÖÖ5à/x¸÷1tXÃ!Ü/^ ý,Ï;ô¤’Ì ¥x§ª *웓ÚÒ Ð’¸ð=¥‰: Y²Ú•ögš¸»Nïu z¢ñÓ”¥¡°A9;vQHÐkf›ÚÐKô,©“:%¹ÃP¡¥P£þZ¥¼÷SœÇÛZm ¥6˜†Õ.7DY)´ÂM×&ÐlkþŒ,ëëIÞÏþG #Î~ÄàA½HÈÛ
+ÌÈ¡Ñ0o&­Åë/ß'ý ¸\Ïn8ÓÁä/‹ÕZâÛAÂË£r%uxóÿÝð}_GIrewä áü?ö/7³ùëF·©¦0rüG_ª‚u¤r@[OÆx¸t®-Ò^ œ(¡”jë`á8L=ä¾É]ñHîÓ¶*†¡NŽ5´9vø±òäxo)ÊEh!tRÒ(­'>¼ÉHäG.UZb®pÑn¡ °ˆpÊ ,‰-H?An4bÇ¢9êèqzõÏåà8÷Ay¿#ãhò¢œŒ¶„‰<‚
+@0úïvÃ߯ÏC`7<¹ïÇãSÂŽ¦Øp0:é‡8³ñªW\J»Ú…åD¶¡Â® °Gõݺo¨MÈ?k‹by©Ë-ðC^Šj\+fòÑbi¸à;ÅÒu*8v\ò€¦oX€{ª
+Ô˜Òa¨bP²¿£Íät,çÖà ˆò1ž˜¥!åx+[®H$W§8Ýð?0¾»}ø‘óäÄ!©‰»ô{é,æ×x?ji¤‘6TN_X æÉH d{ ¯¸_ræ1–± b†€ê|w1&ÊL
+ç±4`÷ÆôšD ÚGÝãt½&¾¶3< ¾å¬
+³­U}øòÿwŒEŒÆ°ö;ž9Ñb”+Ž²M1¬5j ±¾ÂlµMß•7§OLËë?¸ý‹Ïk¨î“,×ËÙzuçÏëk>úysöëÙ_äÙžendstream
+endobj
+1326 0 obj<</Type/Page/Parent 1119 0 R/Contents 1327 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1327 0 obj<</Filter/FlateDecode/Length 1656 >>stream
+x…WÁrÓH½ç+ºöªÇN‚cŽ†,µ²ÄriIciˆ4#f$k½_¿¯g$ÙQRµ5Óݯß{Ýþ}² 9~-èæ’®–”V'óÙœÞ_-ðózuƒŸ—øãmÃW«ùìò­.—ïg×o}°Z½>ðqsrñùš Úl|¹º¡MF<ŸÓ&=ýî•ód 5…¢ï÷_~RÅi¡¢”ÃCC­Wt¿‘¿±É(w¶­Ép¥<±—ƒ{êl[fáÍ? 7z§þˆ—…·fï6¿Næt¾¸Bz›ìt#'äú´°¡­.q“·¸‰›x|¤2Jö;³ë‰$ëH픡ÒæxÖȹIê’¥kÍ$,Ç”~žÿÐ&³yå½Få¨# é^.rL
+Âo£RTÀn/膸,mçÇl
+Ô¸ÖË›ý-#Nm•S&UÙ×u–iÉyïÏÆ´kgw:j¡3-Zk2‚ îtÚS iEßÿ‡²ÍsNJEë‡&5ÞÙ¬¶=>¬ïžÞ‘ß#éJHÔÇÆÜiFá
+âM6{ÂiRFâeÄu]ö)úØIДkNt©›=X^î^‹€8^‘Ý" “Îý¯°§fï;ë2aSÓ)0=f hà(}>zG¤â‹ÞŒW=ʼn˜”¶‡ðé´—ú«f?½ ý¹øü ½xÅ9œ)*€]®úÅHiÇ~r~)~rz$&¼,¸4jΨ*´OªÆ£‚w(ÁúGûFʶ ‹`昭c:¥M‹ÚB‡{ŠÁ7&ÐvÚƒzè^‹ôĽ
+V¸¾JåŠ3áMÌT¢¿®=à˜Ñ=.ó•Ð;´îTlKÇ{!TD¾SèW ëaD¹‰.Xh
+©:n:t~sŠÁƒDäõCèa¬E<á“HA†2‚»ÔY…6Búà¥;:ëí¶éyc i …Ö"«`xz”ïÖ!W\Á‚•¨\@†B½HtL;²PE’¤öG©\G©ü…Á2ˆá‡d%a'‚™-‡±Òõ“£·!˜&œOç2øSæÊ”–À^D"ã1¦sƒN@3ZCÙè>f b¨÷ý¬?a.e/S8¥ŒU…"KJ™àÑpÆý ìõèmú ñw ³F,™NýnA“Ð v´B‹˜ÆOÄ–re”ˆ Lqïþñ1ôî9éF,RL?c”Á†c^âÀÿeB Ä9žÊÀ¡0Vö
+H¹Èº10­œºÞg߀´ü ‰ebJŸÑ[•¾~…@{J¸š´Wìü©-°hÁñu4X9¶œ»°\<r•0mÀJªT•Èv†¢2•ÚL /MÀc/ÒÄbYû?ycöÝ=~{ø4N¿ÞŒ HJŸ+‹
+zyMb:U†ÎÚZZ ͦèõÊ‹±÷»¤ˆ+-ÛLøã"–ÎC›Î¤sØ.^Œm!Â$boµµ%î÷Kñß¼ÀÝ`¦P¨ËÆÕ­’•ÅóZƒ`ßHŒQãNW²?ÝÆõòÓ¸ùLBc[¸¼¶­ Û‡Y"…fÉòUˆ–Xb÷Z•hÆ”Ø ;ã–Bç¢ÊÒ;ئ
+˜QGa]ŒÿÄ‹6 £)R?È
+endobj
+1328 0 obj<</Type/Page/Parent 1119 0 R/Contents 1329 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1329 0 obj<</Filter/FlateDecode/Length 1819 >>stream
+x•X]oÛ6}ϯ¸ÈS$NœdqÚ·4]>$ëfÛÛ@K”͆5’Šçýú{IÙ²œ¢Š ŽLÞÏsÏ=Êß'SºÂ¿)Í®é掊úäjrE×w7“[º½ŸñgüxMÕɇÅÉå§w4½¥E…+w÷øPŽ_]Ñ¢8{Vµ¦¹ö¯¦Àÿ‹õO‹o¸rKÓiºrq=Õ³ÅZÓ§ÏÉyzžÏÏÉRTi;8ŽkùIëuÐ >6T«fK_Ÿ?ÿI®Õ^EÓ¬(lCÔu˜ÐçHÊZ· ìýŠ.¦7“köšàzå|;®¡ÐkRÖ.Äá‡s˜6÷
+A4%uAûƒKÑÑR£"ÁÙW]Rå]M¥©*íÝاë|¡Ô'¤¦ÿQukõ9r ¦•uNilœÁ3 ªVÛÞzNêÀ½øƒí "tUVÝVÆâ»G€È3¢àÖÊ’|#•šÐ5:²gPPLj’¶‘rÎ÷ˆF)K|gHUD ® …Yzþ<§REµD™ ý8®2ž)úø<çD_Ñ>Ô·iäqÐÑIþêúðí‘6Ÿ“j[kŠTßÖ»•WuÍ 1MÔ¾R
+¨ïÂJÅ$8rè–Q™¦G¡bS%OÏ‹¾n]`ïOóß¿<
+×aÄtÓÕ2W®é+ÚOÑW±—ðëË”–5K¯ü6ÙÇÕ…jvVx„µt8MTÊ›q©ÒýZkdA¾kD;ʱo Ã(héÔ±1Pµ Òa€jmǾ¶}Z(ûçhb\»nµæ¶´ÁÌæÁàÖŒƒ=æ&½«Ö›Z²vMô.–ÀÆ|ÅW.?Z…üÎ.u,.›„'…*èÙñ @`Èäš [«&# éïNc,£•¨tøÖ:÷ÒµRëGê[ÂOÿ;ÉF¹/›µO‚3‹µ T ¸˜æã¶Õ`Ãã¦åPuy.†2õIp§­BÊÓC#(Z
+.ñÔý%Ä? ‚œýJ>CwxWâîÃgÉà¡¡Áes½ÉÜÔc£Ü£°Ë-ú¶v›‚טzfRxÅH~ªØúÌæHþóÂ>èš‚×%ZlÀ™iÇõF@q|4X[œZÆä„~mºû'<­»}ÎÏw?òα1‡ˆ
+endobj
+1330 0 obj<</Type/Page/Parent 1119 0 R/Contents 1331 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 703 0 R>>endobj
+1331 0 obj<</Filter/FlateDecode/Length 1778 >>stream
+xuW]SÛ8}çWÜ7è 1ùjžviYZv·¥ é°ÙQl%Ø’+É ù÷{®dcètÚ¡Xº_çÜs¯~hˆ?#ši2£´<&CšMfÉŒ¦‹9~㯕´¦ïÏ“é[&ãQ²xãŒ'ÃæŸÛOG£ñûäœÆ³s˜/i<Y$£æÝ£ÅðµëË£³«)F´\#ÚÙbNË,XÒ2=16“6¡e®)í¥]‹TR)¥#‘eJoH–;µÏ¥ö*^MNÚ­Âɵ±t¯ôJ錶ÒîI
+·?%QäsáqUfŽ¼¡•|·|8Ò`4IÆá$3Z¼†c°Müýì
+ ¡žT¢üo-'ÎÄm'Tš¬.ÂýÔTJfì¢gà¬P«3'ÓÚ*¿?똽~»øB©ÑÞš‚Öª@ÚH‰wBµ²[¡}›5JXë*>zFºæU‰¶JP›
+* r  v¶À c^¬®þ8¹½¾üñ.ò©WDØr…Úä¾ØS¦Ökiqaûþõú_Úå*Í)(-Y¡7’Ìš­¤m(Jîb½—ûŠÝ0(e¼Þw®ðw¸òw ]{N´êØуYq\`í )‡8UvˆŠ†À)'âêöÜ66Ù<¬­Õ¦¶H
+m¥¯­†;˜ôíòcègÄÕrPÓr§|ŽS½pz´…ãº<›å,`8
+gÿ2»S"ÍC#úìP{Ù‘ÜBG=<H{Ï©ê¤Äü5PaLNè+
+І
+÷Òáˆ,´èt7—DèùMM •Ã9±,!Üý=¸ ìF{㬘¤Á=À“æ!¾@ƒ¾Û˜P/ëL¹T`çA4Ð@ÌM´qøðÙe¨BÊ }1Š]a,c°ò^5˜L£T\#CˆOdûøØøM¼Ö®1a0ceÃhþÂèaÒaÖüirMK‹6‘=`9á~wZT`)ÀNPÔ ÌЭ
+kWêóÍýò¦l$凗µì 5÷x4“.µj…˱À éÇ®°ã9.gbk­Yñp¬éèC”o|í,ˆØxÌô
+æxÛC—q@–ü …ÿp…šÿ4v;â EDJ¡«_¹3…°\€J¦ yú]Ýß±¹3~h.Ðc¼ÖB¥ÿä_‚wÒÆÑ.´W5ú™çÄV9TýyR´û2ÁTB'[™ ¡a÷í0ï™Výmïš7Tè(ãù2Ž@"¦PØáû°2+ÂÍÂ.aUîÂÜC0•{º•Ùg¬ïs<2¢ø÷³mª¥°+,ãèág:¾Í ~:´Üá½¢Õ±Ë Ï‘6h,¦¨¨†r÷IîŒÿ
+2ÌŽ­ÜÔ@ûlt=…öc—„„¡g4øŒ­"å+ì‰Xó$0à‹‘Qí¥6½gRz„Åp%±«íðÀpB è8Öh²fªô8ŒŽ'&bÀ¢¹fÂÇ·B`º€jåPjˆn¬jó´— ß(K0–tZi––(\‹
+endobj
+1332 0 obj<</Type/Page/Parent 1119 0 R/Contents 1333 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 706 0 R>>endobj
+1333 0 obj<</Filter/FlateDecode/Length 2018 >>stream
+x¥XÛnÛF}÷WLч*€DÝl]ЇÂIã6»‰Š¼øeI®Ä­I®ºKZÕß÷Ì,IÓLÒ¢(‚Ø–¹—™sÎœúÏ‹9ÍðoNë-W”³hFWëY´¢ËÍ?/ðßiÚó,í¾|üåb½æt9[F *hŽïÛæSNŸ.úŸñôò*Z÷Ÿö>ãéjmúO{Ÿñt;‹–½§ár6Ç×/#ÄQËèòË› Bo¿¸çA‹%‡/I®ÖˆN²|½&ŠÕÓ›KšÏi·gŒV›5íRAbF»d´ËŒ'•çöä©Ê4}º¾}}M*-Li|åTeU§çg²¥,Q5–•ITeð«B'™Ââ· >즟M¹xÿj÷ÇÅŒ&s†x—Žî~C{>× Î°{Jm¡ ŸVÄÚùˆÚC¨öøL¥¥Ü–í¨Ô:å2õ¤Éë£Bš¯šôîRIbë²êB
+iá¤'í"^<½Y5 ôv}Î,ùÌÖyJ±FÎ*5åñ¢Ô&u¬
+›[DùÎÅ
+œ!?ò׻ϻ;â Ú›C‰P9eö•.^ŠßíélkRàÎÇ\ó|cˆØ*Ú›\’ëE² U¦t2>c,F{e(ÒÊ›üüðŠLYé#Cú/ɧÝ;[ðõŽ˜[â03à¬Û8 ÑeȉaD»LUä•IÇôŽTÁ\}ØžÞ_ßâú£vÕ˜¼•\ uFN] nŠuU]ìâðÓ +3 l$ÑL{M•ò¾á0i8œ¬£ÍœV+¦áa±ZS`i‹ÊeÝO›h¾¥Év˜ú¨ÿ¬¸ýK>™N.QCˆL!¹"V”Øro5PeÝ33@©·&µs`4Ô€GÑ@i#z}ýæ=½ÛÑï÷ß½¼wÔháY*9Ëï<
+ÁSSƨö”R¥ [JAô¬ì>G±³Óîa“±´pùIÇÁQƒ1ˆ³†™0­”äåP5Æ9vZ”Ø™L @j „»À
-oïº[åt?
-Ym0k7ƒ` ¡vµßœÞz!N.8ØE¿P ·e?÷;‹ô„×8lýÖ|nõá-ÛE¿5›Y}A0ƒ-»è·ÂÐâ¦!Dì‚·¾_ü·€Ð*EèËZ%Öÿ)­âñ*S†¶*ϯ(ÚQ"SÑäõ©ÒÔ"Çù»÷ßßaE/WŸ °zÆ~c*?×±È}#ŠH´ÛÎÌØ£{)©Î$‡[-‰Ž›B–µ¨•.I¥´Ó Ÿ›ÒÞ„€5ÞŠ²¦Z™7ºÛL"­27Ò£wµEL"7š¢Få‰5µUe¤Ê$!ùYÆM-¢\’(ÊUT‰JIãµ(oû`LÂ%¢»Á›{ÀàѺLÕº­V8p—ÆlUg^ ‰CEck†½í ìM¶‚..ð4äŤ{`TJ™Hx¡©jJv¦=7wÆâäPߘ! ³Î*ݬ3r ­BVIŠõFµº¡WU´©ôFV¬hxN%§Å\‘Ñ­—ëèJëúÙ1´xCž×VotSÅÒw0|xˆÏvañ.þêЉþwmJSÝ mª†±4FT;v¥mI¥:Ï5T®ÉìŠHç*F$ËÇ×_;/ib,œ (O¿ö‹ÈïÊ„›ÆÖa,Œ$Ò=RitŽÒ3ÿ›í1¡¶ýÎmyÁafÁTwƒÎGÑÍŸ š8Ù¾/›Ù#8Ìï±ùð:ð–ÓðKæ÷êN*Æ"sjN‘™¿œ¡z{EÂÇ€™§o™ Òƒ6öe÷U<èx×Èc.Hð£ÞRcdeûÜø©¦ë½'eÓPZéâ´­ý縫ű7Óö·Gïw_1U°œkýˆö°­¦i ¸ì2ú§¯ÊÛv6L0Š,9Q÷³ ½äµ]±6ž–c&£ç¡ˆºrò&‰Þå/ÚXµrt¢x8®À—Ùójȹò,cÚM­ pFT¾ã´`~€TJ$î ¿æ ÓºZÇ?1ˆšÍ”òsí¼é¦U­
-É¥TˆL- \<"T84jjæ/<Ø©èaÌ“ˆË.Ñå f¶Žî퉇—Ý8Ä.Ÿ+DÙ0ì>Anz÷ããl'ûóÏw®Ðä‰þ¦u%7ì× # e~5ÇUvØŽÇÑOBåvÎ"ª®„m3È8Ó†"?’ „!ÿ¿8ƒgÃlŠèL÷ &ƽ|’•Èi#*QHD%ŽÙÝÍÓŽ[jŒ¹®+Û¼F2OJW`ìÖ½/ÝÀöÄ`Rº‹Œ3y±U&1b"M\©ÈÖ$Ú~S#œnŠ¸p>Œ—(T|\ãòsÊ—lÙþß
-ÃTSèD¥Ý@•qÞ$ÇcÕqX¾ß×¹ŽDþó¡¯ÊcÚp‚Îà¾ñ<ï»sÏ –³W#$hXØäNaV-‘QTUÑ‹W/®Z{óñýÝ»¯Ü6+ oöDÔÍ©Ôöš3¦oéKN†¢–³ž±!jT‚FeŠ¦øá
-Ác
-¦3VñãjôËèµ[°endstream
-endobj
-1590 0 obj<</Type/Page/Parent 1367 0 R/Contents 1591 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1591 0 obj<</Filter/FlateDecode/Length 1089 >>stream
-x­VÛnã6|ÏWœnâb-Y’/qòRd“l‘»I-}¤$Úf"‰*IÙ5Ðï”rQœ
-Æ+Y;Ê ×†„ùÉ#|H½[^›–•å~luC;Q–´cµqÚ•…Xí½žt•‘¶éMçJ4î ÖL‡ ªÜC[Ù©}PÌ M(ÝϜĊ„Õåv#hÓŒ)kméVêÔZd¥§Ìv$qtßâ‹e¨K…§”è{%”6!¥Ò× x†Ù=PnÔEÎõ˜€Á›3 Í[‘žyÿ“„{PÞdãú¸"VîØ=3Åj)
-Gc),¬™è.á¤éy@Š;üU[×°Ÿ0üÁyk4ŒÓ?´V¼éñ,Þ¬2Ý å`l0\E›sËLr|ÁxnLb5,ÖWÙ‘ÒOè4Jæô+EÑ™û¼¨âÙ •;´«õ–k'+ò1µ·­aZVbÄCV›v2«‹™õ2H­ö¢†‡ü´bìV’‚ö}Ä:ƒá9œ4cù1ÀdżTõ½³îWµ†ô}ó¿YÕ”|L×®YÛÕãæé@í—Aïuâ=õû0HfÞJ.®n>¾rP»M"·/Gö<kUÁ˲ýìä·ÈøýÞÌÉgéAef}èBª¯íÂâ¿Ÿ0ÚÍv“m…lµuªk¬",k“UûÞ¤Qî±üæ£<îÑÞ%4·“uxã<v“óLoÂsV#ƒ“Ö‡¼`º`Ílì®ï4·VÎø\t+%+w *{“€gû/&ÇÎ45xG)F×à®ÛÚ÷ùK»õ‚¶K÷Úâ÷£>@RwnçØQüÎù…¬0ïµQx5:üИ·m†QÀ*p™&Ÿ—Ý«@¼ÀëÞrŠ—¿8\XHü‚¸Uòžç†.eÞVðn7ä¶Å ¿œD
-endobj
-1592 0 obj<</Type/Page/Parent 1367 0 R/Contents 1593 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1593 0 obj<</Filter/FlateDecode/Length 1121 >>stream
-x½VkoÛ6ýî_q‘‹Å’_qœÅçV¬y¬6 Ë>Ð"±‘H‡¤âëþûî%¥Äq¬¶ë)RDâ%yî=ç\Ý»Vzø¯{Ž!-Z½¨£ýI4†Ñdÿà¯0k&­ø´ûÌpÇx‚pÀè^’´strñíUš‰‚Á/¤²/“÷­tû½h‚~ýD9aæFZÑó½Ñå.u.Ó%Áœ6p±PÂøãÓôûBw0¦““ Ñ•*uR+ؾN(· )S ô¦J+88 ¸¥’3‰¹´Î‚žÁT» r²˜âpy|DñÆú§c#HÌ\&ꔆр.žé<× ©n ÕE»_Q
-ÇÅŒ•¹Cà"ÏmTmŒCJĘe¸Íe¾zHÒĵB"‘íPu¨ÔÕ}š¢©ûTqýYaçþ
--“
-Ù÷S'±bÊžŸÇb*™Š*ª)Æy­9OT÷-F•¨éA›ZæFÏ…YƒcÅ])T*"8[® )<Z¤3
-BJäÐÆ{/.“7çW ׿;I~>xûºý]Ã:ÁkX
-©ÿï©‘° ÷~QjƒÛ/¡ë5Õÿ?¢nÕ~UZ¿A;l‡®¸Ã±¨Ëêƒgo†Õ›ßáÅ ì3ešA|ϼõnc[N±E’ÊàãG¸¾nš X¿!ÂWT[ ú“žf(t°ž¯8cøaÀFhŒ°s­8 ç…𳔕¿Ø‹ÐkgùLS TcÉg¼®çÿšÕ·ºÇô¥~¿•yŽ=<…ºý6ªã«Äñwüüyüñ餚`úcÌ'CœÁÇa¸¾:8;<€K£ßãÇ:- dŠÑDL„wë ݽMíjîDX_´„æ0 ¥£ðѧÿݪ™B{»ôî$iýÔú ÊódZendstream
-endobj
-1594 0 obj<</Type/Page/Parent 1367 0 R/Contents 1595 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1595 0 obj<</Filter/FlateDecode/Length 930 >>stream
-x•VkoÛ6ýî_qjSDO;ŠÛ"8Š­í6Û‡¸Ce‰ŠÙH¢"Rñ‚mÿ}—”äú1u© ?HÞǹs©‡ž—ÞÎ}ŒDYϵ]œ»v€ñäœþûô)’ÞÕ¼çܸxyBÁ„þÄ i×Å<¢yÝó4-J!Ï–ñÉüKÏ…å¹ö„„72¿^Ï»üÉ¿8ú¡C€E+Ñqôã»Ó‹þï<_ò<îwi}X9Žú³U¥Ïï‹5­µ6$+yÄätéo‚X×~¾Ȩ;[ÕÁÂb”5+l7üƒQ³ó /_¢Ì`%pÃÒIEtïÈj)Ÿ¤#³å·BîwT2U• fÏÄ?zíܼnKkù®–ØgöÈlßÆL¤aÉe-8†çÕMÐH~Ì!kS<‰
-9c1”@&bž<A­jMj4£9t˜ŠžseÇŽ ³eh뢰r×ÁR…¥ª
-Ȩ䅲ñN¡’U˜¦O9}™sK·ÙÈö5pJRŒ0M bY)È•¨RZ‹u­¶®„RÕÄÀ^…  xN–Ó”Âàù.ô-?N%Mu´ŽÁ¡–Ü àÔŸð”!2"‘«¬SÂ2¦Vº3S~ÏHŒË7­§†b–?¶Ç: Á@Ÿli0¨qnemç´÷=b1éó·x+†L0ñiÏ"Õ(o)¼ý;0*”9EÕ¬rź¨ÀþäjÏfÂ÷p´´Z 'øk×>3ÉÊÌҮG“r1drq²g·U,x|ñ¹È)$ñwÈì]É
-XkyÏT‰¬Kçà•ã7+Øzñ¹Ãé-úG²è÷aˆmâÔ»{:†„TĶfÌtï;R‰¢Í“4‰*^šD”M¯~eΖzJFÞ½~ÓÀ[Gdž4Çi=h2\Ç\éš©”çä8-+Ú#’—-GBÅEŽÅ°ÕJžb-Êû»RTÅ)VBªÿõbFµ Usaöþjº—ªÜMBªÉ–Äbq¨óµà4?7 %%›(˜4òm²wA|x>}Ééw€¨‡úF~Ù³
-K|¬Ìü;8óé®Ö¢n M\Ï{¿ôþCy‡endstream
-endobj
-1596 0 obj<</Type/Page/Parent 1367 0 R/Contents 1597 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1597 0 obj<</Filter/FlateDecode/Length 1552 >>stream
-x¥WÛnÛF}÷W Ò°HI¶%9AP$MH´QQ0P¬È•´ÉUvI+BÛH$­¦MÇ wçræ̜ᗋ1ðwL³ ]O)+/FɈ¦·3ü¼™óÏ þI+÷âönœÜœ{q};Næý¯éýˆîh±‚é¿äû£-²Él£éÙ¯V¬åsJe¥ªRu’§V”K‘Xi¥¡?ÉÖÂÔôþ×;úûÙåâóň†ã\.r6ôâEï™´"ãGéý]ô?œLùôxšÜ&×Éÿèé,«jíÏÞÐxìƒ ‡ß®è äï#¨7Ò¼ dËeÞ½<¸êŸ©Îœ!Q…{'[{U-U•÷íQ.d©+K¢¦z£,í´ªê+™Ýè¦Èi)I, Iµ¦LW•ÌpRã° —¡ºN&œ¼Ã•®)×¥P•²\êÏ­ Ï•Ï{/QyA…ÎDA ®%>µ»Nsâë,¡tµRë7óùpªôñÕû.Lˆj2õwÊñ(©¹$] ãÓÜVzt
-%ñˆ¢}k®ƒNò„A+Žè{ƤÒ`N®q œ<\†‡±2¿ƒü{U>ár-uÞxªÓS=öªÞ0ã𬋣҆kÎèšér‡ 
-¡­b&­*%Ijuc2™VÖÂG¶ñIÇVP® ø®Í–`ú¨=Pø(mÖ²³3Z×ßys§&tˆG_)Ðü#%±ºëºÅà•Ñ%'߯È1úîÍVОCþu qð-¯âbÒ©ñ3½Sži
-$9Ó]¼ƒ}Uˆ'*".‡È¶äøó¬þm,Æàá’w,7Ofɘ1¶=°ŠrOÑ'V<Ód5¶‡«£>fµá¤Î¤RÀ÷&’zˆ{Á1ÒÝlZºN‹A¥ûfˆ’ôïóÐú 
-õé^;´/Žûñ±ÙŽw®3ì¾›Z$ÁtÖnâMf'Mqðk“[Q #t* *¹U «¦ÂÚÓ`‘ˆʬେË6CÍô«&
-Þ€ð¹G²3!%66h±m£K;Š4TeWˆÚíª‚Ö²’¦
-Œ¯¬ Šå¾Q¡õ–
-…E”×Õ ó°tŽ§øHœ_Ótv—¸ï«O¯Þ¿~EþÌ_!otÖ”€×í$á0^ÎFü=¿Çho,®–ÅjméCãÔ›é<™ÞNðùÈGG36ñãââç‹
-endobj
-1598 0 obj<</Type/Page/Parent 1367 0 R/Contents 1599 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1599 0 obj<</Filter/FlateDecode/Length 1193 >>stream
-xµWÛnã6}÷W 6}p€XÇqìêmÀA·¿Ðes#‘^’ŠWýúÎèfYNêl. bÄ9×sÎŒ¾÷Bð7„Ë!œ§½À `ÞF“KüˆF@Üû¼èù×Laãñÿ‰
-V(+®"¡r ‡W¾pÜ݆ZÐJse3Î…ˆNßz ÂÀ›`mÏ6‹cÉ¥P}zÞJµ”*BÇÏ›8¼uŒ?PäÖ£äâÊæsPú¯7ºIbŸ‹s¹À«3Û™x¿Ì¬°VjEý}£QÿzaX"j0S;kTIÂZù¨_`¡ãE~¢WR•ë›ý0À™‚¥
-áoõë˜ìî(ßG
-*aY$n¬ úYfX‚
-"-“¢[­¢mŒN7ÎVjX[¯t8­G;" Ô¿pì]xçÞ¥7ôàV'ÌH;°Á%Y@År•F8+-ÔŠÜ€ˆ´¼oº€‘¥F줚ª]«6Éq)爷fÒþÐ)“Š4 7’ylNŸ¥Æ#Ñû™#†:­ØâH%d9‘`W=Š$ÖÔyª Ã…†ú]ºÅCäi)‹„÷Î
-'<³N§òßò$MŸ"ZNÈî{•ëÌtÜV¨Lq±g„fÌÓâh Ö¸µ¶;ŸKÁ¦˜…‚¸³®`B¶£OCà’(·Œj¨u\Êt£qc³‹º"®«†6»Z3ÐNê«Õêt"qáÂ]éÓowý“»Ó&I€Ð G¤Ó©Lýp ·7óOÝÛÝïð»ÞäF®ÖîúüîÂét<ÀéÜf
-n$7ºLÅ¢¦(^Jð¬ãæý•,Xø*hÇÑÁ¡·_f7‡pl›=¸1ÉŠ™K^ ¯ØJPÓº';ß ÁÀ²¢×(
-lfÍ!ù÷‰Û
-èåf~™ßΊ­¹/gòÖl/v¥·™Ž$Kî)#ÉGíw!dª\ÆÀÏUäåfšŠ¤“³»À;­Ú³ø¿­j,>WãŽån "WÖà%Ø3ó¡[¾ªGqSš#ÅF)F=¬x±?Ë‹=3Z‚˜U«â>÷ýëIµÙ„c|ûœã‹nõ6p;»ù<ƒ/FÜáPâ F3þõ…Áe@¯ÆýjzÂBXGCg±ÆO e…ÈŒÆo|1Ä7i:Lc.z÷þ7Xêoendstream
-endobj
-1600 0 obj<</Type/Page/Parent 1367 0 R/Contents 1601 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
-1601 0 obj<</Filter/FlateDecode/Length 1233 >>stream
-xµWÛnÛ8}÷W Å"jÙ²ãÛ¾¥í¶ ²kïå!@@K´ÄFU’Šë¿ïJr%M²€›‹ˆäÌ™33‡£¯½†øi6¢ñ”¢¼7 †4šÎðy2çÏ~¤_˜,‚y÷ù‡Uop6¤­6°4㟘`e8¤Ut|ônõ¥7¤~8ÄÉU|œéDD$¢HW…#[m6*Rÿú¯AeÍ Së•Qe”Û J‘ßlU±VEXýŠ9#¿VÊ*'kkôÔÜ/çËSoÓèLZX Bz‹Q#ãÆæKF«B}{Öf—‡ØÕLˆ‡®¹ƒðð¬Ñó ]* ˆ=]sááY£æሖÒZ¥ ÊE!™£#:eÙ-¡–múXëJX»Õ&~;®£XÙí4ùÓ¦|±ÇŸ˜ëúÔܾÇØŽ±kY•K!p ¦î-¶^I 2Y•¥6Ž6ÚÐÒ¬¥Ñ–þ™»BZU$'úú¸*"s¦Éiª¬Üï¾~÷šÓÈ£×%ÛÚèü·f=©¥É™ÝÍFën8C]OB{^k¹Õ“FG‚‡¦T~‚å.öæúÚôâ»L·hh«­êCàÚ·ïÿ2FO«kpvBaXÏýєǀs™Õ$âM':g(S…$±q¸Ð1tû×+h–D:2*&½!Qz§Š„b]­3I¥Ñyé,w_Kø8±Ó6 4 £ip —z °N iwº2´ùZЯŒ‹"]2rìÁ¥FWIZïe™µ­ìRáOòæJ*–Œ9 ÒðSïsp¶ pÖ01>©½‡Ó`Ðg•+ç…ÁwäcÎfgíßz ¢TXVT9¤…)Èîϲ[…è1<#3),àÜIã¯u+)Õ¥dÙÑX€
-I>¸© wXk,Øßø9fDd°ÆÝ¢Q{oÙŽtq'T&8,ÌÂgUTß TÒ D0iwÖÉü=ªÀ¥žRLëñ`;‚jwvÀÔç=FÒH'û+5®N¸ è þl¥xÔØ[àå÷„¸©÷¨>‚¹µH2Hd˜¨
-öŠšÅ•hpÄP‚¾+ë¬[) Zïö¢@çìu¶(Vü.Qeþ:5`¥Íiíx{kÒÙ„ÑFKª.‡B £y¹ÌêþçÌ(꼾¹ôµ1Ué€8cˆˆÑ;7Ýþ˜ø¶q~H|›™uó‚:®¯Fþè
-ùÎ}é@ê¤%æÛ‰[î\„ÐÐm/†¶[Hš58¸×™|•wù`å3
+Hƒeíu‡À±0d¾¼”cÀtÅò"pi …8¸neÅóùÂEÛ4ƒ[VĬ¢˜šÎMì”3@¨ #ÔÙ×ï]2¢Ðgâ…uú+7éŸ}nÍÇ¿ªL4 P\¸ÐªôÃ’ƒ…LfÑúr²Xp¢Ï£Ð(\³€VWH~b†4d:?îëœÕ©r41ÖÈ“ìRý¤s{ä¶ &ªç WuuÏAÈÒo…Ö·Ý
+XΛ‘áqa´à2¾««—Y°{J»z­¡yP\)ÇšT˜ìâ8ƒ~&ÄÒ£Aèv¿gIK
+ATïPÿm•‚¨º”òmx‰bp¢÷ÍvŽ¢'Uâºj­Ž|7ý¦s¹¦I<¯)¿²†«fxVk"/sqv(n‰A
+¦.(Ô¡{p+íê~k⣢ÏAÖÞM1éî8iWöb›òžB‰ÁöÊ‹PRóŒn¯Ü
+(®MÎ~$nŽb
+D/kr ¥ÒÖã÷“çÂÓikÐí{…ÌÝ-1]âÓ2ŒPp01ayo
+/m›E´Z.ßà÷Îþ׌[á[È{'sü¡c¶YÒd==éhøw¹¾ŒÖ+ü­„n·¼çíîâ·‹¿5š~endstream
+endobj
+1334 0 obj<</Type/Page/Parent 1119 0 R/Contents 1335 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 721 0 R>>endobj
+1335 0 obj<</Filter/FlateDecode/Length 1505 >>stream
+xW]oÛ6}ϯ¸@QÔEcÉ’¿‹m@º.CÚn‹÷´ %Q6IôD)®ýøK‰²ìØk;±MóòÜïs©¿¯á/ yHãÅùÕÈÑl6Æûd1Ç{ˆÿRRŠÅ‚o勧s/hEÇSoìdG€õÜ[+NglÖIYùß~¾
+Çà˹·¤œÂeàMÚUFw̯18˜,œႆ3o
+  ya»b fs4±Zàê‚»èöcàäd·ì÷ngxs‹8õfdÝÖtdñ‚q
+—/&Ðe¼õfÅ!?‰– »Z¥ÈÍl1§Ub£9¢U<Xm”¡Ê²kŠö”ÈTÔYuMª0•È€xóþÍ VôrõéÊ¿En-ÎÀ¯Még:™oD‰fÛ©xt'%UI¹Àá%ÑqË¢•Ò©”öºæs#cs• v¢¨¨Ò'êÎån#Q723Ò£w•µ˜Df4EµÊ«j§ŠHIBò³ŒëJD™$Q$”©¨¥’Æk¬\vÁÚ¬AïºHÕº††F$p~ÆìTo¼ÇÇœ}l5‚.ðE3aÿVîÌ¡BÊDÂvMe]° ͹©Sc¼%Bæaµ)u½Þ3Ò2\$)Ö[Õ`W•´-õV– Ô 7'“a®ÉèF‰ËpÏèRëêÙ©iñ–<¯É½ot]ÆÒwføðßÿjÃâ!IüÓ±=üwM"S]#Yª‚±4F”{v%M!¥:Ë4 ×döy¤3#’ÅÃëo3;+hh¬9¬|ú³^´ü¦H¸UlõÅÂHÒ)Ý!•Fg(8óÿl³¥¢§†PÓt綼à8 ã`
+˜£ßQtgógÁ‡†N¶kÂËjç÷T}8 ¼Å(ü’úÜ“Š±–9˜§–¨¿œ¡zwMÂÇ€ù¦k™ ÒŽƒ6ðewUÜëx×È.H°¢ÞQmdiûÜX ¦í½Ge“OZêüi[÷úÏ1VcÇAMÓ߽߻‰©‚æLë´‡mð»H+˜Ë.£ºª\òDÀ8‡ ¨©·À'ª…Ú×V€ú’×vŘ<%,¿²±ì†w_ÞlD¢w}ù ‚6b=>Œª¡³ln-¼DžZ}
+n™‘³ ¨+ƒâ0§²=g CS gè6K˜åÕú4±ˆÁÛ¬¦Ÿ+çV;²*•K®¬¼d*™ãÊ¡Ø@©Q]1!þ©ÀNI÷G\…‰.^0ѵìoOÜ¿lg"vù\.ŠšÍîòåFx7MÎ6¶o0}ç
+ éZ—rÛOß!Ê=¶7¦[sZtÇÝyñ(Tf‡-¢ê*Úö†Œ7ÚP$â„â"ðÿk±É£3-س÷N>ÊRd´¥È%â‹:Ç
+Ô|\ãÞó”.é²$°†mèñM®•¶×UÄYœÎVGdmøþXg:ÙŸddÌ…®Ïs‡wjûñçy?œÛxpÎa…À Y¡™»„ ¶@^QQÕ†^¼zqÝðÙÛïoÞ}xå¶0œب ƒÔöÆ3 ïéKû¢–Ùž±"ªU‚&e¶Fxq„öKŠâhb6ž} §
+Y‘ˆùÖxÿ’cÒO(y›qqm𑨮 |^û°¶¨üçoýç¿óAÿÏmö '/¼Ù4 ÙŸK~f4O1¿”úšÞöŸfl¦ƒžpcÎGh\ö¥áyK ÖbmècmGÇdÆÀíÝÅÂGZ]ýzõ/ö¶aŸendstream
+endobj
+1336 0 obj<</Type/Page/Parent 1119 0 R/Contents 1337 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F1 4 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 724 0 R>>endobj
+1337 0 obj<</Filter/FlateDecode/Length 1174 >>stream
+x­V]oã6|÷¯Ø^ìâ,Y’mÙ P¹|Rà.×F‡C)‰¶éH¢JRv ôÇw—”GqRZ$0l‘\îÎÌÎêÏAþ…°ˆ`CV¹„§µÆÄË™?…Ùrßé¿
+é‚ÇQ·ð!9‘Ëä&€3HV@5L#¬báÏã%$¹-1€$^Ö3ô†ÅOÉv0‚Ÿa’Šj’2½¡“›3CŠãµ¼èÌLòѯRT`6î/>}¸
+š®ÃÛt¦Dmw°Æ`Oä}'[÷’é‡úv&X5†Õ€zm®CÚPê$ðZj-ÒÂEI\Ú6ø…xi¯Â]ʬ{%”6>$Òå‹ðôow@Ù×c@ ^í\T:IóÜAøŸ„Ûò*·ÃX±g¬™)VI‘[ A°¶¢ô+HÇ3¤¸Å_5U…¦ãûßÙeµqø֊מù«Y&¼²×,ØRy“qb¦Fr\¸o bÕOÖeÙ’Ò™ç4ˆæð Á¹ý–ÅQû~–{, Ö-$ò1u ˆÖhZ–ň›H›Ô
+))†0#C©UNÔèÿ­Øv+ ^ó6b­­ð ý3eÙ0„‰Ä¼êeõ­5ì¹úpƒuó¿Î9>†[[,Uõ8oZP»Ð9Ü£xí íÀ󢹿ÄIŠ6ry}÷þ…{"è!¾itëi£òvªöV>6ˆwñщ­ñ˜QoÿƒJÍúÔDßR¢½E–žƒéuI/ºi}—î„l4×-Î#œ@ä•9”‡Î©‡X×Ðö>sá‡igšS£{Ã÷CÛHGòû-2cÞ`Õ„3 ß6ÐwˆD³¡ßJp­$å±WJ–öŠî_ø8…¡{ë™Fhøø’“NNÄ}«Àµ«²}Uòì©g,^Ù77*õ ÎÚuÂÿeËøë—²DhCLn–í8ã¹ÏCˆ ÿ,¶Ês†ÿEÉ-Ï \ɬ)Ñ‹mÓRv^ˆï‹Ár
+Þ"@é棥F(£Uk wÕÑ,^bàÈ!½N¿ þhøE!endstream
+endobj
+1338 0 obj<</Type/Page/Parent 1119 0 R/Contents 1339 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1339 0 obj<</Filter/FlateDecode/Length 1204 >>stream
+x½WëoÛ6ÿž¿â‹Å’%¿ CÇ]±æ±ÆØ0,û@KtÄF"’Šk¬ûßwGJ‰ãØ]°W •x<Þý'ön/‚6þ`C§I±×†CxüÑ7øІ~7
+"èøï^?æ0ÇØ6î~ø©b»ƒîClŒñU趴Q4ÂÐ^ˆ£áZ^ÀwmèŽz¸Ò=ŸåxºåÌpÒ†LçÝN },²×Â4u¥µaš4ON/¾«‚ 'JZ­òœkózúi¯ ­»Åhtµ…Ër– “m¸J2^08J !·e8•–ë…†ïŽy§U¹€K•‹d'š3«4\,eub8éBQG-ßR+¸Ö°Èi†À—2±BI8¸á–K{
+p J)æ±k@Ía¦l¹JXL¦p9>¡xmÜÓ Ue˜êØŒ×èt‚˜Ð™#fj)ä $ª(p÷
+ ì}©dܺª•²ßøÕ^µÚ¤z°TX0c–©_¬»\Ûú‹*ÁdªÌS×
+Ä{$_RfÒEÕy)Rs7î7S‡Thž e‚{àR>gen±pžç&¨¶×hc†á6›9ô*¤)U‰DÚ=êPWP£û´»5„¾®ËåwŽÖhzZ&â3õB
+¤`,Óeh-ÖI9œŒ¼“è¼®ßõAÈò³Ïù„/"[ó+4£BfB¦ 7!e¼@ÅJÎSCòt§Ïæèªk3“)fϲ ì6Ãä–0’ƒ£G—R"î(k,Aí.ÈÛDƃ{+ž-3·‡¤-W%Y¨T̽\6Ð"39š•±¼Àì_¹óÈ]e†Šõ¥Öñ
+õà‡Øœ_­1m"-ôfMwyú=f!£~-+fìy.ó™`2¨è¥nXšÖêry¯ÐL„DMÎGRÈB«×å~Wr™ð
+CÅ ³¯
+ܸ’§t 2pQZ
+ëö‡˜8FiaHÔŽéÝétïǽ?BŸ| endstream
+endobj
+1340 0 obj<</Type/Page/Parent 1119 0 R/Contents 1341 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1341 0 obj<</Filter/FlateDecode/Length 986 >>stream
+x­VkoÛ6ýî_qj3D’%¿[C'@Ñ¥Ýfcûw¨,Ñ6ItD*^°õ¿÷’’?¢6fÃ2HÞǹs©ûš‹6}] <túâZÛñôH—´h£×íØ#tG=»·×µ]¤ n“úöQ
+w´Xw8 E~…èsv=}žKv½¹0²—Óg,;×mŒ0]Àµ»}2ßë1 €6¦A Ň+q:ýRkÃr)’Ù½÷a|^ÿpsY¯к°4ë“U¦O–ņÖZ’¥<`ò ªôïx­S ‰ça…߯¦\üâ7®øa
+ÄÿÄ&÷óý@:ÕÜ¢™ ‹ÝS£Y~¹áítŠOxýi kçÁOHwŽÌæòQ:2ž'e¨W%$e*K©ˆ9˜_õÚ¹åíeåýeyÓgÔ;ù)—¹T®«»bñúº³>&¹ÀE†„±J !_<B­rM¢™Ñl9LO¸²CGúñÜ·u[±tßA Rù©ÊÖAÊ×ÊÆ;…Lf~=B$ô0ç–nôŽíi8”¡~šþÃ<S+‘E´›\eQ ¥ « {å?04à YŽ"
+ƒ'ûÐwü8™4¥ñ£<‡úñ €3ü‚G ˆDùd3µÒÜŠø#1.ß”žv8ny={H\§° }®ý„n4r´;¹Û;-Ä=×6Uâ Üâ¬8ŧ‹T©¤œ »ÿ £BùSTÓ,Q¬Š ìo®l.øŽr<ÌZ³Sü³ïFŸ™”%~LÉ×S„I9k19;=°[*®yxþ¹ŒÈYK¢þ­5:[ÙeÊÖ°6hº/T‰¬ŸHç/à'Ç9)V°õâs…Ó[Ô›²ŽWçÄNn›8õîŽá!±¬YÍ
+endobj
+1342 0 obj<</Type/Page/Parent 1119 0 R/Contents 1343 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1343 0 obj<</Filter/FlateDecode/Length 1489 >>stream
+x¥WÛnÛF}÷W Ò¹°HIÖÍ ‚"ij4@ƒ¤±Š¢€bE®¤H.³KZÚþ{Ïì.%Š܇:€#“s=s梯WCàßf#ºR’_ ¢ùœŽ¿Ì h:¼‹&4žÏðy6ÇG#iÙ´¿²ƒè.ÈŽ ߈Òd<‰n/½¸L¢Ùù‹KŒFã£q+çÑ(ÞÂÞÁït|ˆçøâíâBøñý€îh±¢a4¾ÑùN¦sZ¤.Ë-’mU–•F'´SÅRiz½ør5 þ°A–E^½
+ÏFÃhÊϾ¼>—’ÉFӋ߬XË—Ë*‰U¡ª(­È—"²Ò<IC‘­„©èoü¯KúçŹ¡ƒ»&iEÂbñýO¨ï3êf.3DôY:³ªX{Á1äÔ‘ÈÈ…ü~E{]Fï¾ÚH/8 ‚=²ùÒåß7ʽ›®LqA†DôŽ¶ÚX¶ìQ*d® K¢¢j£,•ZÕ‹Ìnt¥´”$–™¤JS¢‹B&ÔvárYnÁ $ì@¥
+¡™šLZUŠ¢ØêÚ$2.¬…dsJ£¥Ê€åÚìi¹¦OÚ•üÐ\-ÛMvFëê;oîØzñÆW 4ÿ D‰¬>uífƒÇietÎÉw+rˆþT³´çÝ„Ø{ÎkÏ“ŽížèRy¦q
+ýÃfà¾Pc¤ †ç,7$Z¤M\[óœß0—([5ºXí¤$®o˜.Ï:µ§ ^Ã:i9ùEõ·øÞHùöá]ß–2Q+•ðô;§h9<;ç:6µóT3°!Õ<ptÕ:”lD±–)&¡æ™\5cÇ£ÓTØ— À­UßM¢9V>"⑈Ž‚|­Ñh)æŸ4TXŒÉMÒ ËמB}¶À>˜á&I¢kÌåÿoô¸Ïw:ƒy:ŠÀ>Pû=³ eñM#²ÌíÉkGl³x)Ý•À ‹€Ü>d.Úä"kò Ë5Әτ ÂØ Vc`>ö°Naöçnx[i-¶Ìã5šBf…¬Ð»PCð¾\Ue$*c&ÅÂF…ßïnÒ†p¬;4à
+endobj
+1344 0 obj<</Type/Page/Parent 1119 0 R/Contents 1345 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1345 0 obj<</Filter/FlateDecode/Length 1341 >>stream
+xµW[OãF}çW|Zú$âع§RÙ¶H< n—¼TBB{’Ìb{²3cX÷×÷|cç‚í R d滜ïrŽ¿Eâ'¢Q—zCŠ³£0iûføÒ`Ð 4GÁˆFcüi$Íq6¤~Ø "êGø;ŠÂ`²ù
+†ƒ°~«Íôº|·:ÜÅ…ÚÊS»ü}}2œ¬Í~ž²Ó†åÎE®i:G&Ãñˆ¦‰÷Ò4nVÐt)­¤Xä4“$…UiIV:*¬Êä–’N¦ßŽ:œjÙlÄ:ŸWÿ^ÛoÑ"Õ3‘’Ì)«ïë+äd¶J…“´Ô™L”iÜ øsHíî0è#ÆbjzíHwV" ’ÎÜ­÷i®ÒMñRä ™Ó$ÒT?ЃÊg*O÷Hı´–TN‚2‘çÒU™J…áóœ­ÙLÔñD½ Ëñ°ù€®Ê‚z–v"Jµ¾£TÝIøRö×*&Œlô{]€0Æø ·¢pKª^F~/”AVüê¤jÖ±2.Œr%ƒr›*ë|V“Øg\\”1·ò,‘yé:ó_yÒHޜوÈd0Ú»áÙó¹ŠÊú¤çÜÀêçM¼¼u"¾ƒÄkîU,Ïli‘C›Ó?ÜèR¦©}"¬8Ö…Ï…Îlkâã2³hK¥s.ï;ng¾½î¨‘ï¬W+Õ •W-¹ë§F+—Â`MÔã"éA”]:Ê1mÜáö'´¸ïwé\ùDM·srpMßl¢ÈÕnV Ñí\ënWÂÚÃûôg4®})Ÿ@jÛº#µ5ñÎFÅÂ+ú}Ã>hÃëíãŒ~ÜHíDºcT¯&”ǯý Ž´¼QmÆ—¦ò2÷l
+#¸Éª0×KÙ_[ë¤0â @U&–Ę«e#¼Q •XBÝÝR8ÊJúCg‚¨R,Q*0ÑLC}¤:F KôMþÐ+w““)*LQѹf¹Åx¨W®qå‡ØÓ%W"ƒtáÕf\X§3õou’•OÀÓ ì®PŸR^)î€Zwb9bO¹ƒ‘§-àåpKÍJÖË?nóX %–z
+zÍ:?ahOHBDŸJfe'T) Ç¼ÖÈTe+ nF=®è庈Ïɶãµz¹+H0¨§O¿Ý´ŽoN6©_Ôçå1™tÂI'ÒõÕå§æíægú]¯J£KG7­øæ„¢ÉdØÆÛä”®‹œ®Tlt•Å6Éc.c¸Ž‡Î‘ýW¶`é+Ô¿¹—ÉÞ¡=·_ίö›r×ìÞs*2W±ïaÖÛb!¹tÍ“Ï~U
+ÁcbvèÝ ÿ÷™N”Ho9#«ö›-dê\öàÿ!òv3D †ÊÙmàR=²øb©6ŸÃ¸a¹ Aâ*  s1®E£á "< GÁd蟲®Ï¯>ŸÓ£¿ÉØaÆ·èfí¶£!àÇ=jB<¦ááTZÇKnºÄ»¥¿
+ßÎýᆻxÎÆ‘(p6Nþ>ú¿&ƒendstream
+endobj
+1346 0 obj<</Type/Page/Parent 1119 0 R/Contents 1347 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1347 0 obj<</Filter/FlateDecode/Length 1188 >>stream
+xµWkoÛ6ýî_q C
+Բ凬웻.@°&Èfïñ!@@K´ÄNU>âúß÷’œTÉò
+-‰¥)Æ4Ö;L…¨8±­ÁX„ÙˆîGžfU“qCJ¤$·ÄªJîE•Q*í¦àT+YÖF»2씟7Êužé ]˜DÁÌ-\ɆFmªw/­¢+7Œ~v¼(‘UÅã,˜\I›åÍV×EWÓ&gþ¤Û¼™u·¦QGsLà¾õ6Gçg.œ$˜01{ëŸD)Œï ~ö¼— { XäþÓL}”3 ¹*[¢»8ç‹û³Î €ß˜s•ë-Šœi¹ãÊß0žäŽS.kî:Äw·Ö€tO¯Aÿâ¾Ç”?ìôê؈ƒµbO²ÂƒÝ1Q0×ÿŸDe¿L*¸ õ^^¾GüMîÅt=S{>~>ìì‘iÎÁ{¼$\&œ½Zâö„¹€ÎaOÛ$ÇW-Þ$ €[~Oð»½?<«_¡ÜF1„":šˆ=rªgóÀ¥eíXê¶Ë»CW ê­¸º þî„yV¥t]Ø,ó*,1ó?èý—2µ?{fZ×ZçP¿Ž¸8±Jé¼Åe{‘¿Z­üå%eà@†aCF]]ü‹hW©TMŠÎ“®AÒô¬É¦›I´ Gâ>×üúp>i^zÖp®D‚ƒƒv
+!à©ÜÀšþ¼øè£å‰Ôó­¤{HQ³E&ñ–•—(ŒÂ¥ÄHy J€ñõÐsžìrñlå¬"gq+*Q”¡âê&êšóŠ6ûC;  guµ(î­ÉþFUP©íÂÚøø½aÛ ˆ·*…Ó8ˆÏ¦E³`ùâ\-/?,éZÉÏèôQ&Ö]ܾZø0ŒðjOi¸ã5=íó,Šƒh>A¹c-GîÌoëÁƒo/ÁÐàendstream
+endobj
+1348 0 obj<</Type/Page/Parent 1119 0 R/Contents 1349 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>>>endobj
+1349 0 obj<</Filter/FlateDecode/Length 576 >>stream
+xeSÁr›0¼û+ö˜ÎÄ|tÒf¦gÜ–N{èE‘Vz®$âúïûö¤ãŽí±@Oo÷í®~/rdüÉQ¸-!‡E–f(—«´Æ²®x]ðÏi´ÓÆݲN‹Ëûfqó¸Dž£ic“²®Ð(p£,C#¯±ßÛyP gáûÓçŸàåi ¦EØ1ˆé5$Ù ŒåüÎxÛ’D0dÁ’œ÷A+ƒÒ>8:j•~h^I†$¿e‚ºzÓ6ôÇ©ñÁØgc¶ë R#Ã(Ò–‚xÕ Â¬„”4Ú€=yož¹æ@îÕ‡Zðñž:&Ì #Ü?h.ò02rô (Ovij毶ð:€gÀ¦@§£×ÎO¤oåIº¤Jëç~e…só¸BΊ¶HŠ:ÍWH–UZN3’•ýèt®;{ÀÄŠSIꞇ÷GôpÍüÝn†yD[¢øObÐø¦Ý›‘ü0Aî®±íÇ®Q‹õÈE69˱™Tô×`].Ä`»íAcc¤#OmÀ×í¤è{xÓàØÄ‘õ"ð7£4+%†^ûhzЛ¡˜ß{›w /P œšYX°KbÙ<tŠ(»4ö!†H sš]rZ“k 8‰ ÔÀÑc3šYJòaŠíh§@
+ æ¾xJsÌkuˆ©9Y[Ÿ¬ÍK¾Jõ-ò;¾êêÛzs¿ÆÖÑ‹–IŽK;M§JÎåI•­þ7zYÖiyWðµåVyVÅ#ŸšÅ—Å_"0·endstream
+endobj
+1350 0 obj<</Type/Page/Parent 1119 0 R/Contents 1351 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1351 0 obj<</Filter/FlateDecode/Length 1400 >>stream
+xWio7ýî_1
+H¬Õ}X@?$iÜ
+p 'QQPp/‰ÕîR!¹Qôïû†»²®]Û¨lËö’sðÍ›7Ô÷«.uðÕ¥qú#
+Ò«Ž×¡áhèMh0ãï~tD1&:¼é%þéÐ`xëuip{ë©ÛÇ[¹†x†çd4>YaŸÃñÈëSw2د¼sldóô†í»[êuh#ÉÑxBóЭãIÐ|Æ„>ýµûôáž6I¾”Ùõüß+6éŽ “Vàõ`Ô|›Ë$”Ù²Ø0 n·ÜÐ{#Þ0Wä󲫨tvC:/=Kƒ&¥b‘/³ö&ôÿIwæ{âuêµI2snŠÇ@×k•ë jŸo¥Ž«ôŽTLF¤¾ P«¥Ÿ[©2÷w¨ÕyNô!úio(P›§@V‘Èv”¨@°íTN[‘Yfo*[&;'Pie!R4V$ !i9á_?¾¿›ýÝN¤OJ—AQQ_;7šWÚ.¿ò§0»äÞ©,–Ë\?‹ôJšaJD°6dTÑR©BäHϺ#Ü "–V ·É¬”ælc5=ƒåM’p¨Ç*IÔ–HPÍïC7m|„ÅêžMú!´~‚BMņCSß pÊ3;—Nû®C·Ì«®7è÷P2t~£h§1é7úª™n¬5ßJ<¦í}ùÚV0l*CÀ"césÛÓLZûØc—3„>²DF~ä¸Â$LÌ”D®£üÁü)B™¬aÁ5ð$Œh+íÊ!|ðf˜³î(å ðàœ;Ųã[DÎâ@\šÅ.¾ÙDŒw”払ÀØbáèZÂ5iœBÙ¸qæ"Á®,Š\9Ñ,{Þ‚¹‰ÐOq e ÎŒæÀ É#RþÃP‰ÕRþˆ¸£uîŽoJ
+P, ž°d|]&ÊÉ72hæ}ÛÖâÇÔ‰­”±TõjK™HQ 0Š2Lís%a»Fy’.Ô™Ùváœ1Û*ý„NÝ>`¥«r Öid§/F …¾
+CÂíú -À°ØÊ$aшåÏ‹3ªœQí»½Š5ãéZžó†ä)b»“"¨xÑœ5~@±‹dwXYpû`T‚°ØKmìâúÑ=jƒD-1­DqËÇh!#»hÞ.®ë™Ãbð¢ÚÅk<¬e°®wñÌ#ŒL…‰ìE*¯öÀª¬D¶;OŽójiŽª\¼ÆÓžÕ¬ª¥Á†k½hö†ÃÅ5ä™üéèËVõ
+UŠ>­öZé÷aŽçlö¸Ðåf;7×¥Lb‚<“~E7¨Ï<Γ¤‘
+—wØMn;tŠ×;^ñÅ
+÷ËjP*|f¨ÙŠ6®ê}óŽPc2V:?öíŠøûÓ-·0bç´hFË)5þœ6^j½ŒL åÆ]F !GÝ{©$Ì[aƒU1!~;Bó‰ä
+endobj
+1352 0 obj<</Type/Page/Parent 1119 0 R/Contents 1353 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1353 0 obj<</Filter/FlateDecode/Length 1020 >>stream
+xVÑnâ:}ç+æ-T") $„¾\u·ËU¥n÷® WBºr‡xëØlì@ùû;6¡H¨´­J ñœ9sfæß=†øëÃ$€QIÑzq Ç—r…CÇ#o
+á$òFà‡cχ’B†‡‡þñRÇÂ8ž``€‡£0
+bŒl¹áÇŸÝø²èÝΆ0…E¾7!dÅ°HmÒ!,’>K©Ð,c´¼+*±¢)¤ŒpH$¯
+6¤LrR.ûA.oÀ…¿n¿zCp}¬A›XK[0p.0¡—ý©Eyì*EKx|€e#—7ÝÀ«?^•²Z#6_ö$TW‚ž{âóLJ+Œmò.ØvÔ=ák¨œˆ‚X¥Z„nA¥")wk n„ne™v3º ß4òjŽ:t{}Í ë,  Ýhú¾gu:Iº]Ê–a>™?¤jŸMºµ¨Ä›[£µ®vcq¹’÷lÓÖºS¬++–˪TÀ©øœÑ”C]áç(ŸÖuÀB#¼°nngcð}ãRîÞ¦Ü`bí
+åÛÝ©"œï°“$fä+ Äd@ —ý;ô’itS¤  3 $ÉkØæ ¯êÅSPkš°lgO×,µ„jݧ‡Ž¼ÀØÙ6Gmí&V6@“WN=ø·fB¸’€BêÜœ{¥ø/=à#G×¼ö3b•²°WhºHhË8 >KþJkR©gîÜΦàOŒHè·£±76_”Ix¹
+d Ç}7qØ–£Øˆƒ:Gçî‰Xñ¥Jp®ÈŠZŠ¸FΖÈå–nhylŒ9Œ¥wu)A´§ù˜ÙÞm­þœ½á)T·Â*ªÁi|+5ܪî¨nž95*çLJÌæ<¿<=98.[¦q´-îw%5Uf~Îà,¯¦õ9†qs¾ÌûzzŒÉ ‘Õ#r–º¥BÛN#þ©:FË–©=Lºf½í¯éÁ"g
+˜:ch Sš‘ŠëîAû›jm
+R¸uÙ§£là ·Ï—Ƽ°–J1Ü£eN6¸¬‡ßBáW¥‚òJP Ó“‚¼™¬JâR;¨³ÒDhç\À™öwR¬9=ÎâùeçÖöômCíœÞÎÂÚ}úðõÇó×ûŲ?c¥Òÿ™ãœÁ¼*íÅþÑá´Âº‰?p ÎSâʽ!cÍøÇäbíiÍl^jW#Ïé~¿ïæ?Ÿ •IU %ZTÈ°òBâã!îȪ2;kE*«D«º™q]œáÓd<‚Ð÷½
+ÍÖχJù‹âwåCÙ°q!îdˆÏä6ã(ö¢0@ÏÂx85¸ß½Ÿ½ÿ³U`;endstream
+endobj
+1354 0 obj<</Type/Page/Parent 1119 0 R/Contents 1355 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1355 0 obj<</Filter/FlateDecode/Length 458 >>stream
+xSMo›@½ó+Þ‘H1_Æàø)9µR+Qµ‡HÑÂ.ö¶À’ýP’ßYÀ‰íä!Vˆy3óÞ›Ù§ EBOŠ2ú@ÓI”`SÞЙoK:3zµ@;ò"²ËÀmÄ÷7ÈT-Õ*Ê-*ª“П&üÁŒá5þ|ÿ†±s{9\U§„´œVk_´âá­“—Ã~äHÓ•QáÕAôŠ»N§''µ0èdýÒw¬B- cY× ù* VYåS.…}}Œ¼~¤„kh7ìæV›¥Uˆžý¨å/¨È¨s6!u€=pjÞX¥_1Èĉnh”Óˆ/Ò&:Þ¦SÕ±_†íÅ9ÚÓ~“,à<ª=R¹0jaí+ŒÕLî¶Uú™i¡R/£ÒœYvM¹âƒHÒ&¸´XMm©Yºž0Ïg;£c²56¬¯Ù‰»Vvb`ýÝáóAø-Yâž¡7Éc=qÿíc~H£³³ÄÌ|¸òÚÏ%û¯*ËN}3ÉEã´ƒ]‘率øí,TŽ~|*‡$hÁø»†V«là§ÕBÉe9,³ß¾/t^nüN~z5òb›Œn!Ò4ñœîªàgð„Vendstream
+endobj
+1356 0 obj<</Type/Page/Parent 1119 0 R/Contents 1357 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1357 0 obj<</Filter/FlateDecode/Length 1144 >>stream
+x…V]oÛ6}ϯ¸)K–ü™}è°ºÈÃlöºëPÐe³‘D•”âøß÷\’Š5CÀQÄûyþv“Ñ¿­rš-IÖ7Ód½¦Ë‡=àŸ)ͳy2£ùz…çå*Y‘UTÂv
+ï—h;[äÉ}´Ía?˜R¶ž%‹ëƒŸw7éæžò)íJT²\­iWø x#o·b_)ú¸ÙRmŠ¾RîÍî«wÊVÁi2›'9ÜnšÎÂDvÚ4$š‚¤iJ}è­à7ÁmNYÝòU²d·­n¤"'ê½ Y2½‹®o[c;Gn\ÄçÛÚv½¨h£QÖöì:U~3Ô–ÐÖÇi…sÊ‘ò¾õÊuÔ.aJ“lêR*ç¨;*êýL%Gt>"^ÚÞŸTFª÷ŸÐî¨É£h;eÑ䓲ŽDUyûžE‡³ZÑIwÇ«Ìœ24ìLoÑ=£eU©¬(ÉcWõŒ šQ“'_&s†îoÓS-ÎtOŠZk0©Ú{#qËÝ ‘Sƒ÷  yýTzo…ÕÈ…¹N6/|•nñ¨*téKê®Ê?‰³#Ìøå<¢æu&Ù[4ÒU±°½R u'8Ý`~û3E¢þÙ§|øãáÓuo;C=jg¨Fä»#i•è€Xè„œ®u%,CƦ¦Q´W•9ùRH×Ì!ÑtÔ
++jÅÃì`É-¥›E¤ã-=•hiÿUIßlºuàË%Äé¨A¬ºG#­Ñˆ³«g!9UwlŒLékúäç˜XmŒÅ„EÝVêŽ#Tæàixy…9ΙŸ˜¨ÂÀFž%†¼×ÍO¡)ÝóreÉ|–Ó$_$küO(üü#úBwÿ‘¡3£ÃhCL†Ó£·ôŽÍ1´´À´‘°3öüŠ?·gïôŠétv`Ç´3©¯2qæò&vŠw¯<Yìë-ƒTñÂÿO§{kNîÊü2ùÉ
+qEç2™.\ .˜œL íâãÀ“ÖrºÆ¥A>R«jèöÖþ
+`ÃTVÆ)˜ñ"§}â˜Ê# ¸
+Ö&è2¡Ptñ¢nÃý‹È¦åûÛEYŽnðx a¿Ä¼_XŒ¬jÓƒT\H„ï8/m>ýú>€4DœŒÏ¯c>*´mUÔí×±Ç(â:Öè#‚Õù*|Ó“oÁ|¹N–‹;
+endobj
+1358 0 obj<</Type/Page/Parent 1119 0 R/Contents 1359 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 729 0 R>>endobj
+1359 0 obj<</Filter/FlateDecode/Length 1255 >>stream
+x­VMoÛF½ëW r©X”HYñMiâ"hS¤±ô X‘CqcrWÙ]Jfýí}³"EÈ¥€aX¶¸»3oÞ{3Ë/£”¦øIi™ÑlAy3š&SšÏR|Þ¬–øÌðë˜Ê¸p3&/~¶­Iú“O¦ýÇûßFÙ»²Ù2™SCÙj•,úo5ÝÒ,YQ–¦ØÒÐl†D§/²vöµÖdy¶&ˆWB^
+ËÞü(G
+ýpwßëáI”®•ÔõçcÅî·QLÌ´©´‡y@;ƒæ"¦ž¡d²-¨
+d{4„ðÙ%ÙÇç—¦ûÓ’‡ÿ¹á
+~LöÕ¾'aè±—½v:§?NG.Ùxsâ2ö‹8òL}:V:¯b¡ Ë[T*í ¶tkÍ!JXŒ­Á#ixßÁMBoBÏEˆ÷
+. m ¨Xº—Î69Ô@*&øFšHxW.—C~”rTPŽ¦±G*tY‚nGödxYÜ^Z±õ(ïãXØi#ýF»3x*³n§Œþ* ñöÝÌS :‚ãN 8ƒáq} ÆgkÐÎþú=»·Øÿ;wGë
+yÀ!OÔaÄhW¯eZ*Ì"± ,.%Àv¸s
+3Àá}ÛìE•ó–båÛrg1æ%LŒùƒ:iÁS¤ÝµæÒaktOÉ\lUþ@Ç¡}À¨ÕèÃâVì v ’w¸ "kÚ«WŒi=ÐZk¨D#{×TÙ=—­h ÞUá¢ì½ÃuI»¢ÌÞ6,£GÎÃßÙ#…hqjHrÐ.´
+û¿Y±ïåUÿ”.ð*¸šÑ"'Ë™ÌØûõÛ—kzçìgØ…^Ù¼•z¢ÍÑx81^N_Èþá‚•Å›^üæÞÉ°¦™<{½ý5ú>Dtendstream
+endobj
+1360 0 obj<</Type/Page/Parent 1119 0 R/Contents 1361 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 732 0 R>>endobj
+1361 0 obj<</Filter/FlateDecode/Length 395 >>stream
+x]QÁr›0½óïèÌ
+¨>ÉYN•·c÷!)ÖŒC¬Ëу N÷åë„}„c½-Y…ªÞP^P86yh’ìq ^¡iIAÔ”âZ½’ÃMóB 
+œ_@i±!Ðêëîé]ã]–ÍóÌì¨9s6nò̺YlÌ‘‚t©ÁËþ Ó…ÆCbtÖ¶)½ÊJ½=N'ú-ë°à[ÌQ&¯=B§ñíqç)„IžÐûWtÿ|ƒVË09Úö*ÌKVDá…‹<ìwV’sy;ùáS e‰ûö¢†N’ŠÅAS¹‰üˆÙ„nQõÓ8Zþuq-úÿôÎÒâÅ2 ÄÚ‘áá}÷Ò ‚دØÅÌáÉ ?ÙeÐõuÐ\Цê<¯X½Ø¸ÿøpÏξhðΪ©×ÄŒ]V”þmH7ù6âß–W‰š‰uAû¥*çeÔyß$_’?ß®endstream
+endobj
+1362 0 obj<</Type/Page/Parent 1119 0 R/Contents 1363 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 745 0 R>>endobj
+1363 0 obj<</Filter/FlateDecode/Length 1992 >>stream
+xW]oÛF}÷¯¸ðKe@¢D}Xò}pã¦k m¼±ÚôA/#r(Íšä°3¤ýû=÷)ÑJR`‹ A¨ù¸_çžs篫˜&øÓrJ³[JŠ«I4Á/§>ýru·Œ´˜.¢)4gÑ]û•ÓóU¼ˆù;žF¬ÎâÅé‹Wç“è–æ«þ-h5Á áƒ×zŸÅ3˜ì-.fQLóøNÆw x¾Äæ2Ž–4ŸÜFsñhÍÚ/^å‹f«Öæ«%þÏž9MÙU oV4›ÅH¼Ša"|É¥½o„9eÓçÕþ7Vg«·«½o¬ÞNàîùìOë«ñû;šNh!×·Ë­SI1~Iϵu¦Üѳ*¶êO¿{íÆ¿ªdoJM÷Ib›²¾Yÿ÷jB£é'¦Ì¬+TmlI¦$UÒ‡‡û'z0N'¸ëÈ›Ù`¼ G³9"ÆÁ§ÆUÖë°>§8nקKDƒõõÞxJmÒº¬)Õ>qf«=ííjK×'cigŒà ù~¼Ï‘
+ŽÃÁ“³m
+v:ƒ%¤›óÙ<·öÅã¤øF´éhÊÐGÅ>Vº”(F´¯ëê_ãñápˆ,~ÍSUEÖíÆ|dü>i«=ZF+nyœÝLo—V;,Èâ¨+yÊU©ë“—Gzi83•ìˆ°Ë'ªÒQb‹ñ)kÿåÑtÅwçÀ~³µ%þøÃ'm!OÍ67]±ct5Bªí“b» Àˆ|>úZtŸ¦4PBqho’}[dv½Ô);‰Îêbv:T!U°o3ÒÊ18›¢ÐnˆžL¥Ü‹m ÖK*íºEô¶q ÊLêH•³¯âäVÓ^çUÖ䤜tc¿¤k”]¨`ôôðnÄÅýûãçõG*”)küö·GzÜ•*1–ÞÙ¦Òª¯þY™Ùàok*ÌYbNá¶ç†Èœ-èñáçû†RÀ[Ú!#Ü}þ”j§¥Ûšw¾pûYVœÙQ/µ!(Aëƒå`à{Y; xGff×¾LW¡l;ŠëÀ3oy쑯M›„£y p®[Gv}ú¢Nº<yÁ»ÖeâŽUMBDÖ¥ž~¤£ö×aÇÕávè§Pé
+=¤¿ŽQ ÎÆï^ƒŽQ²W%*Q›‚fbéØ7ËÕü­
+~›ÆQD€ Á°ðü¨rP¦Wé«Pw
+jÛŠÓ%ÍxŒú;±YL1“ÉìÁ BJR&Êmò†‘P¼K·<›`
+Ãe¡Ï“Æ ŽÕô—Ê´ŠÄÌ6dăeXï?éR…&xL¹o3ó•ŽoŸZj¸Ääß$ªS’•÷ÜQó&—ô Y˜ÐRLh‰<ÈئÂøÌ2¯Z•B[ÝH†ásàÒ6Ðoä1¥fÕ1å˜ØR)jY—ïŸÛ F!ýp'ÁT!Ìnc¶ô>†¯Â– '!Ûö€.±WEºEyéL6ƒÊéWˆåò^èÙ*aÏqå8çáNÐA¦2ò–X£Nƒû»?ž©vZ3-Óc+”x‚M£ÙˆQáx˜mªÊº:Ðâ^‚§[•¼hàt3ÐÑ.jÇÔi×u£ËLjg\l¿l<à$üt¹¿N·_oÇóÂÿA'ˆØž¢¤“]Y:Ô|ƒoäPžùÕÆ”aÊ$ox
+E¶¿mþ;¶<4­X †›è¸÷61 7¦:°œ= í—)cÝ2ôfÒ
+endobj
+1364 0 obj<</Type/Page/Parent 1119 0 R/Contents 1365 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 754 0 R>>endobj
+1365 0 obj<</Filter/FlateDecode/Length 1974 >>stream
+x•X[Sã¸~çWôÃTªˆ;Wöi³d˜å`8$ÔîVåE±•Dƒmy-™LþýùZ²s[fª–ÛR÷×·¯[ü}R¯Fõ†gÝ ‹;û—/Q= GADõºãাJiÆëiÐïãY<Â÷ïRÒê"v±­?ˆ‚>oñÀ_ñ¶~· ÷Oûã^0>zÊBûýˆWœ
+íã1Ð5åš¡R4
+ƒ°^: ¼¹ª(¼Á kÆ
+¾ŽG4Oœ‹º4[‰Ž«LæVX¥óàjþí¢Kíheó¤5ßH8Cð›VrK…V¹5d5[JcH,uei»–ìFoïÜEµ²V»½UvÓNQ‘ù‡ ’%Zʵ¥¢Ôï*‘A=L'Ïdª¢Ð¥­Ñ„=8hJ¹’e)Ö¯r§Ðn” #bU§U"a)HŽ½QÊ¤È émK%ßU¾¦ÊÈ’Dë*·¾Òeæ\B«Rg$rúCå‰ÞŠºÈ°IlÕ»¤©*elu¹#ì~—¥ó_ç.®ÐcÎP`_DÃQížÆîa»1îU‘Š˜Au¤;…0f›ü+Ñíh„7“Ù±FÆ:OHY™Q {–*ÌÍŠT™ œºÜÁ¬ÔEài6ƒÑ =O)ÓI•JÐ×ç‚™©âü‡˜y¥T-K¯šF‹^Z¡rhpž|žLh¦WvËiµhm¬-~ét¶ÛmPˆ$ €¨³¸
+èw½•PuíÂœHˆHJ±RëªÒ3Å "~khgñK¹c›ñ„L¬ É1?I™Ú«7¢*¸<Ú½¾Oý™OAÀvþ˜¹øVy\Míh„*÷•R§®È’%Å:‘œ£QÀä³PdN LJ#q¾µÒX|õ^gŒ_ ™;mÌB>£ÜÂ8U¨Ð3s÷~öuƒ“^­Ùè*E<ße*¹X¶º|#.Ez’ÖÄ¢—æ(w½mGšh6ýï!gz“ÊÉD†¾9wÂΣi%|¸jÊ
+–Ïa|¹»¥¨×.ú>ñœòÃÌ™1¢:QjÊRˆÉe ŠL.^ߊ=»NóYæe£:ŽoÉïU-M‡s©ãmô"NA´œ…Èù†ƒ­'má=Oç`ÖcÅû$¨•Bâ‚-b^°~/d©\IòFt”UpÿÎÅ L òñq#òg‘uHkw‘^~µÆ)È€d ºÍ‰Û‘ãóÎ]—n¸bàߋ@tƒ`Œ¿(Äã}‹ž÷‚0àÝÇ{¨H¼èiòø™.U^Òìõ1,h6y½¿¾L„èÙ,œøgúyvK—>l5ÚËÖ=¾Îæ 8ªTBŸ¨ÄçâêÃu“¿ˆ×Å9–¥Ù3Ó½Fæ~¢Ü]ÛäA;“–—éµÎçð8}úH¤ÃInÕjå—Ñ›Šßôþ
+ÒnE~»ù2—•±ûkt{—Šµù©üDtªÝSÏ'2Ùòwí¾mðgZrƒÄݸTì
+ruµOoßù™˜ÏKÍí×û)Ø“»‹ÞrWCßäðù0—‚‡…¤±­ž\Àÿ¦Š7œÈ©\‹”™\…N£<Šjé{0³1¿Ù
+ˆÅWW]…~œ‘œr9Mg ž©5Õ2S~2;í—
+endobj
+1366 0 obj<</Type/Page/Parent 1119 0 R/Contents 1367 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1367 0 obj<</Filter/FlateDecode/Length 1125 >>stream
+xV]o£F}ϯ¸RB¤v°ó˜ì6U¤6»mÜ7KÕ
+´ÚÀ™xÒ*kï´J½O²Üˆm£D¹¥V$Œö¢ÞÑoŸï¿^¯¾uWçÝÕÉ,ðc\ö¾T¼4”Úˬ²ìÄçpÙŠG0™y+I¢Ló&㤛ª’ª¦TTïðnìݧ©lÊšdò§5d‰•Ô[Ȅ¯RHsõ«Ú¥kX®F‡1Ð$œù‘1ÖjôuºãƒdΩ–¤sVeWúÔ[ê5ûã&×ÎñØGÈ™§¤¬/»Ó[{êQZu~;+S^§S‰Œä«¦ééû\X•Ïü­¾éb’pjý$‚S-^4¾bâóM-F|ZÉ2„k&JMõ^«k%’¦æÚÜds¿éŽ2Žà2j*Y’„ÇŠùÕ«FdWGE$4®mDÉ3SБ¿©Ô8±ù¹ŒâgÔõ*ºÊÙá™ü¼Ò C@϶âJËòŒIƒŸÉ1®9 @–pW©l”™„Ã
+;BrXZ{)\r¨DmÀžŒ’ƒ)kòz}íâ@2æ3éøŒÌ·TšT[ 7JÎ3˜1¬2ú§MÐa
+þ1—ZjldžË=&‹‹ÐviþÆŠ*ç7mz* Íý)€MSÁ0*Œ¹÷Ó!Í™ÖY{¦MTRk‘äóE¼¹9‚“‘¹öøW%a„iÚó<__ÿ éÉÆ
+º„8µŒ¨ÓbýÈÂäI"‡ü͸6°¿Z¡‘Tªäï-¯µ/Y±ö> ­Qˆž{¤-UŠë›^«cŒé€UæÔ&¬Ú+‘UŒ³â^çÀÓ!îM»´˜gè‰ýÖ,çŠrÌÞ .`(¬N?›]ÁF ½¼ìRŠ <7E‚‘džÞÑcðØöÿ‰¥å êóÚ
+n,þesÔm7¬vMrT›EŽjï6,Ì‘›†¸Ý¢„Ñ3†*¦0ëjÌ-2Yeß™ÈY‚…ƳHÚq–
+endobj
+1368 0 obj<</Type/Page/Parent 1119 0 R/Contents 1369 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 769 0 R>>endobj
+1369 0 obj<</Filter/FlateDecode/Length 1540 >>stream
+x¥WßoâH ~ï_aÝ•J%
+ðÑw‹‹þý|k¢AM`‘0 °ˆ»Y"J0&»^<ãÁ¸>Ø›xÑg‘t—A8·Û¨áÍžO‘ÃNƒÔߤ~£‘äiIñF5¦Z¯ÓïoT²N3ûf‡J¥í¯àè˜Á)ô"3†v±•F‚ÀD&ÒÄ:]É0Bv+Áä+/VÅzÙ/¯!”bƒg‹Œ‚]šeP( +‰4(¥°(¹•ZzðQí$¦ê‘—™$€hÓÙ(Œ
+‘K<µ˜Í?.ÞøóœaÔô²Ñª*ñÜãìëã§Y}ê•ÂpQh™qàK¡Q3Òé¬õ&w’Óz÷V¹ˆoe«´HÒbCÏ(é‡À£Ó˜ÄFß+Ç;€´iÝæ Úmj
+Øù°½XççøwÎv–Ý+µ^_Ý /¬ÐlfpäJW¸[û±¼þx“!òVþ<裂¡Kq¡&U³¥Ž£1äIk•£â$ßÎãwdÂaˆTqù”lõ†Ñô<Àã´®ˆÈ'um°_Æ[ŽìqYŸƒåÆ+4¢Ü¯2l# ©E–9ŠÕpíÉ ‚ÂÖD½A½œP7³úBXv_v«4¹ý­ÂTvÕêYgØgåg1Ž…º¼fÚ÷ï§àã­cÚÍ„!ÞŒÜL¨Ï\¨±fXL¹,êÙÙ\;¨mO\Ûžîû(ælá’Nëx«+®(æ~mŽpÞÀ^U`¶<½r•PÒù=5Ä÷& õ ‡Û îhÁÅa•Ê˜M‰™›Œ¯ kqTWVš¦‹4óüAPÒå`óŒ¥6ÿJÛ+ØÏÔ…³ôEž¸4ÖS‹Í£*O\À
+!ñ«nþ›È1¬óe½ÆKB¥¥µf!®'jE¦±üã8vXu'†ˆ .ÔùÊL¤Å³âvH]°
+ùF:Ÿ=¼›Á“VTóp§âŠê”ãE²½F¤7à%0éþ}ÂÈ Ç{Ùðý ©y¿¸øëâ?II?ßendstream
+endobj
+1370 0 obj<</Type/Page/Parent 1119 0 R/Contents 1371 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 772 0 R>>endobj
+1371 0 obj<</Filter/FlateDecode/Length 1748 >>stream
+x½X]sÛ¶}÷¯Øq_”ŽÄèæ¤ÌøÁuš63Ž“Fê$«>@$(1!
+‹|²“B
+CN~v$?Õ9â„„a ´I¨µdÌ)§”
+‡$¾Ù@*È $-£ûWO–]ü}° `ÃöŽÕîÞþöfùòõ%[D>‡]°?¿~·|=¸ÓE¶™3[Ö-ßÓƒ&Ëu'ŽçÖÖ²ïW.‹TTdmqI¶\G‰VpQJ6™ÊLÔE+Ä—%¦ ‰–| ï:àW½À´ë†‡½ÖÝ 8a­Muoõ©heØ„jc‡c(ÉËÀœ€§\ƒS¢ˆè‹:„¯+©X`\GÃ}Êå† œuJhf„Iûwá„qËûE(&U
+.ið($:Ôª
+‘HŸfX\DôÒ»xV&$X†h&Â"ê]{æ‚CZmŠƒ¯Dº6bxŠÂ$< -àËÒ_†4˾ˆ©—Û´§½pÞCÍ‚*£NtÁqHe…Rm¤\é2±±ÂñæÝ„ŽÑø2ý¬÷\æúx3_ÛTP‘¯0²./
+6¾ËS¨ØÖ•Ï6ôã±éb$ðo«kTc_™‘÷D—e­r€d‘­¥ÛK¤<)rV|Ç°ož¶‰%0áLÍ¥-úÞ÷ÚŸ‹X€
+ø`‡cO¥/Gº`›ë†¥Ìè’¶܃;
+é¸p£©î·9ä€%†sÞðëÃhïPë›çRî¤þøGWÐ3EqÉJÏÏ-á?_ˆNG4ó+ß\èòý3tZ‰~ÏýŒ­6€šŽ  "zÛÜ]¾F÷¯tŒY3»Œ&³h6ŸPO£q|ͳÄâöÕ·ôÆhî§ô\'uÙv->|0ÂÖálBƒécÍßüßÀU<‹âëq¸ôŽF3>áÇåÅ/
+endobj
+1372 0 obj<</Type/Page/Parent 1119 0 R/Contents 1373 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 775 0 R>>endobj
+1373 0 obj<</Filter/FlateDecode/Length 1694 >>stream
+xµXÛnÛF}÷W U
+T2Ÿ6ÚÓ·´ Ž,™Ji¥b”àãJä‘J¬·“û“w—€Aû³©é´Ñ$ldA­ó"_š#UH>MØÇö1­Sµ–iþLÙZÑ<’™Žb«¤æús‘Éô—ŒLØæêYÛ~Ž¿ŽÏH¥ìeϽu1˜Ð<Š¥eÜåi”,(@.3IIÇæ{í$Ê
+F½ËÊ=3Ç·>³¥*â©®ëÀ›{â`ð÷ø¿*²Üœí7*}ØÖ®Òë¦ø…eŠ¿YÓé6ˣ̩%Ê©•<:Î Nùõœ8ÒŽYPéã›j»hÐWè ÒÏrÝÛ8ü6HZÜ(Ëš•B)ÒT&yüLEaÙƒ@ïýŽ„«¦™Fá ¯Ì(Éå~S¹Neg:Àª:¥ˆ·=,
+q‚iJÓƧëÑôí¿iF+‘>¿OU±¾î;Ž«K+´`3Õ—ZÆâ÷ÁªfGÓíZNšUKäA²÷*0=̨Èänže’’J¸2¨ m–2¡;±š Ö*É#Aà} ù>D¥VSpÚH÷>‡¸§m¡‰+Í«Û/“[=C™‹(Îà JÜpwå-
+`<?L7C•ä©Šc(êí±Ö0Ç3µá(çª@OÍÑ„ghº{‰eèJœZÄ=ç*§7U$9hY‘™¡š¬æf¢’f(碈sÓì³>çˆma íAGü±ê˜iTQy7à_SáCzïæÙÏ„±m£¯‰âÏÀ«ÿ~‹._l0òI¬Ö±ÄÈͲe2¸»šŒßßÒTJ@²™·4 wLæI‘/EnRn—ÛD£\Ÿôx:×Ýü͇éôMaŽUkÐFdüÕãÁ•(Ë Œ(ÏjKH£ZëvÌöõ…E'ôô£{fH§3<<Ÿšp°ë™Ë(ïL“ØXr«ÀÍ&Æq×]”}8ª,ŸÖ
+ϵ™3Uœ¯¥â"…Á¹VPéâ”óØnRø ç]©Äø<3’äT)ªN4Ëh’šcØLœr+þa˜övRJUÉu,l·¦Cm"ÌgÝ-7h¨X…áo ñlŠU l»T Ç,ðæ²ÌP9À6¦`“·!¬ál½êAÓ†´–®ÔÍíÅïe•¶c«GÞaæxÙj¶<³ 8èÃèú’ÆhsüÖÀ›–8耡ŠÚ¸ïvÌ®<÷]wåJ/>£6¹í§QÄE†7jh­U=U VÍî±1$ª;(¿ õ8TÇòZ.ܵ­.þÆè“>1q…Ìr+ò>uP†(¹WšF`O/Þùj‚·¨,CxaŸºî¨k;žoûÃÑÀíùÎÀóÆ—§Õn];µ«ëMxƒånÀ²O®ƒ—ÑnË÷^œ;ò}r\Û©™ŠW»(Úm·g»v˹Æ=xŒZ^«}Ñv<ÛkWÅ‘åw2‡e¿;=Çõj‡´È'Ñ
+aÚµGå¡FùEy¹M•@ß>€k¢àAÍçÆü7QA_Æb‘õéÏ_©úõgÍGú¶°É!ÙžmûµÛ
+endobj
+1374 0 obj<</Type/Page/Parent 1119 0 R/Contents 1375 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 778 0 R>>endobj
+1375 0 obj<</Filter/FlateDecode/Length 701 >>stream
+x…TÛnÓ@}ÏWÌc‘go¾EªD®‰^hŒ@6öÆqj{Íz­ÿÎØM¨pC±¥Õ®æÌœ™3;ûm@àOÁgÀ=ˆ‹q‚
+zw9`œ8>ðÐõ
-§ 䔕¬ásÍT[(-wñƒäû´<aØ(íƒçMí…ãy0_Œi:šÔj¼<½øpJWFºÒ'U< y¼œ°~È/¡ó1õgC~¥<~V&O¦ó`:áÅ“w |ò÷UïÏÞwÓŠ·endstream
-endobj
-1602 0 obj<</Type/Page/Parent 1367 0 R/Contents 1603 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1603 0 obj<</Filter/FlateDecode/Length 398 >>stream
-xmQ]o›0}çWœÇVJ(ÈcÚmÒe+ÓöêÚ7àìÌaû÷»NZMª&„mÁ9>÷WV¢à§DSaUCNY‘¨‹¯ë¶áµâ׎ÙC—Ý}Ú lЙR·%:†:ySÖy“ãÑ9F¯­¹í^¿FÉ°„_VM^3㦳6ÏÚ(ø?>д@œýÀ;!z‚=^Ž{1žÈµä}ÖA ÆØ÷ây$l#ãMÐRÄΪ8’_@•ÔY³\åUÒ§“³'§E ì´tÖÛcÀ×Ã#¤GAœ |²3)6€`Á„³VObâ[=´ Ô»«ûûwÍwNbg}÷NUÙIh“96(ðmÿùÇkè©G>ŽÚóÏÞ‘üEEyÉÃÔÔ‡P“6Ú‡$Í.¥õ!õã¢1ÚôÌ›ôozø"Ä=°)
-³u?óëDÚ׉”5O·]as­èi»{Øâàì É€VƉ»½ÄMÄå~Ù›Téÿæ½®Û¼¾¯xÚ P‰ø±Ë¾dÈ„¼»endstream
-endobj
-1604 0 obj<</Type/Page/Parent 1367 0 R/Contents 1605 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1605 0 obj<</Filter/FlateDecode/Length 1316 >>stream
-xWûkãFþ=Å
-v –Iœ”rÉ]¨! ¹ÆG 磬Þ[KZÝî*9ÿ÷ýf%ÇHI8…`!Í|;óÍ7³«ïcáoLg:žRŒ¼NO½s:9?Ãýÿ:¢øàj~0¼¹ Éˆæ1\¦gç4 æ#< úש(m¤i|æѽ0&ôéÏÕÃç[*³*‘Åáü?ç>>«ÝÇ'Þ
-¨Å†lÈžxt­ŠX&•~•ïTš†gÊD°4dTQ¢TH¡
-*i]"G¨‹¥4‚FàáŒLª4Ç«Ë=r>„! Ç}¬²L=qz 5­YßÔ±¬%äciÐQ¿]Ë¢OBKágXÒ©©6Ø”2÷½
-O*`Kmìâ°slU:S Ƽ•ˆ¿^~'Ëb±‹þÅâ°›Fˆ‘z;Ä{–2XvC¼•Š
-¾íŠøñùäV;18-úQrI½?.{oµ^A&вt;-¦ÇVûn¯ÔæJØ ­·l8˜š?È$ïnSžRlVèhœ…¼ëN²ÔÊí`.Ú“£eé{N ui»‘Eàø™àMúš¤¸–®g3jDE¼‡t¯€=m‰sk³M»¡û:mo;¸–àIÑŒN…b)Mw_no)Æ Îïլ*–…zBÕêóÓu-Äí:tg•W˜[8öJœAöP‘] ðïÝX•|Þk¶˜Yßnf`]c8NfÁ<_Ë>ùàD«ª6œ_ÃvA@Å-Ù·°VËÃìc7õâ]°-´µö©Q‡7ç[߉õIþŸ¡'Ósoz:Á7,~ŽÇá§ùÁçƒÿÛœ„Ÿendstream
-endobj
-1606 0 obj<</Type/Page/Parent 1367 0 R/Contents 1607 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1607 0 obj<</Filter/FlateDecode/Length 896 >>stream
-xVÛnÚ@}ç+æÍDÂÆnÉK•¤¥ª”ÞúP ©ÚØkìf½K½kþ¾3‹iŒ¹D*a³»gÎœ93øO/
-';²ŸR[ÁÚVAäϸ uÇÍ'a57à\œr0”¹½çpJ9A1šóåÇæ©sƒn06¹?•2\“‹:p‡¼79ĺí4ºn|DS'Yc–NøC4*„¶…ÅÛQˆ4yÑû²é&®ó!l›äÅd=Xd¹îP̵…OxÊ*a.ÚnäÁGn ¥*•tím›…Bœv›Œ·VZçØS¤jÆ6ØÀ
-›ÂBå¯]óÄPªPÁž)ªVØè*® “ÆéJ9'ë¿°b-ø«3»žJ+!ìÀØÑ·¥µ®ÎÇÍ êÃý×/÷·‹ež—Úü¢íœÁcUÚ›åÕq†á¿bStCbÝŸ‘±É‘x»XGaÉ©g‘ù®/?o¿?@¢âªÀ1iQ!ÅÌ …ø羪¨ƒ­He›á†óY“\0Ág”Y£q3Oo?ßÝ·Rýæø§ù¾K\ÜýwêÓãÈÿÏŸÑdæMÆ!>ØJú‡Eï{ï/ràwendstream
-endobj
-1608 0 obj<</Type/Page/Parent 1367 0 R/Contents 1609 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1609 0 obj<</Filter/FlateDecode/Length 474 >>stream
-xSËnÛ0¼û+æ¨
-PˆþÔÁ»–OVjÄÃgnŒ¨ðýÓGL;ªá¦ü9'Çù’¼Ýù¥3Ü;Õ 5XŠ8^aIÎ2+[eÐÂu’X>:¥¥A§ªç¾K`GTj0–wÌW‰°M2–ιöõ1‰ê%ÜB»á°´Ú¯­ôü—D¥†pE13^² ¨l+!¨ymGý‚@¶Ît3:]Ëð*m¦ã;×>#í ÃWÃò2Ç“ÿ#\ÂyÆæ$
-endobj
-1610 0 obj<</Type/Page/Parent 1367 0 R/Contents 1611 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 946 0 R>>endobj
-1611 0 obj<</Filter/FlateDecode/Length 1998 >>stream
-xW]sÚF}çWÜñKñ $ÀàÎôÁ›Ö3IãÆ´é/‹´‚­%­º+™ðï{î®d’vÚN&¤ý¸_çžsõç ¦)þÅ´LhvCi9˜FS¼9ýùøãàv-h‘,¢„JJâYtÛ=ô4ˆ1?ÇI4Åê,^œžxu>nh¾ZàoI«)nð¼Ö{,)žÁdoq1‹bšÇ·î`|»€þÉÙ\ÆÑ’æÓ›hî<ZD³î‰Wù¢Ùj†µùj‰ß왑”bx³¢Ù,vÄ«&ü“»´÷Œ06}^í?cu¶z½Ú{ÆêÍîžÏ~¿LÞÞR2¥uŽ\ß,W´Î\Šñ&¾Ù‹º‘†,=5Ú¨jGO¢ÜŠo,ýj¥™¼é^UòzýÇ`JãdŽÓû4ÕmÕªrmJÑ(]á7‰ŠÞÝß=Ò½22Å]G>ÄÆã¥7>žÍ=.€µ8¢ÇÖÔÚº«'oçÇÝ®d‰ø°k½W–2¶¥„±LÚÔ¨­´´×j4µVžLfÁ$Á#²ý@xŸ!ñ¥Ë]H€”ó©1"SŠ(Š£»BfU³—dËm-¬=d›ábsM¹*dDH€%¼†¶‰Æí5Rdl°àGÚ ì¡­°*¥¶ÂŠmD•qšu~áK^ª«TÖ UYwø Í38‰ˆ^z6T…K‹Bf½Eø¥âúµAyøî s ² *Õ$•Í…Â)iGTR ÃFæ°„tsr]úÀ¾Xœ´߈Æ'Ü ¨Ø‡ZV.Š1훦þv29‘ÆÛ"u¤ÍnÂG&oÓ®Úãe´bÀÙMr³$¿°àÇ¡@걕lN^éɧádLÕnG„]6µŒR]NNYû/–ÇÉ*ŠoÏý¬éKüá›R1BÛm¡,zcÇ05BªíZ•a»öíÀˆ|:ÚF–t—•ªRPBqh¯Ò}Wdv½’;‰> 1é« Ø×9IaœmYJ3BSOWîÌ®ëƒ&‘$û^F­nMŠ2{“¥8Rmô‹sr+i/‹:o Æuc¿¤k”ÝÂøñþ͘‹;þéçõ*…ªüö·GzØU"UšÞ趖¢u^ý¿2³ÁŸ×Tª²ÄÌÂmÏ ‘]ÒÃýwï~÷¥€·´CF¸û4ü©ÄNºn÷hÞøÂl[dYpfǽÔú Zï5ß«Æ
-ñ9´n{%J9¢wï'(SðƒQ¼w´Á< Ç(Ý‹
-õhTɯ™^ç…ØÅà·•Ò%£W&ï3ó~Kˆ_§ÑG
-šàÏõ sL—0ÆÄ KæùÂVfà!áÆ3&ŠÍõî"TÎtK@Ûh«›¦0òì<@¦eÐúÄ*Š•”§•;ÐÎägOý>Õ/`»Q'ÚàKÍí$ê’ˆf<^ý“ä,Ìjna!%Óå¶
-pêr„BŒà—}ÑôWi2ÈR&ƒ3^ÝC-îã\¹á‹ƒÄ•nÆD³õyÈëŠp¦ ¤ñ4Ÿ:†»W‚\€"MFC4
-ôäÉ®=`KlE™mQ^@:`†Í°6òEb…ûvèÙuTž¥nÐuǹ(8w¼¾8T`6#«‰5ê4¾¿ùí‰#%Ó2t¸Š¨òlÄ r<Ò¶u­Mãiñ/ÞÓ­HŸ%pºÊhuÃjºn<fùó¤‹í—œøW—û›lûåv|dð?èë²Æ‡SÒàd(K@Í'?(ðF剿à˜2T•-Ï¢Èö×Íÿ»¢m4 ¤kÖ‚‘‡ÆfètÜZ*SXÎöË”±Ž;Ý÷2ôjÒ
-endobj
-1612 0 obj<</Type/Page/Parent 1367 0 R/Contents 1613 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 955 0 R>>endobj
-1613 0 obj<</Filter/FlateDecode/Length 1946 >>stream
-x•Wßsâ8~Ï_ÑSR dŸŽ “ÙÜ%Ù\ µwU¼[MlËgÉaøïïkÉÃfçê&‰-©ûë__·þs1 >~4 i8¦(»è}¼9|½~»a0¤›ñ$)£aÜÖO)-x?ÝŒFXM'ø;ħ””\„ã>ŽnÂ`ÄǦc,ø'>6ê‚ñau4ÓÖ* BÞq*tp{ MaŸµdN¦îŸ,C'éôԯˋÞýˆZ&°v<Ð2vFöiubU™Ì­°JçÁÕòûEŸºá¢—qg¹•0Gð‡¹£B«Ü²šŒ-¥1$Öº²´Û
-Kv+‰÷îÃZY§ÛÝ)»í¦±(ŒÈübƒ¤C±–†rm©(õ‡Še@PGóÙ ™ª(tik4ƒ!ÌšR&²,eÌúUîÚ­2Ô2á(VåQZÅò–‚ðŒšQ&EnH'ˆ•-•üPù†*#KQ¤«ÜBz¢Ë̹„’Rg$rúCå±Þx92‹¬ú4W¥Œ¬.÷„Ó²tþëÝGµº“`Ê9ì«p<©ÝÓxÀ-vãNP©ˆTOÚ¨Wcvñÿ%ºNƒÁíÑdv¬‘‘ÎcRVfÁž5‚
-s³"Uf §®÷ð+ux^,`tL/³'Êt\¥Òôøíå‘`¦Aª8ÿ!æFžE)UëRÀ«¦Ñ¢×V¨œ'_fóGZèÄî8­V­µÅ/½Þn·
-§õVWý¦wª®]˜c ©S #µ©J =SìÀP!¢w±v¿–{¶+d"]HŽùIÊÔ^½¥ª‚Ë£;ùÔÜÀ>Þyeá¢lXq»¦ºáÕêë¥N`‘ÅkŠt,9SÀId+
-t¹qˆ¾Ýþøî§2B†@f&ÜÉW™:Ê0[U°æëý…Ãþ¤†ö}vÚ¨3Ï6¼ôi6-e<5™=„æ2ù
-¦¯=a¯ÂÖÓÜAæyÙèqŽý;ò‡@½KÓãüêy»½ˆSg5ª¡a§UçY[xÔ=8·­øØ
-•($3x$âÝõB–Ê5˜´¡uDLY…ì]ìÀÑ %_%!—>²¡vW£Þ!­ÝEzý¤¥ E’ ˆ8'nTŽé{÷}º­k9¬k¹}bÕ¡*{Üà3Âg2ß >ñCϳ§¯tÙVvI‹·IJ Åòõínùö:{l°õѵQóÄÿæ_wtéVã¼ülßÓÛb Ò£JÅô…J|¯®>Ý7û7ñ¾(Ƕ4{á ‘Ç_(·­‡b?
-cÒò6½Ñù¾¦/Ÿ‰t8ÉíJ¿ÞUô®Ov'ò»­È7Ax|ªŒ=<£[ØûTlÌOåÇÊ {ퟙˆ¾ÉÖ¿i÷׿æ%7M¼JUÀPÔ”šÓ×?ýx,ý1ôœâvýÍøÁ˜ He¨‰o¥®Š‡9^Ä:CㇽOkìÀ×í* WH‡|öC
-åF£wÜàÐB9ç},¥à¹!nLª‡4SE[ÎÜTnDÊDÂB;ÈQEµöí˜)˜äl‰Y¼âË©.;>ˆO 拆ÏÔšj)?¤«´E€%<C2 3¬e5Sáß‘„l+ìçï:X•a¸bsw?ïDŽÚn«`8Ïv©dF`•Gø5påÖ<Õš{üJ33uçÊý5Í™Ðìð0gž2…CÓé Úí}{~ø—ðÙÜÐÌ·‰FˆS˜-~<e‡c¦uNØŠ›•mÆ"ç&¾Xaú­j:tÀâf¬<¶_~_wTÃsL›ÆniYud° ˜_VWµÃ5¶§¢ð™Â>j7Ÿ|˜å]'e6Fãâ¾Å‰ËñÉT›?]r5az>»-ö3¿‚՜߹ù»BN¨c\³¯ÙMPyìs ¼ë,ì®z›±Ì¿2j0¬Uîï:ÇIÌ…Ô˜bðí'V‡Éçç™RoÀ'w…%Ü)°RóÜqG~@Û#ê)Ø:<i‹].²UguuMÒPßú`6Wg³¿Téöäç"ª”¹JL‘W[fe'ºÉ‘§÷F±Ê&MA잤ÊquÑ9k‘Æm*²é¾2'"öèΔ¶«8ïìK\Û´1ªž-}±sÜ=>ôŠ?]¤à~w™ÏÖŽf~æ˱GÏtþ…ˆç‡ç5´°6—Öµðš#JÌÞ6$ ®¬
-endobj
-1614 0 obj<</Type/Page/Parent 1367 0 R/Contents 1615 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 958 0 R>>endobj
-1615 0 obj<</Filter/FlateDecode/Length 1136 >>stream
-xV]oÚH}çW\)!R0ˆÇ¤ÝT‘vÓnþ!Uc{Óµ=ŽÇ.áß﹞±1Nж%
-²™;÷ãÜs?^>MðçÓbJ³€¢t0ñðêϽ€æËž§ø/$mù
-­Ë {zãN‡åÖïÆÊX–ÑX‘$ùØš¿Å©|”¯åu ƒpjý$‚S-C
-$ e“©¸‡L(Áaë×óײmÕmnÉvqA=*¤i™ú¶ !ÙÍ
-œQ%å檉`â-™ÛMMÒñÓ3_Ѹ£Úi踑Ià ×s·–ÛTLÅ_t÷\¾CU·—¼ ½Ê"¦«Üò†Imé +Ú þ}ǵ;fÉ×ûÓÙd\=><m®\{@!±ý´¼›“L™•;Ìððaãûn®{÷Z+3ÃzÍY+w¢¬ýMÑ ¸Ñ)3>V‘4„j¯ßmIPªQ•‘Û*IŽ…n®ù¿|©®…­N½ÇHismY¾Š4OäuJÒ › ¡‹3”
-Ì6÷vD‰0"›!÷…\£ÂäÀêµ8陫?F„¡½L’ÍÕùº£1RÖ@Ñ(tìCbº5ÕÎ? îž$Г¯n–ÕΣ¼ä‹êTNÃ<üö,KDžï3‘n†ïÔ)+D{=Ö)å…4×­Ö¦D¸-8Æåq£6ù¾PñYÅ8ë(nuv<í;£#¹@û3h­¼?œKǽNFP2…BJeÚ1ܤªèÅ……<ViˆéßÖÑcðVìùçÄ¢¬õym©d‹ÿ8Œ¬Ñzµj7#^­ì^4}g§âXNkÑ®Dhm©P.
-LµŠTñC¨D„X]¸"Ó°ì(оÞЬÎi³ŒFü눗°èÔà­ˆ®·¯¸¾Þ ë
-Ý Wè]n¬‹;ê¨Þ8«%c«7rFG ;%–Éx¸™ 7ß—îÔŸ-½åjÆ{§WO·ÝÝÒ—B× ÞGUÜ7ÛqäX‚—3-&ŠÎÿ[PçÁÒ n¦Ö ßØÃ?Öƒ¿ÿÎîfÂendstream
-endobj
-1616 0 obj<</Type/Page/Parent 1367 0 R/Contents 1617 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 971 0 R>>endobj
-1617 0 obj<</Filter/FlateDecode/Length 1487 >>stream
-x¥WßsÚH ~ç¯Ð„¹ƒÌ€Á@ ÜLèäÒö¦Éå
-oÇ=,ö;±½¾Ýu)ÿýIZ›_C;×i˜
-n·ÑÄ›}Ÿ¼À¬DDyZ@Tü¤SÅqúõ'•ÄifÚ¡Riû#8ú£™çÏ¡?"N`TV‰4¦!’&ÔéFF€²‰“o¼Pñº{·¾…\PŠ-ž-"0
-vi–A¡,l$&±”¢d"µôàƒÚILU‘—™$€C8d¢Q L¿ÒP!†]jTŸ/¥Z†Vé=„ªÊ"%ZÐ Œóus¢
-êMœí6 *£™
-E6@³1ÈÒÍ ±Õ@"3Ñí¿·™ÚˆìŸ‹Ç@F†•Níî 3ŽÀ×’|D¡Þ—bÌNéÈàÙ½dp„ÉÇ:E#|´v“*…È%žZ-–V¿¿ÿóšaÔô¶Õª*ñÜóâóóÇE}êLa˜ÉZfòRhÔŒDºj½iÓBrBžÁ*ëD°I‹(-¶ôŒÒ} ¹«´Fß™ãm@ÂÜæÜÙ$5€ªñè`0kŽCMè=€Ï-hH™ª—ÁlC^æ‘‘ø±G„«ƒòßú»º²G.ï]L‘–¶ÜQ|5ºr…í“C×"Üfèe¢®¡9ë2ž6LH„û1æˆÜœµŒø"²êä‹°„‰(¶ÒôPÑ𢮉Ah\)è£w Ú™-$ÀMXÜ/‰Æð$
-¬;ÝSÕ})–S/
-ï™áôEéíÍuš€)e˜Æ{ö…«Ê%¶c QÆ2!×]䇨2k m­o¿‰Ð©@|"Qxá:‚‡#÷–ËO J›ªvD>l,Vø5þ]³Ý†u·£â¸ÓC^X¡-ØÌà{GGÜ­ýXß~¼ÉùAþ:è“‚¡æJq¡öT³¥Ž£1äÉÁ*G/ÀÉE¾]ÇïÈd*n¾ƒ’­ÞÃx6¿ð4­"òE]ì”a‘=-ëk°˜tn˜å~”a[YH-²ÌQ¬Î€kO¶&ê ê퀺™ÕǺûëº[¥Ñý/¦²«6¯È’0Ã>ë(¿q ÈÐõ-Ó~ð8o < Æ<Ò|¼&yP4<¯ÞSW54ð’rYÔ#³¹(PÏžºž½0ÜôQÌÂ/8 q¢+.'&~mN@ö`¯*0 ­\ET~ôD~M ‘½‰A}'áëîhÁ•a•Ê˜J‘™ˆg†„µ8¡++MÓBš1þ$(ãò°y´R?Óvû•Zp–¾É ÷O¦yj±sTå… Xä ~Ôßb9‚…#p¸Ä1Þ
-,'-%¨˜…¸˜¨™R„ò·ÓØaÉ]"vº<RÛ+3‘¯Š{!µÀ
-endobj
-1618 0 obj<</Type/Page/Parent 1367 0 R/Contents 1619 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 974 0 R>>endobj
-1619 0 obj<</Filter/FlateDecode/Length 1734 >>stream
-x½X]sÛ8|÷¯˜ò¾(W#Z¶$§Ê^gs»UŽ“‹´•\î"A (
-VNéÂØJxðäÒ U¢h=¾~þ4ïâïƒ0
-39/øýé´÷èõÍç‚àÂög7ÏEqËÊO÷­p~¾·hÆV¾°Ð凰ÙpwþÀ~ÆQ@£ÅÍ"¨„Þ5W¦ûà$,î2h'F¿îöÑÄkï‹Þ fþ
-Sú3oðâîê%Üú͉!M›‰(M“éíˆÆ7i¼˜Ïî_ÿ|Oo­a³¦—&««ÖòtŒßMLG4˜ 1*åßó[‡ëñ4ß\ÅëtšNyŸ_æÿºø¾ÛPendstream
-endobj
-1620 0 obj<</Type/Page/Parent 1367 0 R/Contents 1621 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 977 0 R>>endobj
-1621 0 obj<</Filter/FlateDecode/Length 1645 >>stream
-xµXmOÛHþί!U—JĵçUâCHBA*G¯¤jO—û°±7‰Áñæ¼vÿþžÙµ“`h ÷"{wfö™gžóבG.¾=êúÔêP¸>rwvŸÞó
-z=|®És§[þ•Ðyæ÷[N€{]¬ðñ“IZMÞðGÓ[îôº4Œa—¦aC‡Y¼É?Š|õvz‹¥A¹´1 éJÒþ1m2µ‘Yþ@z#ÃxKM9Vl°•ÔÂ\Zf¿hJÔR¥åÖrFWc|N¾NNHeìÅ¥¦×r|ÄÑpΆSZĉt¬»<‹Ó%…"¥¹¤´H{ß8‰5Ž”ˆ<þ&)WÆa*óÒÙJd°ñI.dV=<>Œã¸æx#2±–9VÇ©1¥×s'TébÖhÏÞÒlĪŒÖ
-PÆ).×ð®RÇB–P5»NÏ#¿ðq¢™ßé’]PÁnž7[}§Ã €#øYÈ÷Ð
- lyÎØr+c0¾‰¤V EÚ
-™‡‰ÌÁµ»|çS¯T‘DLu“öØ<(ÿ€ÿëBçv-h¿UÙÝ.wUý1Ci†/œá›Ìð›Ëb6ÛòYæÔÊG+yô<'øȯçÄO ¨ªïPÛwz\@œ¡/8¾ÎM5røØâÐ"äÒ.sVJ‘e2Í“*R˜ˆž­bhâJ¸R­,ŽžxeîÄi.—ð›ÉM&5œ™
-ÒŒfO—ãÙÛÒ&‹×"{xŸ©bs9~6º8®B,­Ð’ÍT7MEX‹%¯VÕ;š~ÏñúÔ¬$‘ÉZܪ,F÷°­Bsã(EEHJ*åÌ /´]É”nÄz.¸¦In Wôq<âý(*µÐíY#;|ñ zŒ…&¶4/®¿L¯’G2q¢á •¸åFÁ’/ `=Z?L[7#•æ™JTÔÛç¤agjËQ.TMÍ!ÂsˆîÁÁ4T‰£Y2S4o†ªHs Y±í¡†¬vgªÒf$¢Hr+özÀgDßAûH_–Û**ïük2ü؆é³û~öOÂØÉèk¢x†gàÕÿ¿CçO&y/Ö›D¢åj] £L‡7ÓÉûkZJ)H6— óŽfÑžÉÜ)ò•Èí‘ÛÕàUŽO¦=5óa6{SØeU5h+4ß:`<¸§`*#ÎumiTNÝŽ¾¾pÑ Óý(ÅdÑñ\†wÇ6ÌzvⲕwbHl-ùUàvÜâ¸ë.JŽëËû @€/ç¶Ua7›ß¡Ášj±}ŸZ’÷±ÆËÙÍP Œã"ŽN™Uœn¤â$Eá©©<¾PÙò˜Ï±›¤paú]¨­Dû<±%ÉTU4„U*Ô,``HkŽ9`ÛqÊ©øÅ0í‘uÏHa™ÉM"BL·V¡¶1ú³QË-£0üí´žm²jí¦€Jpì
-^׎%)Þ¢´F`Ñ€zÝÞ¸çzAÇíŒÆC¿ßév‡A09z­vë|Ô­mÝl£+ w#
-øÈ\³p‡wj±°æ¿‹‚Ãü<K= ?>¥êëÏš1Žô§¶0Éá°}×íÔvŒ‘H«Œ˜£î‡Læ¦y—{ÊÌÔRÒ¶tæ8øžÎQR¦–5~î
-endobj
-1622 0 obj<</Type/Page/Parent 1367 0 R/Contents 1623 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 980 0 R>>endobj
-1623 0 obj<</Filter/FlateDecode/Length 635 >>stream
-x…TÛŽ›@ }ÏWøqû2·pÉS $ÛJÝK7T­ÔöaB: JÓªÿ^“MºM» ÈÇ>ö±=ßFÞ<Ü…´‡€p™ã‚ð=üfø›Þ€Ð?¯‡ëãÄñ@P⨀“ÀñO%¬Ž8†Ã@ód4Y Ù µëãGv L I¯Jë:)*5ò*ÙŒ‘ÀGÌUV´M)·²7^+#Ë "i¬2`YÝ˶Ýk“Í`:ea„Óù"^‹eÆ|.øt>¥‚ˆÅbàÚ˜¢’æpmt×¼g@¡ˆ^ïTj£)fÐè¶ø¦©îjû?\+«µ¼Œ“ij—¥Ì1ÚçŸà|}„ëZežËú™šCcÍ›¦vþÃã”mèP`ùyzI ®Èn»j­Ì B†:§õ ò꼨W[U–3˜¬‹z²–ív@Þ·q³yê#£Â>w…7
-£Jù”/££j“e
- ô„b.1âîK%[•,Je éÉ×:—&+êì¶háÍÝÇ䬆2æðú8±Ž6¹IoÎtÚ‰`/[Àé·Ð5™´*CŸ³àÜa=¥Q›EŸ
-Výäã1ÂŽŒÇ\œ/tú”®J—ºxÖøøy×WáÍ<„{£û]ƒøÄ-m¡ëÞs|v{¤??.‰!\ßq§ ϘÞÎŽC±HFïG¿à^èendstream
-endobj
-1624 0 obj<</Type/Page/Parent 1367 0 R/Contents 1625 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 987 0 R>>endobj
-1625 0 obj<</Filter/FlateDecode/Length 1464 >>stream
-xV]oÛ6}÷¯¸ÈKS –mÙq>ž¶uK[ h·Æm0 /4EY¬%Q#)«þ÷;—”W °!pl‰äý8çÜ{ùÏdAsü-è:¥åšd5™'s¼9ýûôf’ޤɒ®–7ÉŠ*Z¥7ÉuÿTÒï§+¼[Óêæ¿S|¬¢<,¬Vó$/¬—É--aîæÒÅ;âÓ`n™ÞÂÈÈÜrq izÿÅÇâûm3™ÝßR:§MŽ|Ö×7´ÉBx#/_¢ñÊb=¡·7éW)•sô ª­ gZ+I“©—›o“9MÓÎ_´ ×_ø[_\GëÓå
-αs‹„ÞÕÞš¬•^›:n]ÑbÑo ñbkt¤eê JÓ¨ŒtM¢&ü¬IÕmM]©Ú'ô{¿Ã:jâ
-!Dθ±*WhØUÊ&{ª0ÒyH‚‹PœæªÞkãé[ë<¤p,ËAâ½ÓÛ "CC/È‚»aâÃy†õ+jŒF÷fv°4è÷Ut]—È#ˆ Ò™%!~ÜCf£|9»oMÇèìTðùj­÷±i"ÿh"ŒÜwœ#Ú1hãSo>|¦7¾ç‘„Jë§ï×— }0
-endobj
-1626 0 obj<</Type/Page/Parent 1367 0 R/Contents 1627 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
-1627 0 obj<</Filter/FlateDecode/Length 610 >>stream
-xTMOã0¼÷WŒ8•CB’¦iéi eÅe«FË ¹ŽÓ%v±Vüû}vR(e«ªR>žç½™7“·QŒˆ~1f &x;ŠÂÓ( 3¤ó]'ô×åè&]ýœ"Ž‘—®6›Ï ú(BÎÇ|oXìŒÐ{¡tÿðvÃB¥·‹+ºÕJYpÿô2%¼tÀ "I¦„8ΫÚàP7 ¸Ì
-0µÜ*ýΚF=aIËjYË-l%ÐP±±Ã;£:Í•Ïã:¡¯¹¿[®\kêOÂÄõ³l»%H7ÿF3É«çË~Þi-¤m¨­¢+³S²0°Ê#MH˜BìE£v-Áj!B}ÊåöÏz
-endobj
-1628 0 obj<</Type/Page/Parent 1367 0 R/Contents 1629 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1629 0 obj<</Filter/FlateDecode/Length 1410 >>stream
-x•WÛnÛF}÷WLó"h™¾Æ/EÇmÑÔiA¿¬È•¸6Éew—–õ÷=³—ˆ"Ü4…aÃ"wvfÎ9sÑßG§´ÀÏ)]åtvIEs´Èðq±Èr:¿¾Âÿ9~¤õÑË£“»·”/h¹†ÉåÕ5-KÂñžÓw•èœ4”Ÿfô“Ñ}Gè:Õnè矗—0?§ÓÓ`>ϯábYN?9aÛ*WÑ'ѬÁ§¨»JP>#A­ÜÒæàÊußNé–”%ñ,T-VµÌhYI*zcd먑®Ò%=Lkõ$ë9Í!,h~z•h7òáoj+6’ì½#ë/öŽ ÝàmI…¨kY†4.bS²ÍÊÈR¹Ã§Yô—_fçœ(·VÆ:RMƒóÂI
-Š·Âr¼%ǽQÏ!ðZY‡Gxn,ÕpňŒÚTΧYIe"*ÉÿV›'ë“i3úÅùË­n$0ب‚¬ë×ëºUM"ÙŽV½£R•íÄ‘…3IÏÒ६kZkC ­«å YéúÎŽ¹ø Y $_ºš¡«©‚kŽ…½_ž|Îq~•ðù!ÿÏZ”’ÄVì2ú\I°EôuÍVl/FIr0=ÃA4Ñ€Jtà¤%Ÿw@%¤˜Ñ½vÐ7$ ãÉL3°6Âic'᪄σ ;r¼nü]ÁAgÔ³ªå¹6üµb¥jå¸J(Ô…Z²Fùf§€PÅë'„E»ãà i-*Œá®5 Xë‡ãQ
-M¥f7áäÆøF+ÿùaw@ZµÖO¾£Ý$\Þ¦]ã<ŒàõÍËÍÅ"¿I±Ì8Ž`‘Æcrv•]2,ù–‹E¸æ7Ñ¡²€I¸/AÃö«ÃÙw¨ý4†«¥&ÉðÆ…#&‘V ,.IÃæµ}Có~@ïÞ'•®8 IÍó š_äorS”ÁU€9ó<áÏ€(_!œ/hr#ˆ¾‹¦Ë?¤¡r;h6Q@3®!¨°û#¬†ÿs¯r˜ûe€(#ç­DmCMŽtçö©&óg~@ÇF™zyê¦SD–æ¸Aå…bÇNƒ66r™8Ûªv¥Ú’kŒsÛê¾.ã`ë‘(ü ä¤¨Æ1†¥2²À÷#w0÷·N†ý/¡1NámÐPtµˆ?ÁH9ÄöJûVu…Þî›»¸þ¦2h2ñÃ[ Ÿ·ÏÂ(ÝGÖ±NûíI÷_ °Xˆ¦RZ@T,ÿTûs(ÔëÁ" YC½ßðõãüò:»¼Èc·ËÏøª÷Ë£?Žþ¦)[endstream
-endobj
-1630 0 obj<</Type/Page/Parent 1367 0 R/Contents 1631 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1631 0 obj<</Filter/FlateDecode/Length 1531 >>stream
-xWÑnÛ6}ÏWÜ—¡)«¶ã&é€=¬ÅRØÒ1—¼\I”Í…"U’²æ¿ß¹¤Ûê0 E×"/Ï=çÜCåûÅ‚æø³ Û%]ßPÕ^Ì‹9­–óâ†Vw·ø¼Ä_¯¨I‹Ûb5}ðq}ñîþ-ç´nPëæöŽÖ5¡ÎßT—Ÿ¶ÜEåi¹,è‘Û’©S¾q¾e[)Ò!ô*¼]ÿ•j,nsÙõªX¢Ê%6-
-úäÚŽ½ÎŽ+W´XŒ+—·€Š•ë­Ëåw8¯*ÐúÓ7ŠŽ"›—ô‹*£•­·} ÝÐÞõÄè0ú½¶Yp5¤ãi A“V†­ëM-xç4[\g”^±1{ªLìR¥ónã¹ · >(
-Ü*y]匀PÔºA1×5xÇÚpiÒ¢¼\Q£ñMôlC£üäô×úÒ¬tÒÄŽ°‡­Ã‰>qPrP5=þñÍ ;ÅXcy=ÁÞ—ÌÃÀ6a
-xÃÚâgp­Š[áÆèELk)ÿÔ<mÆjÒ™Mô <my°ŽjR' ‡Ê>& ÎNÐ+@âŸQ©=‚¤¯òlÐàNTjyŸ…(ø@Œc -x«uf ì+¹ô|újKèAÅRõúù-8™j—EKÞJ€4Bý]OYú¬¬òé8“­
-RuA_@qrÕÁnô½×DO˜*᫆ƒÌ$·ôpÿxEl"ön¶øJ‚²{j¥ëZuÊÖ\Ҍ6ô¨°ƒ v –„«…ljqPÐ7·éÁí0W‚ 9AÛ‡5ú°É*TÁk!¯žt0>œ(r—0ÙiKɦ2'Šçfó …ìT0£,Ô›²á*ÂèSDÊpvàþÌ5Æ.“Ù°qrú–}=È|H µ×h=È\ÖB’œ³CÆ8„Bæ*ôkÐTÖìŒûóÉ£f•òs•ËéB¢Š:¢Š´™ä¦~?C’(’ §é—¦é‡ÐüÚW½3$gg×Ò9#SJ~EC;­iûÝýYDʲ±LÎ:¡Ó”¢CR!‡b J¡×"–5Xi¼k1dc¢ÂÆ@’£Ž+”H©ä *G¬aˆ‘Ãê ùˆ2¨'8 í`:]×9{«CÔ•T~Á€B‡,FF$b7yŒ³W”N˜1
-x"¢9¡^,ËU¥€Z"|„6 ²c_Š(ÞxY #¶½Ô¹ '‘(»*cûŽ–²#*I"ŒŽ=Ý ì»Ê¸0µÁ)Ak™Ò
-,lÄÊâÇÞˆ%B¦Ñ1Û2":¡ ^…#׌3°(>‹;D#æbÀèzÉAc¡O ƒñ)Ñ*!{oó”HQÕpoâÕ¿0' ‘‹‡åM#S±1jFå~–>.E© b<ˆËמ×ÏÙœïOîïñʶô ݳÉž›x\÷$`²ZÄ[ö‚d1Ÿ‡@¶uƒd|÷`7˜­¶-{¼
- Np©‹Î¸>Ê÷
-0òüdðÇNó“Ð_@Õ$j ¨x‘™4Zrõ‚HÆ=•.œ¨KmtÜËÛ¼ì¥ ×ñMŠéœûƒô‰NÐ3®Î_åæô¸?ûº"šcçÎÔ¨Šck=½ógŒN‚÷5Rùu(/¢÷wxÈ,Ïø‡`Mƒ™ÃËrñ4Y…9äŽÇvfà"z¾”÷<döȺƒ]10ã¨bŸ/O®t¡Z–ÞF®ÜO–fbß$xhË¢rV,b©ÏÉûc­pI™ðüZaàG—Œ¨8ÉÇ‘>Ÿh ýáìÿœð»ã„¯®3©ÿ÷ÕÍ]qó~‰+·Öb¹’–[_üyñ ['Nendstream
-endobj
-1632 0 obj<</Type/Page/Parent 1367 0 R/Contents 1633 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1633 0 obj<</Filter/FlateDecode/Length 1595 >>stream
-x•WMoÛF½ûW t‰H´¾,+‡ìÄ)‚ÖuZëŠ%¹7"¹ìîÒŠúëûfHÉ­ŠÀˆ@jgÞ¼yófõ÷Å„Æø7¡›)Í””ãhL‹é,šÓ|yƒÏSü9M™¼˜/¯£å¹Óé™w«‹«Ï×4™Ð*C’Åò†V)!ÁxL«ä²Ð/º˜’­ ›l<ýDÁ5úýê;͇FÓ ¬ÒKŸÛ¦HÉ×Z§”Ø*iœÓU •$Ú{
-–2Sh|Èqe¾W–¶*v´u&]ákCòM’“ò¤êº0‰
-ÆVäµ{1Õš|Ž£žAŒi4™ESNý|itÔ½jã#P¦êâStÿí¾K?z O&qÖÛ,Ðc–™D·!žßsrEa·ž’ ® —Öi•ŽTÎÿQ¢’\#]mP¢Í€B{4…+ŽZÊ>Ð<1Ï£Ù¤¥l:¦Ñ,¢Gðö.S½çú>HÙ#Juí4HÐé[æ¹]—OªŒòWÀëAòQ˜!Å;Z;U¦NuÑi›ë
-­uxÒÖ†zÑßÌ:²ˆ\åõ£pèlQ Ÿç(ªG/ã_ËöxÇé}Éhgt/ÐÉ+ˆi§ý€#Vò DÐEÑ¥Ù± ¥Úõ2«5tà ºëÈG,!œR”Tƒ˜®Ú€ø½Vï+Kª>ëLbqBcE–­ÜÌtŸ—´©ì–¶†3°~cÝ deΖÌdWD8„EÁ”Zê–^ã4ÅfMµvhC©*ˆÑ”µ³/ºä!ÂàᎫq2þÀ­æZ@7­S Ï˹9AãAsÙÁÔ8²6È}Å¿o@;¬ÂÏ&
-ªÕZÃQ|âL Ä9$ _æéDrø£\c¦ú B ºB›aÆoÆégT½×Í)"rf·í)Ù˜Z•§-Âr€È‘Ó䎅×j«j³Äv°°4¹GPªán)F%°Ó}o<fËCàIÎ.ÆÌcA Ü
-ßUåº&`÷Ûén­âé¦4 wȺçH⮫ EË®é:Ï$°3
-õ^9Sì„»«ÏËî7ÉdŸEË-n>´×ˆ§Û‡»[úêìwÞŸlÒ¸âÊGû£›ñ¾vüÿkù|±Œ×SÜíq|2½æ°÷«‹ß/þW,€iendstream
-endobj
-1634 0 obj<</Type/Page/Parent 1367 0 R/Contents 1635 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1635 0 obj<</Filter/FlateDecode/Length 1474 >>stream
-xuWÑnÛ8|ÏW,ürNQ«¶+Î}h®-Pàšë!wð -QJTIÊŽûõ7KJ±£¸H$–¸;;;;Ëü¸˜Ñ_3º™ÓUJYu1M¦”.o“kº^Þà÷9~¬¤"<XL—IzîÁÕrzþÁ,&ós'– ¤¸[]¼û|K³Z@•¦‹dI«œ€i:¥U6žÏ“EB_Å=UÊ_®¾ãýkšÍâû“ù @¬òñOÎ ëÛ†|))ÓJÖžD““v'-Õrk¼^’ Q%žTÕV䭨ŽȩŸò-íK••¤>r!L¦Àiaõ„ÖôðõŽQLi2»BÈ™ªB&—п¦¥LÔÈéÃñ>OãKáéATA{…@GD­Sõ6`d¡PzO#2W¦&Uºj“d¦.º7((ö¥r„o®þEZ d4ôG+Ãz‰Bd™lü[Ú´žjóö0+sÑå’ô&Rü&Ö£$´:r߃°2“j'à Ðqc¼é˜Øâ“~†©KS›ÖrqÚ“toÌSÈ=øâ)—…h57ÎPºX@Û›ƒ—ŽÖãNÖ—±TåKcœSÝ•åLÕ+ÇÃ5ÒÆV´‘ÞCB{åKh®‚(ð°—µµò ¸§;¡Á:+HKÇø!ŽùôzÉɵz”ÐÐf¢u HB§’k€¨r¯*¬©2h`&"rI]Á}×7ÜÞ(™pöt®&Wב'ŒSšÐŸ&{<.åì4ÝžƒGÁæ9Yªj
-:`šd-¸?ƒdëq™Ñàó÷tn´¾dzêpžÛX(Ø@.GtmQ _¢ã{
-endobj
-1636 0 obj<</Type/Page/Parent 1367 0 R/Contents 1637 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1637 0 obj<</Filter/FlateDecode/Length 1226 >>stream
-x½VÁnã6½ç+¾4 8ªe»vrÈ!A[`Ù¶‰E\h‰¶¸¦D…¤¬ª_ß7¤œh•lö°@$ !çÍ›7oøt–Ò ?)­ç´XQVžÍ’­ÒU2§ååÿÏñk%í‡åò2Y½õa1Ÿ½ý!Í^_u»9ûù÷+J×´Ù!ûê2¥MNÈ<›Ñ&;ŸÏ“«„>«\’V•t6_¿¤a1_#Ù&?ß’&mwp2µW¦"å¨2-ÉJlµÌiÛQ.w¢Ñ~JÛÆ“ÚQgÊ•ãï¤<=žïŒ¥­ô^Zr2k¬òÝãò…¬Bl):FÜéõ ·kv; ª¥ÅáRT™¤w©
-|9£ªÚÓNi (¥KˆÁcµqŽ‘j霬
-ò3öÐGOe¼Š‹˜B7h5ptiD£À@d>ž›ÐˆðÒy.:CÁèsãÁÖûjMaEù}¹¶§°Òk¼åÿìWˆßUìˆç;{Ý{ȵ„g°kòŒa
-13“A*ÅtW±mi
-_§ì[ÑRXï'Óù‚‡2ƒP÷ÐR¡‚Œ0zîû}œ÷®S[™«Œ‹ý¦ùÄg•ä&jýåË3Œ¤ÙñÐÐÃÝ-f£„÷æ0Ø{6›Ap)J}ïlp ÌôˆQù·‚rágà›µp>Z†4X ¸ÁÀ·B³åp\…£CL•°Ve.aa#Ô­('jTvÀ4´÷|gÈiåSƒ±éo|5ê4ƒ@¿È†‹.¡¿±á8}t½à‚]o)Ñ L]¯”±š> ^ /€Ä#§á™nàúÌo¹ži˜ì^‚/áŽo¾uʦÑè°^ewR×iæ½à;ÆÉ„±~±ü„£Égü 5Uý´ÁÒŽ*†z´_›Ý¨ÙÁ¨„¯Àày"”0†¥Ø"sØI¡Q0vncÔËÉÀI”¦©°¸j™©âu»Évê_€ìG…MUèVt."Œ)@kz ­6þâê\X…gDœ›o,÷EBwØ:Ì~]Ãmcô/§XZ¿e# 6çØȣ†ýêÖeÉFŽFðJ|ööƒ ³=$Çz—Øb•c·™Qaƒ¥0eÙÜj¡`¬˜°Ïyñ犟UxAà6f [œ×>¢CâÛ¶¼AÄàž˜Ëþ‘˜®ðv½\ÐjÝ?×nînoèOk¾ðŽúÕdM‰ž5Œòâtàb=»êßJ¯Þ Ë^¿¿ÌñÅc*¯ùào›³¿ÎþÛ˜Ðendstream
-endobj
-1638 0 obj<</Type/Page/Parent 1367 0 R/Contents 1639 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1639 0 obj<</Filter/FlateDecode/Length 1551 >>stream
-x…VïoÚHýž¿bÄ—¦Rq0BNêš
-)$\ Šz—Ói±×Øíõí®1Ü_oÖv~Ц§@dÖ»3³oÞ¼™Ž|êáϧ³> FdG=¯G#¿çõi8>Ãs_-)r/†ãþ;/z¼÷àÄ—ÕÑÉÕ|ŸVœŒÆg´
- z=ZÇ+E2ëTÒ^•î‹­$«à/PY‘àÍRdkAUbc²±¤îåýrú÷|>Y*l¢r‡_\]O¾.)MrI*â•«ïG=êúÄ»
-çâIF0è5ëý‘7äõeá1–2™)½§LE’o(10î©42d'|K…Ìñ[KÁ‹éþ‰<ä½¹²õÖõÞÅÓq[´¨:À‚¹G«¸4îÚ™ØÃ> ýb’$£H66I䄉q¸½xsŽúy>øÍUÇÝýäêœ|äÒ kú}Ïz´LUEi"skøøëäuûgÞˆ»ĸƒ&±0€¢PÚ¢‘Örœ’B+«•rB/n曆ëû%áî±Ô¼9§ëÉÍ|rÓ§ g]P¨Ed‚ƒÀM!a=É`n+3„FÇ‘Vù½§ÃÆýS~züx˜Û™§[Ç#M‹‹çã‘Ùù#Z d÷ñ#U( óÄ¡GJ“C=VÔ"ä=ªLC
-bYyôbYI²$ú§Q×gÖH…f´ð¼J˜Óq$êdbG»,±ô™ú½á¸ó‰’ÜXÇ´~E¾9D¶½pKòk…‹´›j&ùWv(K6±%‘E±L‹_á´!µ‚Ã÷yàÈ’º=$¾4S†Tbo(,]!;c*¥vƒØ&™ôèÞ1–w€vG -Àò@¤Ô)Ú3©ÜÊô°†ª$M[F C¸±Re=ú%©Qw·mô…tî¯.(ÐûÂvZíHjíx£ ïÖÇÈkJƒl™ÃåûY™#žš¸ -.£
-¥?g,R%´õ>]ÊH”©½ ¶5Â(5üŸó%Bú …
-&ÂëO{ÉòÛr5{³›™ë
-ë@ÙÝyôÐJ7kæä:A'y‘.VŽPå,=åÚ*Þ·%Üö£ùžT•#ÿ¸/t8T¡õýnøŒ6­« â6Ù¯pªÛf åV¤¨ÉÇc4¹£k¼5D”n‘EýÀ·/ò½«9‚ëúºÌ¹Jaq¬
-F^P„äƒÇxô€6ƒ`÷
-Jž³Ü”Ê'»þÃ=tÏzçìüqq8{£Ó~`Ìg§«£ßþ§ñ¥endstream
-endobj
-1640 0 obj<</Type/Page/Parent 1367 0 R/Contents 1641 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1641 0 obj<</Filter/FlateDecode/Length 1505 >>stream
-x…VÛrÛ6}÷WlŸìL-šÝì7_M£DÔI:u ”‘€–Õ¯ïYr&3M&˜^
-ç~ƒs/¬ßluº“ŽtÍ—Ø€fŽ\cø:Ý8šÇ­¥s Jç9í•Ûò/Duø…ÿt§¾Ôƒ¥AÖ(Éåjl-ù4ÔdDe‘Ó9¸—²¢'a”n,N­.G”
-eY_— »Ïñ`<¦8œß•†•Â—“è’Q×z³¾R]ÖÂ)PìÑEF³»{Ê sÿxö»Dik5HÂÇ7­€ó1/2ÂDl¤°Ú …rm(
-i-¬\½jfŸç÷þˆ\m#‘º‘W´
-®Ž†Át8ùìü§Žªèø‘ÃZLFS0—¦:u8?3•U™4ªÚôjb­oÍèÑR”kA
-4U…X¤Â¢<åÛ™jÈ;ݪJþD|ÌeSg ±×5‘Ï3¦µÑÍfëä¥ÿR!ón)7 èKÃÕ³ØÀ†§]g5 ¤Sg_×TÉý‘6¤-h‘$ W[Á¢|k |Äis&œ%à³Ù6럨¯ËÂmqÒÝK­³«^Ãxï²QµoÇŒÆaø«Ïß6Òõ}§õŽñŽ¬ƒup"«ð¨à”óoà Z+ÄI mŽX458Ê,7ÎŒlSך³åD‘p©}Â?Œ„:ﲞÝÚh§S]À»Êát
-V>‹2°˜ÓÙF^@õëL  †®Ô½û2e e£Ä~μÂaÜ;x€¢2ß”4clŸ-é©®¨¯F½7Êq(ëm„—G´î\³­燜›ËXyΡFz+-´kû¬ñHØ–ÂìøE
-endobj
-1642 0 obj<</Type/Page/Parent 1367 0 R/Contents 1643 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1030 0 R>>endobj
-1643 0 obj<</Filter/FlateDecode/Length 2115 >>stream
-x}˜[oÛF…ßý+æ­ PÓ¼_žŠÄiZmãÆJ݇¼Ðe³‘H•¤âäß÷Ì ÉÊBQ èñdz;—åîRÿ^äã¿€²¢”Öû ßóñ—ùŸ¿\‘—S%^J{Jc/ÅŽî.’Üó) C/+|/…c~ÞòÀK(ÁÌÈ=~âeÊ I‘bhSŒ­b4ÉC„„ cf"˜‰ATh Õ yŽxœUrLÒBrŒeJ<¬‘ÈŸCÕ™‰p‚3ÆvF«Aã¥sT+p€~Æ™ˆâ9­f+wÄQµÆ‘T=+8"ì4’‡-¼ÈÀÀ—‚Eè=O&(q"J&5Z'EåE“Mü¥×hÐBJè¼Fï) }nÌL­3NÈQ£AóŒ«è¨Ñ w×P£÷….Î×jÐ$Xx­fZ,òµ4 ¹ÎsTVƒæþrd£÷£õ¶ Vƒ†Ñ\uŽÙjÐtóØß ÅˆsE™þNTûé¨ÑsÕþN^í§£FÏýéØßÑ;ö×QíïD“Ä+(qÔhŒœÉkë¨Ñ¨³n3µóøfd«AÓ”_1ç5š;òštÔhPdî;j4z¼bgj5÷7]Œl5÷7^Tcì¯a=q}¦¢´¿NƒbOCFŽ ª#;j4(¶y¬IGF‚b1¯Õ ±ì*³×jî ¼ Ž Z„Ë‘F#Ù|g¯Õ q°ˆÙjPä‡:¯Ñ ™l¿Ž š'¼_9j4÷7_ÖYöØ“]öTUîœiT`dCæò»`¨ÑÜÁëÊP£¹ƒ æ7ÔhÔQY¯ÕÜ£
-$äók¤J
-i4(^¯ÌR£A3¾ÞX/ƒüré1(…¥-rÞ8ç‘5KQ9j4
-‰R!Ý™Z EÜ^Gæ&ÈÒ˜©¾ú±lØÏ"*Q³Ñ Ø4•£FƒbÓDöŽ Š#s1²Ñˆ
-‡Ú;{­Ö˜#ë«ñµ#ã¯(‰ÙhŽJ2rT{6zC¼dˆj¦VcÞ”/ŽŽµ’ã#‡¼ñÇ¢´¿Nƒ¦9wÁQ£AqT##GƼaÁý©.Xì÷|¬(™VìDÑ0c¦b
-¾jOVUÎ:SÙR 5šó 0†¡Fs>|13ÔhЂW¤¡üÚDyŒq+æ«à˜ŒÄ>AÊŽi2ØE¤íŸ‘(6*Ä¿ò9Á7•H3|LÑÈ;ì ±ruå;$!Fþ,QÉƌӘ¡£Pj‹)ªˆqÆIˆÃ86PXzr›Âþˆbg`4ÏÉU2Ôh8âøœ×hPÔMqÔhЂ—«£>§¸¸ØÕSŠDHLÜ0>D¹¶)ß+U03RÊg™ï“O¿¢œÑj„“„(ƒ£oV²æ¥×ªxN…¸JɪF?c¼«¬Äp\Ýœ¯¹¡IDvŽÇ¡^t" ª„¢|“FD¸¤–ªWz ªÏŠ2Þ‰ª×QõâSQÒQ¯(ã¨zU¯?}\IŒ¢Œw¢êuT¼>„õâÎ^UÎ;Sñª^ì—®V¼›¦ReÍ_õT+CÕ‹§—™W”™w¢:¯£êŵÚÕ*e¼U¯£ê¦Xæe¼U¯£òÁÄ—_­¿žªÔë4òCÔÁPõâ_­•<+Êx'ªÞ™Êb–ßö”ñO òÿìs
-3Ê–>##Áp/l®8pññ‰÷§®¢íÅÛÕÅÕû‚BŸV[üp“f9­6ò{ þ²~uó—Go‡ªÙÔߪþõê<a^}ú2äëèjójU>ì*j·tÝ6CÕ ã“¨Æô¤¬\<‰UN·m7”õ®¾óˆøèÒàÀ£_o?ýÍäÒ_У»ëô©©¿1]BŒûî±-AìÑÇjók9Ðousü±èÊf3\ÞÜÈ$‹ùñô]¹( OP;<U]ß¼¿£õ®žò:yñþ^®ëfhû§é±ŸNãÃo*}¸ éZÆa|2 îH¼}¦uÙÐ ­Ûf[?Ñ£wW!Ý—Ý‹ÛTëÚÎü1¦²§rœ˜¶`¿D°¨‡€ þŠˆ>¿jÚašêóëu*\3~¤
-Øð±X«]5Täžw´­w¨K¹åeß#ì ­ŸÊæ±:çF X
-ãò¸ßÞ;,›f×IóqæÁV"äé!~_§Ù$ÇË“$a˜
-òC‘\ýPä/£IÜ3¡_zïªîk½®è– J‹QñüÇê€ €Ûòöøø²¸øœð覺vs\X/’Á­Ì£_ª¦êÊÕͶ= ?‘pŽ´«¾V;ÍήR|°Ê$U×`ŒªëÚNZ>ƒ`ß hé;´xͺcÓ°8tíºêÏXRloå°~ÒÍrYQ°wuùØ´=ñ½=vÔË^Ó£hUÇY,j•ž«„×KDˆ·jàB½L3åB¬°@ Žk¢B
-N È> ÍNmârVœ #ŒÎ9QZqÆç j*09Q!é9˜0;ó¾X¢œJ1ÂâœßÍ:iàŸÅs‘¤J§E®wC½Ûá­ú*«;ÎÂ^v˜«÷¸-È (6ùYgàËC5Ƈ`š„8€ƒHùyuñçÅä\‘¨endstream
-endobj
-1644 0 obj<</Type/Page/Parent 1367 0 R/Contents 1645 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1645 0 obj<</Filter/FlateDecode/Length 1452 >>stream
-x}VïoÛ6ýž¿â€}ˆ 8ŠÅv¶O]Ò.ÚÆC,è<´DÙ\$R%©¸þï÷Ž”âDíÚ"€%‘wïÞ½{äד! ðH³§”–'ƒd@ÓÑE2§É|†ß#üYIyø0ž]âñFÓI2ê~ø}urþþ’FZåH2Íi• ð&í]íD奥Ñ8¡¥±^lT¡üáÍê_l›Ðp·æ½Êzw¢ÜÚûèÈhÂO•I²Bo%™œªBøÜØÒѦöäw’”Fø\¤’DQ„7Ç5•5O¼]9ÒÆcÁ^§ÐÙp¦¦¬„W›B&´ÚaeÚ NöBi÷œóÌU2U¹J‘“1`#Ü á((LoIèŒjÇ¿—’ÄJ/i8k*O’ W
-F† Ý,ï¾'c–LyÉÍòÔ‘*«B–`B>àêª}e´µ¦®°ÌõIÚ>
-ÕgÎ…°­{
-cˆºãä{EïÀ-6Ü{ª’p;zJï×vÝe{±l®[ÔüK¶Î¢/M„ñ
-endobj
-1646 0 obj<</Type/Page/Parent 1367 0 R/Contents 1647 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1647 0 obj<</Filter/FlateDecode/Length 893 >>stream
-xÝVMoÛ8½ûW ’\ V$Ù•=$›k é~ć.P  )*fB‘.IÕë¿”ä:Nì¹lKÔðÍÇ{3Ò·QF)ŽŒæ9M âõ(MpyµH
-š-æ8Ïñµ‚ªxc:Mf§ë7«Ñ凔®hU©Xà¤$ ¤)­ø˜ºOm¾«p:û2vÛ/¯/Xözõ8Ji’¥É;†Þ²m0<¿0Xsî‚AöjÀ౎
-©K7ØR-æ»Xð˜Ú¡ô†&J?/JL48D8}£[+B#ÄÈCfƒÞÎKäƒÌ?ýñõýòv
-Ï/7Æy,;ªŒRf7ÌCœ·øÉr<apdÊíšñ': šÕâ,9+MͤŽ/ƒ¡¯ÂÐå¬qÂQ«"Ä°(‚Ýéð
-endobj
-1648 0 obj<</Type/Page/Parent 1367 0 R/Contents 1649 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 1041 0 R>>endobj
-1649 0 obj<</Filter/FlateDecode/Length 1656 >>stream
+™å óâƒ>©4IV¦`·Y on>F7`5ì”1û×ÝupDˆZs¢ã¦#‚YÞ M•H«ô9JÎÖRµÉQVŒ«`ÕÞ}`s82v¹8_¨û˜npH—zø¼8ŽðDc5¹šNàÖèvÞ`~`—6Óeë;<º }‚Òß:/p<—¡
+hÀ!nÑàýà7€ºendstream
+endobj
+1376 0 obj<</Type/Page/Parent 1119 0 R/Contents 1377 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F1 4 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 785 0 R>>endobj
+1377 0 obj<</Filter/FlateDecode/Length 1443 >>stream
+x­V]oÛ6}ϯ¸ÈKS –#ù#O뺥-´[ã6К¢,Ö’¨‘”5ÿûKJŽëÛ†À±d’÷ãœsïåŸg)]â/¥«ŒfK’õÙer‰_ÿ>½=Ë®³dF‹e–Ì©¦yv\ o=ð~Z,²dIóë+<gøXEEX˜/çIvº°œ%7p–%×0—¥)vÄ·ÑÜl1ƒ‘s³ô>²EŠÿÅÇâûyu6½»¡ì’VòY^]Ó*iàyñîããê#½–R9G¢^ r¦³R‘4¹¢ôæËÃËÕ·`%½ŠV&3Ž~•_¼o¼5y'½6MÜ4§46eWˆ›¢Yí(W;U™Vå¤ á±!Õì´5M­ŸÐ/Ãë¨sŠ]Ó׋7¦‘µØ@_”up¥› =ìWõ×—ä {¾¤I:‹AËRÉ­nÎqVTÎж1=::—¦®µ?Ç©FõÇ™&1ùŽvÂjÓ¹à{mEcŽ$¢]+'Ä\NœŠÆ4ûz<Ø9Ñ—
+™:o#@ €ºŠùûˆÈR´^Ùd0îæŒØŠ×r#;F…ð,¨6¹.4»Ž)~´_˜®ÉIx*½oo§SÇ„&ÆnâÓTî\RúºŠTÝÐ1ŸÁ1>ˆÁ:ûŸ¡v… k!Kݨ§Ýd»†Cn»u¥eµ`Óë*2jUkœöÆî©0vX!Ÿcõ!EAX>b¸r+6ʽ¼²êr;ûŠ¬Û7âÊé›ö€vÝmB˜¨<ï †üz±wŒa¤td‹ówÊÂ'™ñhwBsiœlqQ¥ÀŒ‹j2K#otCÕôjý pÌï¦ ’ŠÎÈ›ÏïQ…Tˆ¾´WôøøHkkzÇé°$ª
+¯¼¡;²$Mã!Îî$xÝäz§óNTT@†ŽË5zDj6+c¶,¦¸e§¹ò®s¼1Vöm”§æGUuyÈškR¸mdŸ ë‚*˜eÖÊ÷
+]A4ûÀÕ vØ? u´>ÖÌgô Žôó§{ºý±
+¦ê×— }0
+geöìq?ákÑqcõÔHÍLØ}@}‚+nsùEš;Åëá2ô©‹s¨_^žÞ-Ž.iÕƒ-Orºmãø»ÅûO‡ùËmÓ”-z½¥2½¯ À1Åǽt¡»Çö<µÂ¹ÞXp·oUqz—1\ÀtŒj4xqH
+·g¾®^dOy-ÕòÎJwïã`XÇÄf1‚éÝõö$[Ðd17Üÿ~‹ž/¯“å"èÊRöøëêì÷³¿ëÚðDendstream
+endobj
+1378 0 obj<</Type/Page/Parent 1119 0 R/Contents 1379 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1379 0 obj<</Filter/FlateDecode/Length 591 >>stream
+xu”Mo›@†ïüŠW=90`;>ÕiåR%UPs‰­—Á&‚]gw±•ßÙ·ùP…@†¯÷™¿FR¾2,rÌ
+È.J“糌Ÿóå‚Ÿ9߆PG—e4½™#ËPÖÞ¶X.PV`û4E)'å®±86m iH8‚@Õ’N›7HѶTÁŠn# µr¢QÚÂí-[7žYÝIlRž&MBI°¹½^_•/QŠ8›%9'ž8±ÝrHy°Ø¡äîé,A(BöÆr-§ÕüË,œ‘f¬§¢µzß±œ!J|è˜cçE2÷±ü~ƒ’…æ" |,CaCÐ_?'ß¼¡·'>Èô& Mb3|8!›@¨ŠS׃r
+endobj
+1380 0 obj<</Type/Page/Parent 1119 0 R/Contents 1381 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1381 0 obj<</Filter/FlateDecode/Length 1453 >>stream
+x•WßoÛ6~Ï_që‹ÀVl9Nœ¼ ÛúcźtC=òBK´ÅD5’Šãÿ~ß‘b, Y·¡¨[K<ÞÝwßwwþëlN3ü™ÓuJ‹+ʪ³Y²ZÑñÃìð<™Ñb~Ìér¶Lnh¾H®ÉHÚâð æ/8Œ/ts,èruÿ¦øëOþ¸>»xCéŒÖ[8¼º^Ñ:÷¦x’?Ý6T‰¦QõŽ~þüuýù|ý
+osÊDYÊ<¤±ìÒ“­6Þ@æʦ8N:éUrɉrp[e¬#UU8/œ˜Â" DÐÚžûèðNÐoošp<®ŽCÆëJ(Ì+|úh‘Þ†' F„?¢€’L×ÝXŸ1û«5`×µÇ_a@•†öÂr¼9ǽSO!ðRY‡Gxn,•puµ+œ%N³Êt¨Dÿ{m­\L›ÐGç/·º’À`§2²®ÝnCêVU
+Ép´iå*¯GŽ,œIz’/eYÒVBÙšR>“•®mì°Ÿ$„äsS2t2Upͱp w닯é/ί>?äâÙŠ\’Ø‹CB_ Öˆ¾,™ÀÁŠíÅ I¦r¸$èL
+Ãxô—Xá´±£p*áó¨…¸F
+ž7þ®à 1êI•r‡¬ ­Ø¨R9V ]ø§9s”ov
+hU¼~T@XÔ>“ÖBa w©™ÀZߟ0m]3:¡þ3*‘*0k˜ÒÈS(诒Õ0i&ÀðÜiê®h‡™T]H£ÜèÆH"bòm!¶Ñƒ–ÇBarÁF¢Œ€ÄéE5Èö´</Õ ·Ð|™ëji¡'êäWÛ!g=ÝDdY‡ ãô ¥£ Ð &”·†A÷¥Gµ2PïÍÛÐ+^%Q‡ó #t_Œ<>þ¹±N=I'ôÎË2@mu•|=Œç@ÙÓ2Æfò-FО…Yêݮǻ~PŸØ˜ÿÔ- Œ5îw{]ç  ãž
+ñºDìÝBÕ0¢– Ô×sä2ü{Ì*áF–'@ :`|Á1¶§1°À>0®­Õs:ÔÖÚÖ› o±“‹÷±«/¤Ë.^
+÷M]· G¹ô8ëÃ;¡Ÿ¾OÂ(ÝvUÇríwA.ºÿ€5Cl0£â:¢:iü+ÛŸ‚`W½µv¶Jæ ¯Ë'¿^~„\^­’«eÚõ¼tÁW¼[Ÿý~ö7£@2fendstream
+endobj
+1382 0 obj<</Type/Page/Parent 1119 0 R/Contents 1383 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1383 0 obj<</Filter/FlateDecode/Length 1417 >>stream
+x…VÑnã6|ÏW,ò”Çv|NúЇ»ômœkcàZà€‚’(‰‰ô‘”]÷ë;»”GI[I K$ggfgùýhBcüLèrJsÊÛ£ñhL³éx4§ÙÕ%>Oñë5•ò`2ãÁÇåÑùÍ4Ó²Ä^óË+Z„}Æø&?yTm¦h¥}é|«l®É„ÐéðnùMÖM.Óº³‹ÙhŠ•'×®])o‚³ý;3šLúw¦—
+F:¦³ÉEÂçµjš-åk#ï²ò®òª k >h
+ªÕü(ºÜ5 BSëB¡ª0ØC­•iTÖÈKi=X¢Òà›è• ¥öƒÓ÷ûs±\IW„5Ê:œè…ƒL]ÐãýGÇìŒú=¦óьٻK<l”ìQ’ª”±ø\«cÍÜ4æI“¢Å’·ÿR~©úݸ2+ôl xªÕ`&H% ‡².
+gèµøÓ+Ã{÷ éŸm ¸c•ZµMBd|2 …c -x+L f ìž\úzº¼&h¡c¦;óõ8j—DoÉ °ÿZ5¦²t«­örÃIV€4¶H¿ðu `ZHé\°&°W›½ŒVZ#ºÅâªÝè{g"ˆ0•ÁW¥
+’BrK‹›ÇSRMÄÚªÆW&”ÝRËUz¥mȉ.`t‹…í° GªÁÁnƒ‰p…³â¹ãÀFÜhè›Êƒ´pkôÃ)#'»X¢+V¡^ éíA}ËÉ,w“’±$6å>Ñ´q> 7ï(t`'‡ùESUlÈRåæ@,R‚³ÏðgÚ£¯R̆…ƒÓkå‹ ÷—PxƒÒ÷eÁ$ñ9kdŒC($®ÂˆnñŠJ:‚~}:¹×,×>¢O r6<IÔÑDìÂeŠÜ´ß_  "
+çåaîIW>ºüIGr«hþ'ú¸*þ%Ûµ âJÐr¸Â~9lS!j"' ¦'ø0Š±RDF¦Üù:……¡¡– ñ­ƒeÉŒ3è%2h¿£taHPhbQÎúúOÙj ñµ°¡ÍF¹³¥¤ä[ˆŽ_B:Æù9SÊ4ñû p~Çí *
+¹70)ÕMËcAìˆ0b”T•iôbp è;%‚ ¡Ü¢j1¯Iò¦ª“<­’Œ…ç÷™†‰ã9~—<4OÅæÕóž-m¼C(BäT…Æ$)d0e[úÖq¸ɉ4rç={eÀ ^’,I1±º ’Æå`È"œVøJ~vÒŸ‹‡Ÿ>ýòán\f›óE܈9ËãÑ!wQ3?Úu:‡;òhê €‡ ÊAe=ôê½²Û]Žy½ržÅ‚åUQ0ç ЇȎ©pfnÂÇ£øèÁ‘Ò ÉÏ"‰B3Ò­eE|D˜¤)j´^òY
+ g†"øJÜ“¯èÃõÏÿ¿qÁü-{~ó/—¥”*t,åòÛÇ}$ô*AÿFá"Qò’ J8ßxL&\‡8Äzî_<At§–R­ëØ5X­â«I¦¥þ:ã‘Àý,ê{’ï*}"Œò¼ƒE-çŠÓý§ß¥!ñ=—’aÄbЛaobW»É™f¥j:q]
+ÿ>è2]áÒƒNBlÃ6,€p‡¥ƒj´ºE£ÿÓÛÔŽ¯kQz×òªiz®2LÆ$ós€Ó//àö
+;²{|¥ÚccDûŒë,xX@iÕó›«ç›óûyº9'/΀çëøl~5š¿ŸâKâd:ãÝ?-~=úÊ Èendstream
+endobj
+1384 0 obj<</Type/Page/Parent 1119 0 R/Contents 1385 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1385 0 obj<</Filter/FlateDecode/Length 1311 >>stream
+xµVMoã6¼çW<øÒdakýçÐC‚vš~Å@Q J¢,n$RKRqÔ_ßy¤ìu§=E ÄÇyóf†üz1£)~ft=§Åš²úbšLi=›&sZn®ñÿVR^,ç7ÉòÜ‹Åjy~Ål³NÖçV¬6oŸßm/>~ZÒlFÛ¨Ö›kÚæDÓ)m³Ëm©™gi+Ñ4Jïhoì“£T:OûRjò¥$×H™ã³‚råžH蜴ôü%‰,“Α@;NÕªvL¥xæJ(ÚQ¥¼¯$É¢™¿Ú~¹˜Òd¶@_Ûüòu}.o´$à©Û¬¤•ÂK
+:ñ.ÔáÇ<w-…3@O÷wƒN3S× Ú%ô'šÌ Ç£͇}B™@þƒ¨SA—oˆZÇräŒ,4JßÓ( 2Pz°¡«Ó$3ºHègƒ†ú©bø}³-Ð2ìüµeÏ Q°?µ¨Í+ØÃ]™‹£‚>DŠ?Ä^b•„¶è¡çþлÅ|Õ3»ËÐñ` „ÈDÊ¢<®aÁ†çƒ­K£Mk¹9ãÚì³?¸ _™^i祣ÇËN¯b«ÑqN¥°hË™ú€Á…±5‚¾W¾$1€æྊS —­<ˆ°]ˆv|&vo£i>]nN=i vˆ“Щ¤Æ ªÝ›5ÕÌ„CEné+ýÔƒ§9Œ~ßH?™Uبâ6Î:és¼zpuX
+ô° á„T²V¥^Népë^gg]ŒþÎãäÒ9¦rÂv´—P6¹È| ßàÌAR‚ÌîdüÈ‚a0û!$^ö-5‘…ÏH•Ð‚ƒ9rúÆF&ªbÅÎ8™RlG¬ˆ^mFýÙ!q&àÌ,qù€npþój>MÂí"!äNKqcè£&Ž) &(Â#®?i6¡_4Ígž‹-07l½/Ó?¬Böÿ«N÷‡Ïþ“Pc•#«ÿ«R_!þG©ÆYòŽT8Ùk„®M1Ú ŽN¶rQ…Ap¡;Ux;FPõ÷NÞc¤í•+Y:¤ŽHã“i
+endobj
+1386 0 obj<</Type/Page/Parent 1119 0 R/Contents 1387 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1387 0 obj<</Filter/FlateDecode/Length 1467 >>stream
+x…VÛrÚH}÷Wtñ§*V`Œ·jL6T›5r¹²ë}¤&–4Ú™‚ýú==’|!NR¾H=}9}NOÿ{R?!õ¨?¤8;ê]:=CŒÎð¹‡?#iU¿è†Áàðŧèèãçs
+Ï(ZÁ×pR”üt»ÅÇ‹TW4N•Ì}}ƒí€B˜°íIï ¢äø&—THcuNa°ÐÆÉ„ÜF8²Ò9•¯ñFF;딜¦ñÍíd~u· #ðÊ°qNW׳‹ë­ÅV’ ÄˆL8sdÄ ûAãÙB»Êàn+3¤FÇ+£3
+»-;OùÓÃû 9Ù¢rœœ’-q:vunei>~gq¾?Ú]8¤¥°2yxO•nÂ>rê+m(Óøž'êD‘òžb]¦ ÅYôìYU™J…y3ëúÌR©„–û'x:FâýN¹îÈêdbG»L9<ëu£ÎR¹ul¨Wˆ+òõ!²mÁ-TW…´Fu «þ“ÊÔzãH¤VÓF¦…?÷’'ýA ™gÀ•F¤ÀÛ¤Þ†ã–fÚ²÷Jì-%¥äžxk+m<h±ÇÖ©LtgÛÁ7‰£…1/Rêí™TneÚ9@µRiÚR!àÆ‚8©v}ÕeÓ"_¦ÌÅ2E&àaçîó˜b³/\‡tራrÿf&åJ¥òÇxÔb WæˆÅɼ-‰•“9©©
+¢"tF1(ŽÖ;Çò¨1‰½ºŠXý™é ÊÉÈ
+d|¯òDWÖÓð^›ÇµÑer³»4´Ë!ÊØËúƒ¼¢ñœ5Š'™Èãº>–p#Œ…”´×¥i3Ht\L¤*µ xN…0èI j
+"*´†š^|]D“Y0½žó…à(ûºÑ×~#y­¶’ɸTë–¡<¬xV$:çè1Çp­6ûV´m3f{ÒUŽþ£^LÞXRå6ô}º àSZKGYoÚf¿À‰*…³-”[‘BŒÇá°?T®x¼ Æ&Ý bó
+À×S]ä{/6Â6u¹Ò匼AXƒ`†M÷ðøtIÄ…ªóç;£•LbtÁÈ Z¡ùÈ Ÿû] c¬â©ïg¾‡ÂóÞ¯¡òhÑKL‚=%²yÒŒ ¦—À„®0Ä>xn2™Ý¾ŠßÑRïØ®ahÍvíÁ‚¯†*”ªüñ°©spÆ:Þ$øž dMT‡‘Ç94ÀªÄ‹˜ŸòU3Ÿ›±Ò) æ7±Îã´´ ©ý­AµåÐ…Àhäî{¸„Ë";¬LV\UUA¦b£-¦F€
+, \v°òìᬎ NñŸ3*J•SòPßÕFˆÍåü3ÅŽu¾Rë×Eàü”§Ôt2¬•uæérôW:«é¿ë91•–w´uuC1MerÀ±Yt·˜O&—‚:C¨Fc¨¬¼¸)—ÐeÎÃþ¶Â(ð–êÎ>•Z÷
+|Ñ©¼”Žw©·N¾?ᪧHÓwrâocߧ§zNq愾ÜÌÔï½Êqøý©ëË)3Z`Ù¡î+û³ÚþãçQ³É†¬É£> OÁˆq]\Ì>]ÐÜèo¾:—<·±ˆjßž„CìÖ8prÖ=÷öãË%y0ÃÓ^Ó¤ÞÃO¢£?þM®„endstream
+endobj
+1388 0 obj<</Type/Page/Parent 1119 0 R/Contents 1389 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R>>/XObject<<>>>>>>endobj
+1389 0 obj<</Filter/FlateDecode/Length 910 >>stream
+xmUMs›H½ëWôžâÔ<|˹ٱRe½¥­èC.#60df°Öÿ~_ÀÎ*AUØjš7¯_¿nýXE$ð‰¨ˆ)É©ìW"\¯éífø"(+â° t]àÿ4#2ŠêÕÍé
+6JZ=HF©µ¡HÐ^Zµ ùèË{AWÜÍ(L“˜‚8 ×ø‹â«n“Q¨Á¨ôzm¡Øÿ®Ï|©Þâ··ª=I@É'ÝS)Må1ÒXi*žn.í $"Èbø„5ð:ž$W
+endobj
+1390 0 obj<</Type/Page/Parent 1119 0 R/Contents 1391 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F6 9 0 R/F7 10 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 790 0 R>>endobj
+1391 0 obj<</Filter/FlateDecode/Length 346 >>stream
+xe‘Os‚0Åï|Š=ÚƒiÈŽÕÖŽ·V3½ƒDK‡€ìÔoß ¨Äé0dæå·o÷%ùŽPü(±„‹(¡¸s[6¯~d,ˆ‰"ê"*ØŽˆs’ â)IA£@¢-%<`t Ä ¤Fa1ÔHcŽ¡¦‘CPêGáÄħ„OHR0o©ÄÕ`$¾o $MîJ~ó1*ðbÆ.ÞjÔwŸè0QKô'Z!áø·öÑÂD«8³Çg‘Jƒ)†×ÀÝlýAàéx´uQþÚîÁ|aµÆÆê9×ØÑ3“å•…f˦îmÝ_*åTÉâ±ò­iû,/«²?ûnæW²Í\žAVÐôŸ¶…åzµ…]U^Û¥{Ä6e}€Åé0Ì
+às™ê¦óôÜœZ膾ml;@O±Dª|þÿÇLðɤàx%ˆ×Þùb¢÷èþ¡£Öendstream
+endobj
+1392 0 obj<</Type/Page/Parent 1119 0 R/Contents 1393 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1393 0 obj<</Filter/FlateDecode/Length 1473 >>stream
+x}VïoÛ6ýž¿â€}ˆ ØŠÅv¶O]²®Ö&C,è<´DÙ\$R%©¸þï÷Ž”ìTi×¢i$‘wïÞ½{ä—³ ñwDó1Mf”–gÃdH³ñe² ébŽßÇøg%åáÃd~…Çï|ϦÉøõ‡Å‚†IûÃnñ€€1†¸œ!MþëŠãÊñV_¼»¢ñV9Îæ Zeá;Þ¤½;c½Ø¨BùÛտgï¦4Å¥ƒñXVYï^”A{cŸMøUe’¬Ð[I&§ª>7¶t´©=ù$¥½´¹H%‰¢oNk*kžy»r¤Ç‚½88N=¤Áh¦¦¬„W›B&´ÚaeºBRj´J»cΫdªr•"'cÀ.F¸1@ÂQP˜Þ’ÐÕŽs\J+½¢Ñ¼©t2M¦\éû»‡Ç×4Ì“YüxîH•U!K !ÊwuÕ¾²ÚZSWXæú$m%êóÈ/lFë ÒîàPŠJE– g´[¿á2%(ðÏïM‡Ž“rUHD½>½ˆo¸¬ðX˜-ŠãÌ¿¶§(©@ò°¼qä éºÜHë¸KÌcD×: •V>²î­ß0Ì 1°ö„>ç©É"²’;²ßzÒfÖYSI‡%èz @:ˆ;©×½SöeF:}îƒòmËÊ1ä|]©Œ+Ûœ!f©ì ß+hµP@9¤rH8È–ë‰Ev L}Ž>ðbÝEK;Á¥
+OŠ¦¤ R‘}ƒîñŽgQ
+ ®yÂ*áÜ>[÷¦ÐV¯¥ç–©x •5FuÐ6M Zmr¼…D'âÁY!sn¥<¾Š<Až€ê ½lÝ‘ww( JVBÃ:.š]4Z¤àÔ?¶·ûë[zÐê+‡üÖé‹kúº¢É=£1l©0ºv7—¦cÍâ@Z‚SžB‰™(+>N€mu}w±¼w>Ý¡2ÞxŠ`%$¯Š‚šS¨9¡¿Ðdvoæ/lïSd˜këÊS&¼ “Èå'o;yü %3ñ!\ˆ@C·7“Å%]­‘žë¼±ŠK¦û?îZ¢$Gâ
+P<:gÊ@œÜW‰KMæû”)Fol8B_œcÒ¾MµÉI$ŸBÛÚ§ÂÛäS£+>¥_H7—?>øc0$ÑŽd”D,kÉ6
+æçm|
+„HqVx¥ÑžPfM|Õ$ȪiË÷ 4è@{6ªBæžG’EÂm ¸®áá+p$r\7öÝ¢waXÀs< l”É\Ôš,ó
+ˆº³ä»E×À%7Ü{ª’py;¹IïçvÝ_®FÉt2Æ‚‹0þÇ‹š?ɶÀ)Bô¹‰ÓâÆ=——µ¯C4©æ}»½4Ïò ~šÎûÙ°³ùÅ"dÀ¢ÑpØÿ³*†õ³Q¿hŠœàf¸,fÝûòt¶Hf—c\¬ñm4¾âí¿­Îþ<û0ÁÆ¿endstream
+endobj
+1394 0 obj<</Type/Page/Parent 1119 0 R/Contents 1395 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1395 0 obj<</Filter/FlateDecode/Length 969 >>stream
+xÝV]oâ8}çW\µóÀH%$0Ò>´Û-ÒtvwÊî4ÒÈ$Ü:1c;Ãòï÷ØIh²}_*Abßsï9×²„†)åe/Ž&zþ2+¼Ä”²i4¦Ñ$Ãs6Á£´„mL£Q¶ßaÃäåV’£QëĆQöì”$IÄ^Û˜(n¿ÚÔ I;Û Û̯¡dqMOÂÞÎ=УÈןbšÒ|I, J‘dœNh^
+¿`W*AôœúV8QË":
+Ö¸Ž::HÆÑ}ÑŸh¥ô@¿·qŽÀvËçªâª½eWg+íȺdq|ÅÏõc*¾*αÙEúÓΗNÊàNV«À<_ ÑK;]ûµŠ¸µ¢\@x+©¶0nÄ1nÅyHRŒ;øæ–”rºµ:Ñ #·æŽìZת ÑE‡´-¤3šÔÍz'ð>ñªxM¿>õ‘íAjÔê‹®„(Èiâ~ÖÂÝù<»}¸'%+ÑMÊÝ—Ù_(8wRW¤—Áê— N÷üIø9Šèo]zví”?ŒÂ€l¥RÞ­"¥õY]
+Œ"èPòÉ—.íÖDþ%´=¸'@Ó@U‡­9} ëúPá$â }#ùe"ÑŽ/¿ÿ8»{+×Òè2D>n[ã¸?kd•«º6Z7Sb™?¹@ÖpÔèì«(~ƒR>˪þ‡¾Bžœ»ÁlvˆÁÓ›E©WæíŽ
+endobj
+1396 0 obj<</Type/Page/Parent 1119 0 R/Contents 1397 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F8 11 0 R>>/XObject<<>>>>>>endobj
+1397 0 obj<</Filter/FlateDecode/Length 159 >>stream
+x5ŽÑ
+‚0…ïÿ§8—v¡mjs^* e{Û&(8I&ôøM"~Îù?8oâ`AEŠL@OÄ!Ë$G.‹p§Á‹EOµ¢ýY‚s¨\„Nf(X e Æ tô¬nu…û2V{g½NÖùγ۩‘â?ÿÀ¨µæÒy\·~ÐÚéµtÎø¸i¶ï\ÈDÒ°O™ˆg|ËNŠô¨-íendstream
+endobj
+1398 0 obj<</Type/Page/Parent 1119 0 R/Contents 1399 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F8 11 0 R/F9 12 0 R/Fc 13 0 R>>/XObject<<>>>>/Annots 801 0 R>>endobj
+1399 0 obj<</Filter/FlateDecode/Length 1638 >>stream
x¥WÛn7}÷W ôbVÖź䥰]»_)q
-(¸+JbÌ%7K®½ôÛ{†\I¶
-C‚–KrfÎœ93þzÔ¡3üuhØ¥Þ€²üè,9£AoŒïþhˆï.>¥¤¿ÀÖÝׇߎ:ãdLç£A2¢œÎÇI¯~Ð4 ×ô#Ω7Ä«øÀ¯ÎGÉ°~ÌiÔÅéý;¶Þïw’Žups§~Ú]Ùëðþ·žuÏ{8ÐëñU9õ‡Ýä¼~ÚƒsßÅs9;jߌ©{F³  G4›‡
->tº™2ÞºÕÖô/ßÛøKº„f«ªt醌]ÓJ¼HÑñ«àµi*ËD“ ­åœ~½øtM-rRòµgÔê¢õÙJnÈKçIyKÃÓ£2s»v4>oî~ßÍF. …°(³yÐR¥•ßr®b¿.<Eò*—d´.•WfÙ¬­vz¾àÎZ8žà¥@ÔIÎ8~ž‘·qªb.¼„ /Bi‘j„‹Z”R<5ÚŠ9žlŒo±YËôÀ®S¸çé„=D’€ \\ XÊJ:`é(•Òв”Âë I³&“óf'Q/Ÿ´Z¶êŽ(“éj.çO§!ɯÀ½Ð ™H/ØÖâÐêÃ~m£ó*/´ÌAµ@Çþ\Xš ýLŒ²“ÀGhz†—áõÇ»ÉgÊE¶2ÒŸC¬ä¶£\–™ÂûºNRQÚy•y@¨5ø³±ƒ]V`
-‡`ÝÆy™»§ÓWu¸­ˆ•÷Å»v{½^'àK¹¶æËþF®ÿ^+“¬|®ÙÖµ‰H7¡ûi—¢
-l¹Ÿ¶»ô(Ê‚®¬12óö‹ýPt[,¸1@Œ¢äªÈ$[¼ï"Ê¢¡%ŠP·FÕrÏRúâÁ >¥èH¶bA6Tã’‰Òê0¸¤z‰Ñí´”Õºô¨½†Ó Ã
-¼N±nšå†kÞ¯X6ØÔDþ‡„þøZé† ³øø_ËêÓÉñäò–¤,ŸN#ÈYÝZÃdÄ Á>uCŠo·½#¼lm³=»zhOÀ“ã‰a‰¨°XÿïZèZq9¹Ÿ’eù†4/¡A%ÄÊåõÇÉOÚáÆ×ï!š M
-·"üM‚@𻫩Ô(€HuèòÀº¾ A6ýÂ%S{Þ˜†bGöUÑÀf&sÈÎ (cঠÐëi.]VªtOÄ"ÐôK…¤ÐGHsí‚5ÈÏa s›U»~ƒáÇ ÈñíÃlš\¾nòð‘=srîÿxõЀÔñþâaÚw[\,˜Ý]Ïï?]ؾ?”ÖÛÌjwÌràØOnïÀÝ@'^¸H-_Ue‰e5
-ÖCÄ™˜ ì†ÎóÑÃébïæ<³”dª<•etÝdA’1¡4 âHn£­"{‡9ï˜Õ±¿p§”åÓ kz$`‡~Z’¶ÐÐ*É¢ø°ÜÚ"vBd m‘ Fäu§ÅB) íˆm¸ÃÜEk€‰E“+=}¯œo4Yªã܉›éqr7 =;ÖüVÂàò1“„óÆ÷áæ
-#`™+cµ]nösÌV®¸¾é <1äÓgÐS»ŸÁb=­ñð²Kö9…’.v@ÄþCº%iŒ+šËJ‡s(5ïÅ(W SSm)x’Ó¾íôÁ8ö¥Ÿ™ðù?”Áy7jw§×c_ÏŽþ<ú¦5endstream
-endobj
-1650 0 obj<</Type/Page/Parent 1367 0 R/Contents 1651 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1050 0 R>>endobj
-1651 0 obj<</Filter/FlateDecode/Length 1607 >>stream
-x­WQoÛ6~ϯ8äe)àP–ìØI`HÚdMѸYì5–a %ÚV+‘š(ÅõË~û¾#©ØqQtkZÕÉ»ï¾ûîxùû ¦>~b'4QZôEož÷¿ð%#<KJ†c‘„oM’Ñ©=¯G#1ÞYû±ˆé¤?Àœ=‹ÅIøÆgÙîðl Nix:ÆçÿjE‹ƒxx
-'ÃøÏ’'c1ߺcƒñ~yŒíÅI_{ —³ƒèúŒâ!ÍvtŠ™‹±O³ô(Š?ôά)•šn(5z‘/[€ù8zuEz<Ò¦¡7Fk•6¯z~1Ib 4õ«Ùçƒ>Ç#„4ËŽñ•¦¦©,çòg^Œ®‡ÇÅq2æM¿›Ö9m­¢f…èk¥è6OkcÍ¢¡º•Z.U ~’”Þ¹Ò³ë°-jSv~à &Mõ:ŠðegG¤¦Œ.[;ÝØÈ[°Lß^LÄÇi šÂëªqSY›B¬smEû$….¢
-¥ÚuTH]J-VMY°ÿ=¯¥]¹ÆB)›ÜhÂßm ÞÚFI‘3·”º@Ýh’¤ÛÆ®TQôHeyã‰È E€÷éê&ÜËÚ˜fÏo–×H‡©7dn£eŽTɺÉö,³Ì­¹VöµOGŸÎºl «âˆöþ$ýs«š¶ê«ê<÷}~÷v¶jÕ¬¿ Xa7ö?í~ʲnï q ‚†æ
-„*Ú@%‹¬’Ž¼‹ÂšeFÿÔf9iÑf*£ÉUÒG-guþõÌU*™|Ð öçír¹4mlÏoíAº“é® ÖmÕ•føî”UµóÈØ$âðMý%ÒYn#XÉLxª·õw<ˆ=×®ð‚.!Pà)5ÒÈѶÊÒz¥´¯³Ç#^D$âz|ÅA ¤Õ’ì€Ò<;ß«¸6É„fÊ›\ÍèÓÍÕÊ÷™ÁÃkÖkæ®ÎQl¾bè^YÓÖ©¢ËÚ¬­ª{¤¯nÂW†F–%µtˆ•³+½eŽ
-Ï¿ö|ç•lÒJ´þ¨ø,7‘g]ý!sÈš?¾ÎQZ°Ûå}Ï5*GR!pÈãBq= Åׄ„&ðˆÆ×V|ªÚÌ UÚÙHÁuU+Ž5×K*  P¥eRµçÛÌ?£6a©Íj¹\"p-kîJ©
- >§\úÜ(øµCøüt†¾g#7´T¨wÎâ ŠÏÌZFfÄšdÀÜŒ]wð±ßSÈu^Û¦Gi­@X±+ E þ?îîo&³·÷Ÿþ\éŠ ö‹ì»3 ¶®ˆjÃ
- ÞfÊz šXæó{Œ1âêâ/Ç«¥²µ Ù&dØ*t4@B6ŒS°K½V@òºÄÔù2ײxnÎqÏé™/°”ÑAŠ¡Ÿ¨lB—U‰mŽ0´³F•ª1 ¸^yú:ƒžÌ:ÚÌžãÚñ’â«‚»°C_“-çhzá*¡†ˆ¼¡‘t¦JYÑ9Ë®“íÅw÷\žßÐݬG‡«pgpød+•æ‹ÜÞK‹G„÷ìôˆÝsl¬ïîvÙÆéÞÑ2I|œoÿ€.Ðèv¡n¦(Ð5½s²¦#}f÷ȹãápçÕ¡8ÌÔSŽza›‡ß Ub)^Ó»;ú Q¡ïQ'èÄôêþýÕL¼\ h;ïݲ’O
-ª+šœû€÷ʪuŽP42&ì-,œ".6l³8ùìD±Õ!3»PÏQíÅ#¨­Â`ФC»íî*Û#ÚL›õ¹y¹?(Þú‘b§öÉj¸ïðU°5Î÷
-W‰|’yáËù£Ÿ=¬‚V÷‹% íñµêLr¯aÂŒcŠ{½ÍË
-иåg7¢½Ð»ÖÇ4c-¸­W9zî®á½È1a±¥œm[&ÆKžva²Ám‹»ö!× ”õX»¼¬Ñòݬ²;"ú£y†åC± ß09ð%‚Êž½¹‹nîЕdúÅwóçqõ¥&áÛϸ|˜~×ÀóœJ¹—÷²]¤ÌªGâ; ð›Ãé€Føßž^Ü^^àÞ6|óÐ[“¶%æe7‘2: çþÀñ¸ÑÏøÿ ÿÏ÷Çý!ÿrt’ p† àjvðëÁ¿Ð?
-endstream
-endobj
-1652 0 obj<</Type/Page/Parent 1367 0 R/Contents 1653 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1053 0 R>>endobj
-1653 0 obj<</Filter/FlateDecode/Length 1675 >>stream
-xW]OÛH}çW\õ¥¬DòI¨´4 *„lâ6] i5±ÇÎÛãõŒIòï÷ܱ¨Åj¥UU°=s¿Ï=÷ò÷Y.ñ¯GW}Œ)HÏ.½K]_áçpÂ?ûø_HŠÜÁp8öúï †“w Ü»¬¬¾œõ EýÉØRJýËpo ­…þx€³–éÏþY÷vH½ù¼O®ÈæKòƒs'IŠ"9’?]vï–d¬ž íDH‰¶†tDÛ26ÞoþϳKêôÙ¼ž?¨ ÐFG7 ‚L¤02$‘‘Ê‚B¦2³"¡2 J²šìNª¢12èw>+Kß3
- õ" ã{’+mÔQ
- BJA,(„S4`sË×|XBežééÜýš<ýÆÈ ØÜnhàHÝ‘ 
-ÕY;C-JЄɯQž³w&—ŠŽ´çaf,D
-|®Aõº)mä¶ZU¸¥ÑœT¤²‰MR@'hS¼•p罚ÖNQã@Ä;“ÃRô&ï._XEO[ÚWYd2¡oniùD_W‹ûoËol».Þ÷<âw¼žœYr nÕá-ï_ÞÂ^ÐZa@6¶ð¼òß“·åêÕ³ý~·|O¨l ®d3¡Ov¿¯f«÷¤G•t§?zMÏMbô¼
-Àkz,í½ÖÏn:ÞèTáê€Z6DϘ{¼Ÿ×60i5ÓâÉÍ^cu^U+uÙæϨÐ)Ó[Ì)vPÀZsÀ
-endobj
-1654 0 obj<</Type/Page/Parent 1367 0 R/Contents 1655 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1056 0 R>>endobj
-1655 0 obj<</Filter/FlateDecode/Length 1190 >>stream
-xVMSãF½ûWtqYSedYزÙ*/ UÙ…]»*‡8‡±4F³Œf!¿>o>d@–à²%u÷ô{¯ßÌ_ƒ ÅxMhžÐiJY9ˆ£˜ÒÅY4¥ébŽÿ¼kN{{>¾ý2˜&“(¥Ùt-¨¤é|ŽoÿKÒÚ%JN<ÑKt±Œ¯Îh2§ÍµÓt†¸MîrǴɆÉ4šEô»P¹~4”Ĩ»æõƒÈ8ݲ잒ãÍw¤˜ÒdâSœ$s”ÙäÃMÁ±V†·á¼f’˜Rú‰©ŒzMÑËz›Dt£8é=="+H+ùD¬ª8«PpE­êŽ­Y¹c¶pL'“Ó(±å VÅkj4Ú4x?ªZï…D9\}ÝÂmB™\5†„BÆîn®K&TD›BbÆ´¥.Xãk’½Ú+\òr‡ZXvSpò F´k÷KØI^¢a)IŠ{Žžt–µ5‰=‰Æ&Tº‰BÎ$×hæZ‘®sßNhìЋi3 hö­DªŸ5¶:Оt ÛÕåöxôŸ0–-À+Ø÷¼Î¯CR ±L’i«J× cÙþ‘Žú!±<ç¹]’ÂO¦°ü{: N,˜œjÍJ»˜®§ˆ®-zÀÂÃõpF rÑW^Œ&=Ä™.+
-‰í4(°Íï¸k4ص1‡žKÊÓv¸ôW\ žo{•™Ê)«9k8•­lD…L™®ºë Q+Ê…¹G¢ÕÍçåõ—ȪÓ9Ñë Ɉx“EQ´=Ž0GXÐ0å.Ê´Úo‡³J—LQÅî
-`-TëäàUóÑ/0¦³ÎW¦~6(üýèû³[Zì¬kØÝï¾+«9§1ÿÛ
-w¢Þ êèf`õœâ4Žß ÈEͳF×OT†˜ù»1oŒ”5µ7zsï‹?ÎÂ’ÎxA 3PˆUSÉ®uXwÒ°~—ÜÓúyx‚ž9ìI4OšÉjQ¡«ˆ(r#ÝA†4•q¯
-G½²Ø ³/ï À& ÛI«n$µQã«·lÔß}vÐÃXsöžf8€³ ô¬¨Ök*­Œ³µPêņøµåõÓ:p¹z¦²©™2Øþ0ÞÁ™3vpæ#l8 Ø3X-/ëk l’á‰:öy¡2ÙBC¯!p2õ“ü’:ºÂ†F—ÐP­¥{|•¾8U„ñËÍæ}ôû³u®Á¼Ûâܦúâ˜
-endobj
-1656 0 obj<</Type/Page/Parent 1367 0 R/Contents 1657 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1065 0 R>>endobj
-1657 0 obj<</Filter/FlateDecode/Length 1662 >>stream
-x}WÛŽÛ6}߯(º6òý²‚¶iš´@ÚÄ@ /´4²˜¥D•¤Öë¿ïRòz•m¬­ 9<sæÌ!ýïÕŒ¦ø7£ÍœkÊë«i6Å“óÇÇWóÅm¶¥õl•Í©¦Å|-ú;CŸ®VËlIëé<›âål»–¡ñN^no³-§Ëôòv‹™éN^bZÜ.u¹ÝàZB8¦òj6[È+DYJÌÕÓÒÝ0m¾’£iowW“÷·4ŸÒ®DNëÍ–vELOòë_+Õv4_eô‘[ë‚nô¶;ø—»¯qæl“f¾Z¨]q¡³Œþh‚³E—m›4tI³Y?t¾ÉÖ2tW1q­´!UŽ½§Ò:Úw¤$k¥{ÔÞ0Vž=iO^Õ{õsü̬;d‚èÉeÚJ§€)½C¡¯lg
-:X
-6…z8¯+s´Ÿ…Ò-ì_qy
-êŽ)
-?¶2Ô²ó
--:ù8:DCLn÷÷ÚBå5R–lF¹ÆÚ6&öS¼ÃR?¢kíÁPÄÄ`µP®˜ëÀûÐ*WKYäú)D1dÙRrëP#˜à Öô0®ñïÒ÷X/¬àK}] ­õÚÿD;1xü¿gw"]Ëo:µoÝä¦+…s!zÇ™ 4Y¨ÆG¯ 5â徃HˆjÐK°Li‰8T.š9Jï RØ8,¬ð’¤D¹•‰f¤ƒ’Fÿ¼ $¯°ëv$¿«£EFïX0±¸~ûFG @âÊHÙÓTsJCZØ]b6IÙ{†ß
-d°•Ê#M!.ŠŽÍhëØoŽËÎË8D€³Â†£®ÐåBÛˆYúQyâhÑxÐåq³ŒÕƒ#”‘t­¸ mð2CÄ<¥zývL‹(ºÙ”p~8bÚ3Ksiñ u¥ÄÆOýž’Äâ¶U0¶KsÊÄBNâXÈÕ¦}¨ÐþŽ|«òoöíØfªoñX™-À&ïWýyëú"›7éÕP¶ës·¦ç8ÓÆ#Ú56LÚn4<£Ï—vXêäÚ‰P©Ï
-]–0-ÜzÎ;§€ž|à[.Ú.z³"¹8ã ¹„tûøƒd±IšùþÏåz›­WsüL‚‚f‹„ùmwõ÷ÕUÝåendstream
-endobj
-1658 0 obj<</Type/Page/Parent 1367 0 R/Contents 1659 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1659 0 obj<</Filter/FlateDecode/Length 1668 >>stream
-x•WMo7½ûWLu© IJ¾,;zpP0Ф©£à w—»bÄ%U’kYÿ¾ofw-wmŠ @Â%93oÞ›Gýs2£)þÌèrN‹åõÉt2¥‹«Å䊖W—ø÷ƒ¦R>̳Éò­³ùÇ·O,ß8ði}r~»¤ÙŒÖ%‚¯®.i]O§´ÎǵÊ7ÆéÉéúÇÉ”Îæ+„\ãõF/ß"_9:Žu6ɽ+ÛåþÆ1i—¡]¼è÷’õYý¨-ý:Üo"ŃóîPû&ÒÞ¤ %D{óšBgMõÎ=i£mT¤LkGMÔGÞ:pH3[Læ\Ì£ÑxÉ—ôMÕ™"å°™OWð¤
-²ˆ*^2ÔHÙ»>¹[TVû˜^ìö;do”°µ:ó‰œFˆ«Sâ;7¦Úè€Ê”£Å„¾h‡BŠh 0Âr¦) Æç©öýEÈt6ý€S‰ì‚Þ©ÐA®èï›ûïdU¨4=zÛÔšáf
-*)©åüö#ÍÀ\¦ðÙbÙ’t~1YNèÎ%œ²¤Cð!þ—nLéËÉŠYpWJ¡•F’4ºû²¾¹ÿrý;ÝÜßÿq?¢ZǨB‚D—>“Iø¨À!\ËŸ
-H¡ôÆé§Î
-áF);(~¿S(4ÎKdš¸Ý»à3•1Š@¹ªÁ{i•ª±|+`´Ò«\&&v¶ñcÎ ¶9<ŒJûq7êC„ï;@!¡
-tSå¢g€CÆuõ þ|Ρ +ò@“c$ûíó§çà½6í5sBë(¤ô òF
-óõ^6–Ñò1W ¿Çÿ?çf¥NÚYVÖ "g›½F?ºv3²à¤©—NÉwh2n|c¹/ÑwÕÐÆï)y>|ÑäÐÀ1ð2%í|ŒiLè«ä@µÚò.”Áj÷N8Ðb£‹·¢²$%di@
-aŸÂTb`Z©ÝjV¨„æBØÅ&+  L@AIœÚqaAk‘ÂVë°}€O”Éúk']Û Šìù6ágׂ何Ñùº@ôÜ,›Ç[áƒ_8äùmo/œ§*²–n\P»«÷š»TQpËAð»`TB×UÚ ;ßžf Vh_É“ªÃQ×b;
-ï~f\xJc>hTdO#&Ÿvlد˜t )›S…éÈåñTPsÜ‘@<â\*°™…ž0 …©2ÚÚ𑞪>Ï›€fò8rÂ
-oz²ÖÓ0]A[Ç"P̉Q×<f¬rUã ñã²&âû¨'G𠦽¦÷ó¢‡18m»Õ«oMPë¯iIN¡çø.‘ÃA˜¹éáT&c´ö>l ¹~R9Þë„@ÀL^ CïnÖû­°!I"ô‚ä¾€oQ9òo È-gœŽI˜
-œé°æ‘Ó6ú8]é쯂tä=Ÿº˜Ðu ÀŠ+U½+0rLñ×Lïlë/võÔ8P€D‘Ü8ó¤#·Äõ!™¼y¶ßx‚ºDָ扶0Fm#@Æl–b~5õás¸0“Š[~N K„óWhUc
-lº¸Aá‘‚ ä‡S¹È¡Ï¡Mi3Á:Óaìs£]³•àÁ`pøÎ$Ñ;p 0Æmô<¾Þý6êÈÁ÷²§céÙ« ·ÔÄV¿¢ÎQ.jÄó<Ç«‹UÚ¥‘+
-­‹°©!9Uá‘$Ài­<øµßÍ6¾éŨˆxÛÁ¬¹ÿ¤˜dç Šê~.HãcëÍç·WÝ›Ù
-¿Ô®´ºXáW–ß®?º¦¯Áÿ€åÒo>Ƕ{Ôqô³þÀÙåô#ï÷Ùº\]MVs<q±k¶¸âÓ7ë“?Oþ§“ endstream
-endobj
-1660 0 obj<</Type/Page/Parent 1367 0 R/Contents 1661 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1661 0 obj<</Filter/FlateDecode/Length 1323 >>stream
-x•VÛnÜ6}÷W ö¥.h¯õ ÈÃÚ^' Ø»®%7 Š>p%Êb-‰
-Iy³ß3¤”:ªûPlq8—3gÎðëÑ”&ø™ÒéŒæ'”VG“hB‹óóèŒg§ø{†_#)÷ÓÓI4{ë`~ ¿_&Gã›sšM(ÉãäôŒ’Œà‚/éñU!' ÍN"ºVâ©ÖVÕOtЭ!+ª +Í‹4?'y?ÓÓàçý|’짭kgtÖ¦Né:˜.h:íLg§H ¦I¡,媔”êÚ U[T*ëHçä¤u–ãR*jj¤Éµ©Èiz¥Ê„“!§øUNëH”VãrY†ËûB8r…„ßgY8— ½ŸÎC²©h­ôÑ`ѽ+eEHJå¤åBÁ‹¨¤ëÞ
-æÖÉÆ"–·i„µFeÉQpòÆß5»€/v+våöÚ<ËA
-¹ªeÔ}v æ ª¶…nËŒ2MËÛ[_÷üŽTíÿÓ&C›`µ¯#ú,©/n”̤T™·%¢¦…ÖœVÊ€L äL—¤®ÿÑŠFìT©œBahµÊÙiV
-SªÞÃ0o@ ³²Î^AÖñ¦šL%n0£J’¿àðÀ_G
-endobj
-1662 0 obj<</Type/Page/Parent 1367 0 R/Contents 1663 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1663 0 obj<</Filter/FlateDecode/Length 1622 >>stream
-x½W[OÛH~çWùeA"! 4ÐJ}
-Þ‚I„ȹs
-KØnXNª²§!³;žÐÞCj½32gk¨ƒAõAŒl” •Ó
-Š ° Þˆç–[·$‚Ó±Huâ`+† ‘§ä0ú/P®m+ÞKb¶4Ð|HP ˆ
-`¦a]ñûXÓåRgOƒ½×]¾xz3³ R$»`¥|•ˆÛj]­œWÞ <XÆÁQʶý™EjƒPì?ظ+çNŒ}SáÛí“ f‹ôdÕ{]`)À¿›½BS•æ}RTª•HKuïÅ—P `2ì«Á9w Èï¬sSs"3ˆ1õzŠËöýõx¦\91°¥ŒI‰+ðöC¡vÁq£îu,ׇ“¥Æ…Qy‡†ÀƵXÿæú~quË]¤£ƒùo©ä?…ŸdDVÒD"ñy ¬1{;àù9BµçCªF!è%ؽ#ŽßꀈSÍBklˆ·y ÕË^­äÅJ©Îx–`[õ¢é›¼ø:U•®aé’à_œ¡úþ5ظPè¼²G©+é7R Œ^¼.Û¬8N`´|Lçepab6¶žáPGÌ<ì÷f|86ZdƆ$H‚,>Ø=8‹EÄ`>Ã]®A
-LäìŠA(Œ(W"&¸p¤:#¶XÀÔ·¦»ˆe×í?ñzG_'ô±¿ÞĦBÝ¿xÝà ¤Ït~sÓï?Ÿñjw˜dÆm6›ñÖ÷QÛþ˴לj*'
-@æ}¦ï±™ìÞ;ç¼ßuìÉ*E*"mb¢+›it´bþP©×\àÀ©9€¢e Èe@5µ«Ð×3»¥Ú+Jv3Ú?`íOÜ]?KçVÜÑHåjÅàÿqh:Ãå_S°…[£ð ý}ŚϖÊâæ™b¢Ù8ÿîr¼Èñö•@°üâèöÏÂKGÉ{d$h¾ßqcƒÀ•¢ßµ K†ªŸÓ·ê®êˆ Ù”¦n%1:¿½\C¤}t—ïîÓqF Ü fJ-²‡Û+iMxÄã@~ÞølHÝkr†12äwþO’¿¬8ׅɘYÛÔ÷Htü(ö­Å)œ(Y
-endobj
-1664 0 obj<</Type/Page/Parent 1367 0 R/Contents 1665 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1665 0 obj<</Filter/FlateDecode/Length 1406 >>stream
-x…V]OãF}çWÜò[“/ô-°l…Ôݦ`Uª„„Æö8™eìIgƤüûž;3 Y/»hµû~œ{ι÷߃ ñoDçcšÌ¨l†ÙÎ.ÏñszÁ?Çøo%Õá‹ét–ßúb2eo}1;˦ýϯòƒÓOS(¯‘|vqNyEH<R^Ï[ãWÒRišÆ´TŠÎI25áCüâ7†¤µÆ:RŽVâYµKr¦‘~Å¿ m¥¨^ÈvmË#ÀÚXO£Éå ¹®\‘pt/šB|È¿ i0š £¼:~8Vò7rMQqÜíëµ5 ©Vújùá»—P«'IÕRy¡-„_mŒ}r]¯dùD/¦³1BVš¶¦ZiÙK]ÈÚ
-‡¸Ue¥s½~œô rÄUmi¬•¥Ïh¡¥ÀË€‹_ R >†½´µ(%Ý.h#ßÕ.Ùëg÷±ªÏ¨êg©SâPxHæÎ8p+Ô¤_ÈÈ*qKŦµYfmS„QeœàôÓ%
-[{ƒtÁ5¶Œ[r
-AN5J ËЄï·cAOÁ‘“V£
-v뵉“ð¥£éáøNÖPêN÷_,}rzøŠ:ýt‘ì4Ã1¡ÙdŒëçH82haÍWdôÑ”ÝneòLÛçÃK~þûg:»ÈfgcBøz4ñk7ùÁ_ÿ:Fïendstream
-endobj
-1666 0 obj<</Type/Page/Parent 1367 0 R/Contents 1667 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
-1667 0 obj<</Filter/FlateDecode/Length 1717 >>stream
-x}WïoÛ6ýž¿â `˜ Ôvì$Ž[tš®¬mÖd
-ä -Q6‰TIÉŽÿû½;Q¶ì4KÀ±Èûñîݻӓ âwB—S:›QZžœŽNéì|:šÑùüŸ§øóšò“«»“ñÇW49§»Wfs|ÈÇOOé.Lg£³Ñåˆît¨éòÅÝwœ>§É¤==œ^âôàkc©^iJ]Y*›µ§.â©…r‘FÛšÆã«ë?n?|ýçÃ×ñݧ›Csƒ}s …•kŠŒíYZhª¼+«Zg”;OŠ*ÂÆùLÎòýSNÎFS#Þl‚–hº£ärù_¥©kÄNr/Ür »ÆÖNž7Ö<ÒÂ=ÒÆÔ«]çrr£p…O0
-1&àÛÛ$gWÇÌÙ_å¹EáÝ©ö°ö¼*uj à¯ó£ MMAm%Æ®Ua2²ºÿˆQHØ_K}®€A˜ j0² úÁ{ÖÅ–‚®›
-Tã4<7Ä(u6Egh2© (·ó·PÙŽì=?…yа—*T"0~ôø°3ˆ¬ÔZ•¹Aú ÓàP<áïÎ:…m¨uyÿ‚MM™É(ð±2àBMU9_K"ßßqÜÃ~ç• éú!„¡ëÆɈø¾é‡æ)iqd&…~ln–WÒÀÍ؈šøÀmÈP6˜îuöwy**Í#9Uhü]ÓC‡„3 '¤­ÏÛ¶Lv§
-½ÖEÒµ%8¡he–«X—Ε¶®Y®HwauÏÎö‘uV
-Rñ[" -(Æš37v9ŽèýJ§\u‘™Jù²s"¹Ÿï=tN9÷.¡].Ú¦~ÛêK¿^«ºÄÛOW¸%‡
-ÑøŠ’ÌaFÈNØF/ÇÁ٠̥](ÐYõ˜–
-K1k¶±KàÌY¡f/›&4-3XW3Zl
-„œÙ¡ÊÖ
-à I«±©â‹5¼y/õÛùÿ‰F·>1WžÖfmýþù–>ð†}@jí;?ȸ§½ýŒòC<åÊ…ìæ‘öLøQfT/?_@Ǥ?¬[RöFvà} Eäy]Uàv'¤»åQÛ Õ#^ð
-WæáŸ0Å»§Z€|ØP,”Û×&mÐ
-”cdAÁX(j¿̾ÇçñÅo2ËæüŒf—s^ánß}ºzG7Þ}/èw—6%îöd,^ž¾’•ïÉ›çùl>š]L£ÚOÙ݇»“¿Nþð¾3endstream
-endobj
-1668 0 obj<</Type/Page/Parent 1367 0 R/Contents 1669 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 1070 0 R>>endobj
-1669 0 obj<</Filter/FlateDecode/Length 1576 >>stream
-xWÛnÛF}÷WLõˆiQ’%9€Ñ:møÁ®k3 ŠºVäRbBî²\ÒŠþ¾gf©í^D¡HîÜΙ3£¿ŽBàoHÓ!&Gƒ`@“é$Òx6Åõÿ*M©<ÏNƒÙkFãÙë'†á ˜¼r^ƒAûñp}t6Äñp|ŠÏ‚Âé ^ü·œÂIˆ ‡RÐp2 ¦í7~ú!::¹SR”"•ÉlJQ"ÖÅý¥uµ TžÛ¥YŽLlEkÛTç™65=õqÃ5s£ëw¤ë8xzû6ú
-›gÁÛ<….“þpŒ‚³€"íj:ó¯í\Ùuÿ¡1T/5Ŷ(”Iü[§m€}‚jœ¦ïïé >Ü\?^>üvùðôÝÞšìô»mÈ-m“'4×TV¶(kHŠJåÜÊV »3œTû*[Ðq8B9ÐõÚx8®2×lÅ5q¬K›<_÷¨À¥Zè€nR2¶Þ­èþgr6­W
-DÈe&¶U¥ã:_ãÚÕ(.ŒÙªãVŠìŠy[“œ ¨Pß4ÜÞ¼Õ”HPêŠF)"œÌ”gF³[ÚZãHÚ ‚Ö-°Œnê7–œ¥Ò:—Íy½T’9]=³YeÞÔ„Ê}#Ûà‚’ŠŒ*ð¶e¿ùII•ÞG‘{
-S\
-GUÌÕ¦¸ÐŸÁ »rèsÐr+D:Ж©{¸¹'¼‚\0qùN¡\ö™W°‚ÿ!±¿ÿ6²´IëÄr[ž×O·Ý>c™¥
-6V@Hm¦©¥eÛþÄ]ôË×ú<×ÜŽ…ßÛ¬Ö¤*3Ò Y·4®Îò\ìƒ})§³‘ CŒ µ"I²eß¾u˜¦¨(œïD* Û}•{•Êe¥S -•)±‡S[ÐsZkwȧ>óQÑN PÚV
-©/5FB…,WuSþmà mÃC7[Ú^aäøÁ‰a†ñ€² ŽˆÁƒ-ð{YÂ`”]­*.³¥=™g
-¨ŸðÄ~¢WN´]2ò–fh´Ê©Æá9“¥^›Û-}Îý“¦YœáUߥ­}ŽcO|Äv$à°/Ñf¬(ÜØ?Ég`« ò`­x‡*,ˆ­æ|éM3ß–,½ˆ¥™»¸Êxðuû7·KÍ-
-3œ¿7µÒs4×ökZÖuùþäd…¿jج€¼}ìk¶ß&K°åGQ©#†ð@à7‡¬á?|f#š †ÃÇ‹Ût_Ù¯¼~´qSà—ƒâ ˆOoOg¯ÿLOfÁätb
-endobj
-1670 0 obj<</Count 36/First 1671 0 R/Last 1920 0 R>>endobj
-1671 0 obj<</Parent 1670 0 R/Title(Table of Contents)/Dest[1370 0 R/XYZ 0 756 0]/Next 1672 0 R>>endobj
-1672 0 obj<</Parent 1670 0 R/Count -1/First 1673 0 R/Last 1673 0 R/Title(SAMBA Project Documentation)/Dest[1384 0 R/XYZ 0 786 0]/Prev 1671 0 R/Next 1674 0 R>>endobj
-1673 0 obj<</Parent 1672 0 R/Title(SAMBA Team)/Dest[1384 0 R/XYZ 0 762 0]>>endobj
-1674 0 obj<</Parent 1670 0 R/Title(Abstract)/Dest[1386 0 R/XYZ 0 786 0]/Prev 1672 0 R/Next 1675 0 R>>endobj
-1675 0 obj<</Parent 1670 0 R/Title(I. General installation)/Dest[1394 0 R/XYZ 0 786 0]/Prev 1674 0 R/Next 1676 0 R>>endobj
-1676 0 obj<</Parent 1670 0 R/Title(Introduction)/Dest[1396 0 R/XYZ 0 786 0]/Prev 1675 0 R/Next 1677 0 R>>endobj
-1677 0 obj<</Parent 1670 0 R/Count -10/First 1678 0 R/Last 1689 0 R/Title(Chapter 1. How to Install and Test SAMBA)/Dest[1400 0 R/XYZ 0 786 0]/Prev 1676 0 R/Next 1696 0 R>>endobj
-1678 0 obj<</Parent 1677 0 R/Title(1.1. Read the man pages)/Dest[1400 0 R/XYZ 0 762 0]/Next 1679 0 R>>endobj
-1679 0 obj<</Parent 1677 0 R/Title(1.2. Building the Binaries)/Dest[1400 0 R/XYZ 0 621 0]/Prev 1678 0 R/Next 1680 0 R>>endobj
-1680 0 obj<</Parent 1677 0 R/Title(1.3. The all important step)/Dest[1400 0 R/XYZ 0 216 0]/Prev 1679 0 R/Next 1681 0 R>>endobj
-1681 0 obj<</Parent 1677 0 R/Title(1.4. Create the smb configuration file.)/Dest[1402 0 R/XYZ 0 786 0]/Prev 1680 0 R/Next 1682 0 R>>endobj
-1682 0 obj<</Parent 1677 0 R/Title(1.5. Test your config file with testparm)/Dest[1402 0 R/XYZ 0 437 0]/Prev 1681 0 R/Next 1683 0 R>>endobj
-1683 0 obj<</Parent 1677 0 R/Count -2/First 1684 0 R/Last 1685 0 R/Title(1.6. Starting the smbd and nmbd)/Dest[1402 0 R/XYZ 0 309 0]/Prev 1682 0 R/Next 1686 0 R>>endobj
-1684 0 obj<</Parent 1683 0 R/Title(1.6.1. Starting from inetd.conf)/Dest[1404 0 R/XYZ 0 786 0]/Next 1685 0 R>>endobj
-1685 0 obj<</Parent 1683 0 R/Title(1.6.2. Alternative: starting it as a daemon)/Dest[1404 0 R/XYZ 0 299 0]/Prev 1684 0 R>>endobj
-1686 0 obj<</Parent 1677 0 R/Title(1.7. Try listing the shares available on your server)/Dest[1406 0 R/XYZ 0 718 0]/Prev 1683 0 R/Next 1687 0 R>>endobj
-1687 0 obj<</Parent 1677 0 R/Title(1.8. Try connecting with the unix client)/Dest[1406 0 R/XYZ 0 551 0]/Prev 1686 0 R/Next 1688 0 R>>endobj
-1688 0 obj<</Parent 1677 0 R/Title(1.9. Try connecting from a DOS, WfWg, Win9x, WinNT, Win2k, OS/2, etc... client)/Dest[1406 0 R/XYZ 0 383 0]/Prev 1687 0 R/Next 1689 0 R>>endobj
-1689 0 obj<</Parent 1677 0 R/Count -6/First 1690 0 R/Last 1695 0 R/Title(1.10. What If Things Don't Work?)/Dest[1408 0 R/XYZ 0 786 0]/Prev 1688 0 R>>endobj
-1690 0 obj<</Parent 1689 0 R/Title(1.10.1. Diagnosing Problems)/Dest[1408 0 R/XYZ 0 605 0]/Next 1691 0 R>>endobj
-1691 0 obj<</Parent 1689 0 R/Title(1.10.2. Scope IDs)/Dest[1408 0 R/XYZ 0 547 0]/Prev 1690 0 R/Next 1692 0 R>>endobj
-1692 0 obj<</Parent 1689 0 R/Title(1.10.3. Choosing the Protocol Level)/Dest[1408 0 R/XYZ 0 462 0]/Prev 1691 0 R/Next 1693 0 R>>endobj
-1693 0 obj<</Parent 1689 0 R/Title(1.10.4. Printing from UNIX to a Client PC)/Dest[1410 0 R/XYZ 0 786 0]/Prev 1692 0 R/Next 1694 0 R>>endobj
-1694 0 obj<</Parent 1689 0 R/Title(1.10.5. Locking)/Dest[1410 0 R/XYZ 0 635 0]/Prev 1693 0 R/Next 1695 0 R>>endobj
-1695 0 obj<</Parent 1689 0 R/Title(1.10.6. Mapping Usernames)/Dest[1410 0 R/XYZ 0 181 0]/Prev 1694 0 R>>endobj
-1696 0 obj<</Parent 1670 0 R/Count -11/First 1697 0 R/Last 1708 0 R/Title(Chapter 2. Improved browsing in samba)/Dest[1414 0 R/XYZ 0 786 0]/Prev 1677 0 R/Next 1709 0 R>>endobj
-1697 0 obj<</Parent 1696 0 R/Title(2.1. Overview of browsing)/Dest[1414 0 R/XYZ 0 762 0]/Next 1698 0 R>>endobj
-1698 0 obj<</Parent 1696 0 R/Title(2.2. Browsing support in samba)/Dest[1414 0 R/XYZ 0 568 0]/Prev 1697 0 R/Next 1699 0 R>>endobj
-1699 0 obj<</Parent 1696 0 R/Title(2.3. Problem resolution)/Dest[1414 0 R/XYZ 0 189 0]/Prev 1698 0 R/Next 1700 0 R>>endobj
-1700 0 obj<</Parent 1696 0 R/Count -1/First 1701 0 R/Last 1701 0 R/Title(2.4. Browsing across subnets)/Dest[1416 0 R/XYZ 0 586 0]/Prev 1699 0 R/Next 1702 0 R>>endobj
-1701 0 obj<</Parent 1700 0 R/Title(2.4.1. How does cross subnet browsing work ?)/Dest[1416 0 R/XYZ 0 326 0]>>endobj
-1702 0 obj<</Parent 1696 0 R/Title(2.5. Setting up a WINS server)/Dest[1422 0 R/XYZ 0 613 0]/Prev 1700 0 R/Next 1703 0 R>>endobj
-1703 0 obj<</Parent 1696 0 R/Title(2.6. Setting up Browsing in a WORKGROUP)/Dest[1424 0 R/XYZ 0 665 0]/Prev 1702 0 R/Next 1704 0 R>>endobj
-1704 0 obj<</Parent 1696 0 R/Title(2.7. Setting up Browsing in a DOMAIN)/Dest[1426 0 R/XYZ 0 675 0]/Prev 1703 0 R/Next 1705 0 R>>endobj
-1705 0 obj<</Parent 1696 0 R/Title(2.8. Forcing samba to be the master)/Dest[1426 0 R/XYZ 0 319 0]/Prev 1704 0 R/Next 1706 0 R>>endobj
-1706 0 obj<</Parent 1696 0 R/Title(2.9. Making samba the domain master)/Dest[1428 0 R/XYZ 0 573 0]/Prev 1705 0 R/Next 1707 0 R>>endobj
-1707 0 obj<</Parent 1696 0 R/Title(2.10. Note about broadcast addresses)/Dest[1430 0 R/XYZ 0 786 0]/Prev 1706 0 R/Next 1708 0 R>>endobj
-1708 0 obj<</Parent 1696 0 R/Title(2.11. Multiple interfaces)/Dest[1430 0 R/XYZ 0 698 0]/Prev 1707 0 R>>endobj
-1709 0 obj<</Parent 1670 0 R/Count -1/First 1710 0 R/Last 1710 0 R/Title(Chapter 3. Oplocks)/Dest[1432 0 R/XYZ 0 786 0]/Prev 1696 0 R/Next 1711 0 R>>endobj
-1710 0 obj<</Parent 1709 0 R/Title(3.1. What are oplocks?)/Dest[1432 0 R/XYZ 0 762 0]>>endobj
-1711 0 obj<</Parent 1670 0 R/Count -6/First 1712 0 R/Last 1717 0 R/Title(Chapter 4. Quick Cross Subnet Browsing / Cross Workgroup Browsing guide)/Dest[1434 0 R/XYZ 0 786 0]/Prev 1709 0 R/Next 1718 0 R>>endobj
-1712 0 obj<</Parent 1711 0 R/Title(4.1. Discussion)/Dest[1434 0 R/XYZ 0 657 0]/Next 1713 0 R>>endobj
-1713 0 obj<</Parent 1711 0 R/Title(4.2. Use of the "Remote Announce" parameter)/Dest[1434 0 R/XYZ 0 212 0]/Prev 1712 0 R/Next 1714 0 R>>endobj
-1714 0 obj<</Parent 1711 0 R/Title(4.3. Use of the "Remote Browse Sync" parameter)/Dest[1436 0 R/XYZ 0 536 0]/Prev 1713 0 R/Next 1715 0 R>>endobj
-1715 0 obj<</Parent 1711 0 R/Title(4.4. Use of WINS)/Dest[1436 0 R/XYZ 0 357 0]/Prev 1714 0 R/Next 1716 0 R>>endobj
-1716 0 obj<</Parent 1711 0 R/Title(4.5. Do NOT use more than one \(1\) protocol on MS Windows machines)/Dest[1438 0 R/XYZ 0 520 0]/Prev 1715 0 R/Next 1717 0 R>>endobj
-1717 0 obj<</Parent 1711 0 R/Title(4.6. Name Resolution Order)/Dest[1438 0 R/XYZ 0 240 0]/Prev 1716 0 R>>endobj
-1718 0 obj<</Parent 1670 0 R/Count -3/First 1719 0 R/Last 1723 0 R/Title(Chapter 5. LanMan and NT Password Encryption in Samba)/Dest[1442 0 R/XYZ 0 786 0]/Prev 1711 0 R/Next 1724 0 R>>endobj
-1719 0 obj<</Parent 1718 0 R/Title(5.1. Introduction)/Dest[1442 0 R/XYZ 0 738 0]/Next 1720 0 R>>endobj
-1720 0 obj<</Parent 1718 0 R/Count -2/First 1721 0 R/Last 1722 0 R/Title(5.2. Important Notes About Security)/Dest[1442 0 R/XYZ 0 584 0]/Prev 1719 0 R/Next 1723 0 R>>endobj
-1721 0 obj<</Parent 1720 0 R/Title(5.2.1. Advantages of SMB Encryption)/Dest[1444 0 R/XYZ 0 786 0]/Next 1722 0 R>>endobj
-1722 0 obj<</Parent 1720 0 R/Title(5.2.2. Advantages of non-encrypted passwords)/Dest[1444 0 R/XYZ 0 662 0]/Prev 1721 0 R>>endobj
-1723 0 obj<</Parent 1718 0 R/Title(5.3. The smbpasswd Command)/Dest[1444 0 R/XYZ 0 564 0]/Prev 1720 0 R>>endobj
-1724 0 obj<</Parent 1670 0 R/Title(II. Type of installation)/Dest[1448 0 R/XYZ 0 786 0]/Prev 1718 0 R/Next 1725 0 R>>endobj
-1725 0 obj<</Parent 1670 0 R/Title(Introduction)/Dest[1450 0 R/XYZ 0 786 0]/Prev 1724 0 R/Next 1726 0 R>>endobj
-1726 0 obj<</Parent 1670 0 R/Count -9/First 1727 0 R/Last 1740 0 R/Title(Chapter 6. How to Configure Samba as a NT4 Primary Domain Controller)/Dest[1452 0 R/XYZ 0 786 0]/Prev 1725 0 R/Next 1741 0 R>>endobj
-1727 0 obj<</Parent 1726 0 R/Title(6.1. Prerequisite Reading)/Dest[1452 0 R/XYZ 0 738 0]/Next 1728 0 R>>endobj
-1728 0 obj<</Parent 1726 0 R/Title(6.2. Background)/Dest[1452 0 R/XYZ 0 637 0]/Prev 1727 0 R/Next 1729 0 R>>endobj
-1729 0 obj<</Parent 1726 0 R/Title(6.3. Configuring the Samba Domain Controller)/Dest[1454 0 R/XYZ 0 771 0]/Prev 1728 0 R/Next 1730 0 R>>endobj
-1730 0 obj<</Parent 1726 0 R/Count -3/First 1731 0 R/Last 1733 0 R/Title(6.4. Creating Machine Trust Accounts and Joining Clients to the Domain)/Dest[1456 0 R/XYZ 0 665 0]/Prev 1729 0 R/Next 1734 0 R>>endobj
-1731 0 obj<</Parent 1730 0 R/Title(6.4.1. Manual Creation of Machine Trust Accounts)/Dest[1456 0 R/XYZ 0 279 0]/Next 1732 0 R>>endobj
-1732 0 obj<</Parent 1730 0 R/Title(6.4.2. "On-the-Fly" Creation of Machine Trust Accounts)/Dest[1458 0 R/XYZ 0 372 0]/Prev 1731 0 R/Next 1733 0 R>>endobj
-1733 0 obj<</Parent 1730 0 R/Title(6.4.3. Joining the Client to the Domain)/Dest[1460 0 R/XYZ 0 786 0]/Prev 1732 0 R>>endobj
-1734 0 obj<</Parent 1726 0 R/Title(6.5. Common Problems and Errors)/Dest[1460 0 R/XYZ 0 437 0]/Prev 1730 0 R/Next 1735 0 R>>endobj
-1735 0 obj<</Parent 1726 0 R/Title(6.6. System Policies and Profiles)/Dest[1462 0 R/XYZ 0 182 0]/Prev 1734 0 R/Next 1736 0 R>>endobj
-1736 0 obj<</Parent 1726 0 R/Title(6.7. What other help can I get?)/Dest[1464 0 R/XYZ 0 177 0]/Prev 1735 0 R/Next 1737 0 R>>endobj
-1737 0 obj<</Parent 1726 0 R/Count -2/First 1738 0 R/Last 1739 0 R/Title(6.8. Domain Control for Windows 9x/ME)/Dest[1470 0 R/XYZ 0 560 0]/Prev 1736 0 R/Next 1740 0 R>>endobj
-1738 0 obj<</Parent 1737 0 R/Title(6.8.1. Configuration Instructions: Network Logons)/Dest[1472 0 R/XYZ 0 573 0]/Next 1739 0 R>>endobj
-1739 0 obj<</Parent 1737 0 R/Title(6.8.2. Configuration Instructions: Setting up Roaming User Profiles)/Dest[1474 0 R/XYZ 0 786 0]/Prev 1738 0 R>>endobj
-1740 0 obj<</Parent 1726 0 R/Title(6.9. DOMAIN_CONTROL.txt : Windows NT Domain Control & Samba)/Dest[1482 0 R/XYZ 0 771 0]/Prev 1737 0 R>>endobj
-1741 0 obj<</Parent 1670 0 R/Count -5/First 1742 0 R/Last 1748 0 R/Title(Chapter 7. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain)/Dest[1486 0 R/XYZ 0 786 0]/Prev 1726 0 R/Next 1750 0 R>>endobj
-1742 0 obj<</Parent 1741 0 R/Title(7.1. Prerequisite Reading)/Dest[1486 0 R/XYZ 0 738 0]/Next 1743 0 R>>endobj
-1743 0 obj<</Parent 1741 0 R/Title(7.2. Background)/Dest[1486 0 R/XYZ 0 650 0]/Prev 1742 0 R/Next 1744 0 R>>endobj
-1744 0 obj<</Parent 1741 0 R/Count -2/First 1745 0 R/Last 1746 0 R/Title(7.3. What qualifies a Domain Controller on the network?)/Dest[1486 0 R/XYZ 0 278 0]/Prev 1743 0 R/Next 1747 0 R>>endobj
-1745 0 obj<</Parent 1744 0 R/Title(7.3.1. How does a Workstation find its domain controller?)/Dest[1488 0 R/XYZ 0 786 0]/Next 1746 0 R>>endobj
-1746 0 obj<</Parent 1744 0 R/Title(7.3.2. When is the PDC needed?)/Dest[1488 0 R/XYZ 0 662 0]/Prev 1745 0 R>>endobj
-1747 0 obj<</Parent 1741 0 R/Title(7.4. Can Samba be a Backup Domain Controller?)/Dest[1488 0 R/XYZ 0 577 0]/Prev 1744 0 R/Next 1748 0 R>>endobj
-1748 0 obj<</Parent 1741 0 R/Count -1/First 1749 0 R/Last 1749 0 R/Title(7.5. How do I set up a Samba BDC?)/Dest[1488 0 R/XYZ 0 436 0]/Prev 1747 0 R>>endobj
-1749 0 obj<</Parent 1748 0 R/Title(7.5.1. How do I replicate the smbpasswd file?)/Dest[1490 0 R/XYZ 0 673 0]>>endobj
-1750 0 obj<</Parent 1670 0 R/Count -8/First 1751 0 R/Last 1759 0 R/Title(Chapter 8. Samba as a ADS domain member)/Dest[1492 0 R/XYZ 0 786 0]/Prev 1741 0 R/Next 1760 0 R>>endobj
-1751 0 obj<</Parent 1750 0 R/Title(8.1. Installing the required packages for Debian)/Dest[1492 0 R/XYZ 0 577 0]/Next 1752 0 R>>endobj
-1752 0 obj<</Parent 1750 0 R/Title(8.2. Installing the required packages for RedHat)/Dest[1492 0 R/XYZ 0 470 0]/Prev 1751 0 R/Next 1753 0 R>>endobj
-1753 0 obj<</Parent 1750 0 R/Title(8.3. Compile Samba)/Dest[1492 0 R/XYZ 0 294 0]/Prev 1752 0 R/Next 1754 0 R>>endobj
-1754 0 obj<</Parent 1750 0 R/Title(8.4. Setup your /etc/krb5.conf)/Dest[1494 0 R/XYZ 0 609 0]/Prev 1753 0 R/Next 1755 0 R>>endobj
-1755 0 obj<</Parent 1750 0 R/Count -1/First 1756 0 R/Last 1756 0 R/Title(8.5. Create the computer account)/Dest[1494 0 R/XYZ 0 293 0]/Prev 1754 0 R/Next 1757 0 R>>endobj
-1756 0 obj<</Parent 1755 0 R/Title(8.5.1. Possible errors)/Dest[1494 0 R/XYZ 0 204 0]>>endobj
-1757 0 obj<</Parent 1750 0 R/Title(8.6. Test your server setup)/Dest[1496 0 R/XYZ 0 745 0]/Prev 1755 0 R/Next 1758 0 R>>endobj
-1758 0 obj<</Parent 1750 0 R/Title(8.7. Testing with smbclient)/Dest[1496 0 R/XYZ 0 656 0]/Prev 1757 0 R/Next 1759 0 R>>endobj
-1759 0 obj<</Parent 1750 0 R/Title(8.8. Notes)/Dest[1496 0 R/XYZ 0 581 0]/Prev 1758 0 R>>endobj
-1760 0 obj<</Parent 1670 0 R/Count -3/First 1761 0 R/Last 1763 0 R/Title(Chapter 9. Samba as a NT4 domain member)/Dest[1498 0 R/XYZ 0 786 0]/Prev 1750 0 R/Next 1764 0 R>>endobj
-1761 0 obj<</Parent 1760 0 R/Title(9.1. Joining an NT Domain with Samba 2.2)/Dest[1498 0 R/XYZ 0 762 0]/Next 1762 0 R>>endobj
-1762 0 obj<</Parent 1760 0 R/Title(9.2. Samba and Windows 2000 Domains)/Dest[1500 0 R/XYZ 0 415 0]/Prev 1761 0 R/Next 1763 0 R>>endobj
-1763 0 obj<</Parent 1760 0 R/Title(9.3. Why is this better than security = server?)/Dest[1500 0 R/XYZ 0 207 0]/Prev 1762 0 R>>endobj
-1764 0 obj<</Parent 1670 0 R/Title(III. Optional configuration)/Dest[1504 0 R/XYZ 0 786 0]/Prev 1760 0 R/Next 1765 0 R>>endobj
-1765 0 obj<</Parent 1670 0 R/Title(Introduction)/Dest[1506 0 R/XYZ 0 786 0]/Prev 1764 0 R/Next 1766 0 R>>endobj
-1766 0 obj<</Parent 1670 0 R/Count -6/First 1767 0 R/Last 1784 0 R/Title(Chapter 10. Integrating MS Windows networks with Samba)/Dest[1512 0 R/XYZ 0 786 0]/Prev 1765 0 R/Next 1785 0 R>>endobj
-1767 0 obj<</Parent 1766 0 R/Title(10.1. Agenda)/Dest[1512 0 R/XYZ 0 738 0]/Next 1768 0 R>>endobj
-1768 0 obj<</Parent 1766 0 R/Count -4/First 1769 0 R/Last 1772 0 R/Title(10.2. Name Resolution in a pure Unix/Linux world)/Dest[1512 0 R/XYZ 0 491 0]/Prev 1767 0 R/Next 1773 0 R>>endobj
-1769 0 obj<</Parent 1768 0 R/Title(10.2.1. /etc/hosts)/Dest[1512 0 R/XYZ 0 363 0]/Next 1770 0 R>>endobj
-1770 0 obj<</Parent 1768 0 R/Title(10.2.2. /etc/resolv.conf)/Dest[1514 0 R/XYZ 0 494 0]/Prev 1769 0 R/Next 1771 0 R>>endobj
-1771 0 obj<</Parent 1768 0 R/Title(10.2.3. /etc/host.conf)/Dest[1514 0 R/XYZ 0 356 0]/Prev 1770 0 R/Next 1772 0 R>>endobj
-1772 0 obj<</Parent 1768 0 R/Title(10.2.4. /etc/nsswitch.conf)/Dest[1514 0 R/XYZ 0 210 0]/Prev 1771 0 R>>endobj
-1773 0 obj<</Parent 1766 0 R/Count -5/First 1774 0 R/Last 1778 0 R/Title(10.3. Name resolution as used within MS Windows networking)/Dest[1516 0 R/XYZ 0 392 0]/Prev 1768 0 R/Next 1779 0 R>>endobj
-1774 0 obj<</Parent 1773 0 R/Title(10.3.1. The NetBIOS Name Cache)/Dest[1518 0 R/XYZ 0 319 0]/Next 1775 0 R>>endobj
-1775 0 obj<</Parent 1773 0 R/Title(10.3.2. The LMHOSTS file)/Dest[1520 0 R/XYZ 0 786 0]/Prev 1774 0 R/Next 1776 0 R>>endobj
-1776 0 obj<</Parent 1773 0 R/Title(10.3.3. HOSTS file)/Dest[1522 0 R/XYZ 0 512 0]/Prev 1775 0 R/Next 1777 0 R>>endobj
-1777 0 obj<</Parent 1773 0 R/Title(10.3.4. DNS Lookup)/Dest[1522 0 R/XYZ 0 414 0]/Prev 1776 0 R/Next 1778 0 R>>endobj
-1778 0 obj<</Parent 1773 0 R/Title(10.3.5. WINS Lookup)/Dest[1522 0 R/XYZ 0 276 0]/Prev 1777 0 R>>endobj
-1779 0 obj<</Parent 1766 0 R/Title(10.4. How browsing functions and how to deploy stable and dependable browsing using Samba)/Dest[1524 0 R/XYZ 0 723 0]/Prev 1773 0 R/Next 1780 0 R>>endobj
-1780 0 obj<</Parent 1766 0 R/Count -3/First 1781 0 R/Last 1783 0 R/Title(10.5. MS Windows security options and how to configure Samba for seemless integration)/Dest[1524 0 R/XYZ 0 179 0]/Prev 1779 0 R/Next 1784 0 R>>endobj
-1781 0 obj<</Parent 1780 0 R/Title(10.5.1. Use MS Windows NT as an authentication server)/Dest[1528 0 R/XYZ 0 786 0]/Next 1782 0 R>>endobj
-1782 0 obj<</Parent 1780 0 R/Title(10.5.2. Make Samba a member of an MS Windows NT security domain)/Dest[1528 0 R/XYZ 0 537 0]/Prev 1781 0 R/Next 1783 0 R>>endobj
-1783 0 obj<</Parent 1780 0 R/Title(10.5.3. Configure Samba as an authentication server)/Dest[1528 0 R/XYZ 0 185 0]/Prev 1782 0 R>>endobj
-1784 0 obj<</Parent 1766 0 R/Title(10.6. Conclusions)/Dest[1530 0 R/XYZ 0 316 0]/Prev 1780 0 R>>endobj
-1785 0 obj<</Parent 1670 0 R/Count -7/First 1786 0 R/Last 1794 0 R/Title(Chapter 11. UNIX Permission Bits and Windows NT Access Control Lists)/Dest[1532 0 R/XYZ 0 786 0]/Prev 1766 0 R/Next 1795 0 R>>endobj
-1786 0 obj<</Parent 1785 0 R/Title(11.1. Viewing and changing UNIX permissions using the NT security dialogs)/Dest[1532 0 R/XYZ 0 738 0]/Next 1787 0 R>>endobj
-1787 0 obj<</Parent 1785 0 R/Title(11.2. How to view file security on a Samba share)/Dest[1532 0 R/XYZ 0 550 0]/Prev 1786 0 R/Next 1788 0 R>>endobj
-1788 0 obj<</Parent 1785 0 R/Title(11.3. Viewing file ownership)/Dest[1532 0 R/XYZ 0 383 0]/Prev 1787 0 R/Next 1789 0 R>>endobj
-1789 0 obj<</Parent 1785 0 R/Count -2/First 1790 0 R/Last 1791 0 R/Title(11.4. Viewing file or directory permissions)/Dest[1534 0 R/XYZ 0 718 0]/Prev 1788 0 R/Next 1792 0 R>>endobj
-1790 0 obj<</Parent 1789 0 R/Title(11.4.1. File Permissions)/Dest[1534 0 R/XYZ 0 485 0]/Next 1791 0 R>>endobj
-1791 0 obj<</Parent 1789 0 R/Title(11.4.2. Directory Permissions)/Dest[1534 0 R/XYZ 0 241 0]/Prev 1790 0 R>>endobj
-1792 0 obj<</Parent 1785 0 R/Title(11.5. Modifying file or directory permissions)/Dest[1536 0 R/XYZ 0 745 0]/Prev 1789 0 R/Next 1793 0 R>>endobj
-1793 0 obj<</Parent 1785 0 R/Title(11.6. Interaction with the standard Samba create mask parameters)/Dest[1536 0 R/XYZ 0 313 0]/Prev 1792 0 R/Next 1794 0 R>>endobj
-1794 0 obj<</Parent 1785 0 R/Title(11.7. Interaction with the standard Samba file attribute mapping)/Dest[1540 0 R/XYZ 0 652 0]/Prev 1793 0 R>>endobj
-1795 0 obj<</Parent 1670 0 R/Count -3/First 1796 0 R/Last 1798 0 R/Title(Chapter 12. Configuring PAM for distributed but centrally managed authentication)/Dest[1542 0 R/XYZ 0 786 0]/Prev 1785 0 R/Next 1799 0 R>>endobj
-1796 0 obj<</Parent 1795 0 R/Title(12.1. Samba and PAM)/Dest[1542 0 R/XYZ 0 738 0]/Next 1797 0 R>>endobj
-1797 0 obj<</Parent 1795 0 R/Title(12.2. Distributed Authentication)/Dest[1544 0 R/XYZ 0 201 0]/Prev 1796 0 R/Next 1798 0 R>>endobj
-1798 0 obj<</Parent 1795 0 R/Title(12.3. PAM Configuration in smb.conf)/Dest[1546 0 R/XYZ 0 758 0]/Prev 1797 0 R>>endobj
-1799 0 obj<</Parent 1670 0 R/Count -1/First 1800 0 R/Last 1800 0 R/Title(Chapter 13. Hosting a Microsoft Distributed File System tree on Samba)/Dest[1548 0 R/XYZ 0 786 0]/Prev 1795 0 R/Next 1802 0 R>>endobj
-1800 0 obj<</Parent 1799 0 R/Count -1/First 1801 0 R/Last 1801 0 R/Title(13.1. Instructions)/Dest[1548 0 R/XYZ 0 738 0]>>endobj
-1801 0 obj<</Parent 1800 0 R/Title(13.1.1. Notes)/Dest[1550 0 R/XYZ 0 705 0]>>endobj
-1802 0 obj<</Parent 1670 0 R/Count -4/First 1803 0 R/Last 1815 0 R/Title(Chapter 14. Printing Support)/Dest[1552 0 R/XYZ 0 786 0]/Prev 1799 0 R/Next 1825 0 R>>endobj
-1803 0 obj<</Parent 1802 0 R/Title(14.1. Introduction)/Dest[1552 0 R/XYZ 0 762 0]/Next 1804 0 R>>endobj
-1804 0 obj<</Parent 1802 0 R/Count -5/First 1805 0 R/Last 1809 0 R/Title(14.2. Configuration)/Dest[1552 0 R/XYZ 0 370 0]/Prev 1803 0 R/Next 1810 0 R>>endobj
-1805 0 obj<</Parent 1804 0 R/Title(14.2.1. Creating [print$])/Dest[1552 0 R/XYZ 0 184 0]/Next 1806 0 R>>endobj
-1806 0 obj<</Parent 1804 0 R/Title(14.2.2. Setting Drivers for Existing Printers)/Dest[1556 0 R/XYZ 0 636 0]/Prev 1805 0 R/Next 1807 0 R>>endobj
-1807 0 obj<</Parent 1804 0 R/Title(14.2.3. Support a large number of printers)/Dest[1556 0 R/XYZ 0 221 0]/Prev 1806 0 R/Next 1808 0 R>>endobj
-1808 0 obj<</Parent 1804 0 R/Title(14.2.4. Adding New Printers via the Windows NT APW)/Dest[1558 0 R/XYZ 0 523 0]/Prev 1807 0 R/Next 1809 0 R>>endobj
-1809 0 obj<</Parent 1804 0 R/Title(14.2.5. Samba and Printer Ports)/Dest[1560 0 R/XYZ 0 350 0]/Prev 1808 0 R>>endobj
-1810 0 obj<</Parent 1802 0 R/Count -4/First 1811 0 R/Last 1814 0 R/Title(14.3. The Imprints Toolset)/Dest[1562 0 R/XYZ 0 786 0]/Prev 1804 0 R/Next 1815 0 R>>endobj
-1811 0 obj<</Parent 1810 0 R/Title(14.3.1. What is Imprints?)/Dest[1562 0 R/XYZ 0 685 0]/Next 1812 0 R>>endobj
-1812 0 obj<</Parent 1810 0 R/Title(14.3.2. Creating Printer Driver Packages)/Dest[1562 0 R/XYZ 0 560 0]/Prev 1811 0 R/Next 1813 0 R>>endobj
-1813 0 obj<</Parent 1810 0 R/Title(14.3.3. The Imprints server)/Dest[1562 0 R/XYZ 0 475 0]/Prev 1812 0 R/Next 1814 0 R>>endobj
-1814 0 obj<</Parent 1810 0 R/Title(14.3.4. The Installation Client)/Dest[1562 0 R/XYZ 0 377 0]/Prev 1813 0 R>>endobj
-1815 0 obj<</Parent 1802 0 R/Count -9/First 1816 0 R/Last 1824 0 R/Title(14.4. Diagnosis)/Dest[1564 0 R/XYZ 0 493 0]/Prev 1810 0 R>>endobj
-1816 0 obj<</Parent 1815 0 R/Title(14.4.1. Introduction)/Dest[1564 0 R/XYZ 0 472 0]/Next 1817 0 R>>endobj
-1817 0 obj<</Parent 1815 0 R/Title(14.4.2. Debugging printer problems)/Dest[1566 0 R/XYZ 0 532 0]/Prev 1816 0 R/Next 1818 0 R>>endobj
-1818 0 obj<</Parent 1815 0 R/Title(14.4.3. What printers do I have?)/Dest[1568 0 R/XYZ 0 745 0]/Prev 1817 0 R/Next 1819 0 R>>endobj
-1819 0 obj<</Parent 1815 0 R/Title(14.4.4. Setting up printcap and print servers)/Dest[1568 0 R/XYZ 0 564 0]/Prev 1818 0 R/Next 1820 0 R>>endobj
-1820 0 obj<</Parent 1815 0 R/Title(14.4.5. Job sent, no output)/Dest[1570 0 R/XYZ 0 786 0]/Prev 1819 0 R/Next 1821 0 R>>endobj
-1821 0 obj<</Parent 1815 0 R/Title(14.4.6. Job sent, strange output)/Dest[1570 0 R/XYZ 0 447 0]/Prev 1820 0 R/Next 1822 0 R>>endobj
-1822 0 obj<</Parent 1815 0 R/Title(14.4.7. Raw PostScript printed)/Dest[1572 0 R/XYZ 0 771 0]/Prev 1821 0 R/Next 1823 0 R>>endobj
-1823 0 obj<</Parent 1815 0 R/Title(14.4.8. Advanced Printing)/Dest[1572 0 R/XYZ 0 686 0]/Prev 1822 0 R/Next 1824 0 R>>endobj
-1824 0 obj<</Parent 1815 0 R/Title(14.4.9. Real debugging)/Dest[1572 0 R/XYZ 0 588 0]/Prev 1823 0 R>>endobj
-1825 0 obj<</Parent 1670 0 R/Count -2/First 1826 0 R/Last 1827 0 R/Title(Chapter 15. Security levels)/Dest[1574 0 R/XYZ 0 786 0]/Prev 1802 0 R/Next 1828 0 R>>endobj
-1826 0 obj<</Parent 1825 0 R/Title(15.1. Introduction)/Dest[1574 0 R/XYZ 0 762 0]/Next 1827 0 R>>endobj
-1827 0 obj<</Parent 1825 0 R/Title(15.2. More complete description of security levels)/Dest[1574 0 R/XYZ 0 520 0]/Prev 1826 0 R>>endobj
-1828 0 obj<</Parent 1670 0 R/Count -7/First 1829 0 R/Last 1844 0 R/Title(Chapter 16. Unified Logons between Windows NT and UNIX using Winbind)/Dest[1578 0 R/XYZ 0 786 0]/Prev 1825 0 R/Next 1845 0 R>>endobj
-1829 0 obj<</Parent 1828 0 R/Title(16.1. Abstract)/Dest[1578 0 R/XYZ 0 738 0]/Next 1830 0 R>>endobj
-1830 0 obj<</Parent 1828 0 R/Title(16.2. Introduction)/Dest[1578 0 R/XYZ 0 597 0]/Prev 1829 0 R/Next 1831 0 R>>endobj
-1831 0 obj<</Parent 1828 0 R/Count -1/First 1832 0 R/Last 1832 0 R/Title(16.3. What Winbind Provides)/Dest[1578 0 R/XYZ 0 284 0]/Prev 1830 0 R/Next 1833 0 R>>endobj
-1832 0 obj<</Parent 1831 0 R/Title(16.3.1. Target Uses)/Dest[1580 0 R/XYZ 0 613 0]>>endobj
-1833 0 obj<</Parent 1828 0 R/Count -5/First 1834 0 R/Last 1838 0 R/Title(16.4. How Winbind Works)/Dest[1580 0 R/XYZ 0 462 0]/Prev 1831 0 R/Next 1839 0 R>>endobj
-1834 0 obj<</Parent 1833 0 R/Title(16.4.1. Microsoft Remote Procedure Calls)/Dest[1580 0 R/XYZ 0 347 0]/Next 1835 0 R>>endobj
-1835 0 obj<</Parent 1833 0 R/Title(16.4.2. Name Service Switch)/Dest[1582 0 R/XYZ 0 786 0]/Prev 1834 0 R/Next 1836 0 R>>endobj
-1836 0 obj<</Parent 1833 0 R/Title(16.4.3. Pluggable Authentication Modules)/Dest[1582 0 R/XYZ 0 345 0]/Prev 1835 0 R/Next 1837 0 R>>endobj
-1837 0 obj<</Parent 1833 0 R/Title(16.4.4. User and Group ID Allocation)/Dest[1584 0 R/XYZ 0 718 0]/Prev 1836 0 R/Next 1838 0 R>>endobj
-1838 0 obj<</Parent 1833 0 R/Title(16.4.5. Result Caching)/Dest[1584 0 R/XYZ 0 541 0]/Prev 1837 0 R>>endobj
-1839 0 obj<</Parent 1828 0 R/Count -3/First 1840 0 R/Last 1842 0 R/Title(16.5. Installation and Configuration)/Dest[1584 0 R/XYZ 0 403 0]/Prev 1833 0 R/Next 1843 0 R>>endobj
-1840 0 obj<</Parent 1839 0 R/Title(16.5.1. Introduction)/Dest[1584 0 R/XYZ 0 262 0]/Next 1841 0 R>>endobj
-1841 0 obj<</Parent 1839 0 R/Title(16.5.2. Requirements)/Dest[1586 0 R/XYZ 0 652 0]/Prev 1840 0 R/Next 1842 0 R>>endobj
-1842 0 obj<</Parent 1839 0 R/Title(16.5.3. Testing Things Out)/Dest[1586 0 R/XYZ 0 383 0]/Prev 1841 0 R>>endobj
-1843 0 obj<</Parent 1828 0 R/Title(16.6. Limitations)/Dest[1600 0 R/XYZ 0 349 0]/Prev 1839 0 R/Next 1844 0 R>>endobj
-1844 0 obj<</Parent 1828 0 R/Title(16.7. Conclusion)/Dest[1602 0 R/XYZ 0 786 0]/Prev 1843 0 R>>endobj
-1845 0 obj<</Parent 1670 0 R/Count -4/First 1846 0 R/Last 1849 0 R/Title(Chapter 17. Passdb MySQL plugin)/Dest[1604 0 R/XYZ 0 786 0]/Prev 1828 0 R/Next 1850 0 R>>endobj
-1846 0 obj<</Parent 1845 0 R/Title(17.1. Building)/Dest[1604 0 R/XYZ 0 762 0]/Next 1847 0 R>>endobj
-1847 0 obj<</Parent 1845 0 R/Title(17.2. Configuring)/Dest[1604 0 R/XYZ 0 647 0]/Prev 1846 0 R/Next 1848 0 R>>endobj
-1848 0 obj<</Parent 1845 0 R/Title(17.3. Using plaintext passwords or encrypted password)/Dest[1606 0 R/XYZ 0 621 0]/Prev 1847 0 R/Next 1849 0 R>>endobj
-1849 0 obj<</Parent 1845 0 R/Title(17.4. Getting non-column data from the table)/Dest[1606 0 R/XYZ 0 467 0]/Prev 1848 0 R>>endobj
-1850 0 obj<</Parent 1670 0 R/Count -2/First 1851 0 R/Last 1852 0 R/Title(Chapter 18. Passdb XML plugin)/Dest[1608 0 R/XYZ 0 786 0]/Prev 1845 0 R/Next 1853 0 R>>endobj
-1851 0 obj<</Parent 1850 0 R/Title(18.1. Building)/Dest[1608 0 R/XYZ 0 762 0]/Next 1852 0 R>>endobj
-1852 0 obj<</Parent 1850 0 R/Title(18.2. Usage)/Dest[1608 0 R/XYZ 0 661 0]/Prev 1851 0 R>>endobj
-1853 0 obj<</Parent 1670 0 R/Count -10/First 1854 0 R/Last 1865 0 R/Title(Chapter 19. Storing Samba's User/Machine Account information in an LDAP Directory)/Dest[1610 0 R/XYZ 0 786 0]/Prev 1850 0 R/Next 1866 0 R>>endobj
-1854 0 obj<</Parent 1853 0 R/Title(19.1. Purpose)/Dest[1610 0 R/XYZ 0 738 0]/Next 1855 0 R>>endobj
-1855 0 obj<</Parent 1853 0 R/Title(19.2. Introduction)/Dest[1610 0 R/XYZ 0 465 0]/Prev 1854 0 R/Next 1856 0 R>>endobj
-1856 0 obj<</Parent 1853 0 R/Title(19.3. Supported LDAP Servers)/Dest[1612 0 R/XYZ 0 626 0]/Prev 1855 0 R/Next 1857 0 R>>endobj
-1857 0 obj<</Parent 1853 0 R/Title(19.4. Schema and Relationship to the RFC 2307 posixAccount)/Dest[1612 0 R/XYZ 0 524 0]/Prev 1856 0 R/Next 1858 0 R>>endobj
-1858 0 obj<</Parent 1853 0 R/Count -2/First 1859 0 R/Last 1860 0 R/Title(19.5. Configuring Samba with LDAP)/Dest[1614 0 R/XYZ 0 786 0]/Prev 1857 0 R/Next 1861 0 R>>endobj
-1859 0 obj<</Parent 1858 0 R/Title(19.5.1. OpenLDAP configuration)/Dest[1614 0 R/XYZ 0 766 0]/Next 1860 0 R>>endobj
-1860 0 obj<</Parent 1858 0 R/Title(19.5.2. Configuring Samba)/Dest[1614 0 R/XYZ 0 196 0]/Prev 1859 0 R>>endobj
-1861 0 obj<</Parent 1853 0 R/Title(19.6. Accounts and Groups management)/Dest[1616 0 R/XYZ 0 296 0]/Prev 1858 0 R/Next 1862 0 R>>endobj
-1862 0 obj<</Parent 1853 0 R/Title(19.7. Security and sambaAccount)/Dest[1618 0 R/XYZ 0 771 0]/Prev 1861 0 R/Next 1863 0 R>>endobj
-1863 0 obj<</Parent 1853 0 R/Title(19.8. LDAP specials attributes for sambaAccounts)/Dest[1618 0 R/XYZ 0 389 0]/Prev 1862 0 R/Next 1864 0 R>>endobj
-1864 0 obj<</Parent 1853 0 R/Title(19.9. Example LDIF Entries for a sambaAccount)/Dest[1620 0 R/XYZ 0 375 0]/Prev 1863 0 R/Next 1865 0 R>>endobj
-1865 0 obj<</Parent 1853 0 R/Title(19.10. Comments)/Dest[1622 0 R/XYZ 0 544 0]/Prev 1864 0 R>>endobj
-1866 0 obj<</Parent 1670 0 R/Count -2/First 1867 0 R/Last 1868 0 R/Title(Chapter 20. HOWTO Access Samba source code via CVS)/Dest[1624 0 R/XYZ 0 786 0]/Prev 1853 0 R/Next 1871 0 R>>endobj
-1867 0 obj<</Parent 1866 0 R/Title(20.1. Introduction)/Dest[1624 0 R/XYZ 0 738 0]/Next 1868 0 R>>endobj
-1868 0 obj<</Parent 1866 0 R/Count -2/First 1869 0 R/Last 1870 0 R/Title(20.2. CVS Access to samba.org)/Dest[1624 0 R/XYZ 0 610 0]/Prev 1867 0 R>>endobj
-1869 0 obj<</Parent 1868 0 R/Title(20.2.1. Access via CVSweb)/Dest[1624 0 R/XYZ 0 522 0]/Next 1870 0 R>>endobj
-1870 0 obj<</Parent 1868 0 R/Title(20.2.2. Access via cvs)/Dest[1624 0 R/XYZ 0 411 0]/Prev 1869 0 R>>endobj
-1871 0 obj<</Parent 1670 0 R/Title(Chapter 21. Group mapping HOWTO)/Dest[1628 0 R/XYZ 0 786 0]/Prev 1866 0 R/Next 1872 0 R>>endobj
-1872 0 obj<</Parent 1670 0 R/Count -17/First 1873 0 R/Last 1892 0 R/Title(Chapter 22. Samba performance issues)/Dest[1630 0 R/XYZ 0 786 0]/Prev 1871 0 R/Next 1893 0 R>>endobj
-1873 0 obj<</Parent 1872 0 R/Title(22.1. Comparisons)/Dest[1630 0 R/XYZ 0 762 0]/Next 1874 0 R>>endobj
-1874 0 obj<</Parent 1872 0 R/Count -3/First 1875 0 R/Last 1877 0 R/Title(22.2. Oplocks)/Dest[1630 0 R/XYZ 0 502 0]/Prev 1873 0 R/Next 1878 0 R>>endobj
-1875 0 obj<</Parent 1874 0 R/Title(22.2.1. Overview)/Dest[1630 0 R/XYZ 0 482 0]/Next 1876 0 R>>endobj
-1876 0 obj<</Parent 1874 0 R/Title(22.2.2. Level2 Oplocks)/Dest[1630 0 R/XYZ 0 199 0]/Prev 1875 0 R/Next 1877 0 R>>endobj
-1877 0 obj<</Parent 1874 0 R/Title(22.2.3. Old 'fake oplocks' option - deprecated)/Dest[1632 0 R/XYZ 0 705 0]/Prev 1876 0 R>>endobj
-1878 0 obj<</Parent 1872 0 R/Title(22.3. Socket options)/Dest[1632 0 R/XYZ 0 567 0]/Prev 1874 0 R/Next 1879 0 R>>endobj
-1879 0 obj<</Parent 1872 0 R/Title(22.4. Read size)/Dest[1632 0 R/XYZ 0 307 0]/Prev 1878 0 R/Next 1880 0 R>>endobj
-1880 0 obj<</Parent 1872 0 R/Title(22.5. Max xmit)/Dest[1634 0 R/XYZ 0 771 0]/Prev 1879 0 R/Next 1881 0 R>>endobj
-1881 0 obj<</Parent 1872 0 R/Title(22.6. Locking)/Dest[1634 0 R/XYZ 0 590 0]/Prev 1880 0 R/Next 1882 0 R>>endobj
-1882 0 obj<</Parent 1872 0 R/Title(22.7. Share modes)/Dest[1634 0 R/XYZ 0 462 0]/Prev 1881 0 R/Next 1883 0 R>>endobj
-1883 0 obj<</Parent 1872 0 R/Title(22.8. Log level)/Dest[1634 0 R/XYZ 0 242 0]/Prev 1882 0 R/Next 1884 0 R>>endobj
-1884 0 obj<</Parent 1872 0 R/Title(22.9. Wide lines)/Dest[1636 0 R/XYZ 0 786 0]/Prev 1883 0 R/Next 1885 0 R>>endobj
-1885 0 obj<</Parent 1872 0 R/Title(22.10. Read raw)/Dest[1636 0 R/XYZ 0 698 0]/Prev 1884 0 R/Next 1886 0 R>>endobj
-1886 0 obj<</Parent 1872 0 R/Title(22.11. Write raw)/Dest[1636 0 R/XYZ 0 530 0]/Prev 1885 0 R/Next 1887 0 R>>endobj
-1887 0 obj<</Parent 1872 0 R/Title(22.12. Read prediction)/Dest[1636 0 R/XYZ 0 402 0]/Prev 1886 0 R/Next 1888 0 R>>endobj
-1888 0 obj<</Parent 1872 0 R/Title(22.13. Memory mapping)/Dest[1636 0 R/XYZ 0 182 0]/Prev 1887 0 R/Next 1889 0 R>>endobj
-1889 0 obj<</Parent 1872 0 R/Title(22.14. Slow Clients)/Dest[1638 0 R/XYZ 0 692 0]/Prev 1888 0 R/Next 1890 0 R>>endobj
-1890 0 obj<</Parent 1872 0 R/Title(22.15. Slow Logins)/Dest[1638 0 R/XYZ 0 564 0]/Prev 1889 0 R/Next 1891 0 R>>endobj
-1891 0 obj<</Parent 1872 0 R/Title(22.16. Client tuning)/Dest[1638 0 R/XYZ 0 489 0]/Prev 1890 0 R/Next 1892 0 R>>endobj
-1892 0 obj<</Parent 1872 0 R/Title(22.17. My Results)/Dest[1640 0 R/XYZ 0 441 0]/Prev 1891 0 R>>endobj
-1893 0 obj<</Parent 1670 0 R/Title(IV. Appendixes)/Dest[1642 0 R/XYZ 0 786 0]/Prev 1872 0 R/Next 1894 0 R>>endobj
-1894 0 obj<</Parent 1670 0 R/Count -4/First 1895 0 R/Last 1898 0 R/Title(Chapter 23. Portability)/Dest[1644 0 R/XYZ 0 786 0]/Prev 1893 0 R/Next 1899 0 R>>endobj
-1895 0 obj<</Parent 1894 0 R/Title(23.1. HPUX)/Dest[1644 0 R/XYZ 0 707 0]/Next 1896 0 R>>endobj
-1896 0 obj<</Parent 1894 0 R/Title(23.2. SCO Unix)/Dest[1644 0 R/XYZ 0 461 0]/Prev 1895 0 R/Next 1897 0 R>>endobj
-1897 0 obj<</Parent 1894 0 R/Title(23.3. DNIX)/Dest[1644 0 R/XYZ 0 346 0]/Prev 1896 0 R/Next 1898 0 R>>endobj
-1898 0 obj<</Parent 1894 0 R/Title(23.4. RedHat Linux Rembrandt-II)/Dest[1646 0 R/XYZ 0 280 0]/Prev 1897 0 R>>endobj
-1899 0 obj<</Parent 1670 0 R/Count -5/First 1900 0 R/Last 1912 0 R/Title(Chapter 24. Samba and other CIFS clients)/Dest[1648 0 R/XYZ 0 786 0]/Prev 1894 0 R/Next 1913 0 R>>endobj
-1900 0 obj<</Parent 1899 0 R/Title(24.1. Macintosh clients?)/Dest[1648 0 R/XYZ 0 721 0]/Next 1901 0 R>>endobj
-1901 0 obj<</Parent 1899 0 R/Count -4/First 1902 0 R/Last 1905 0 R/Title(24.2. OS2 Client)/Dest[1648 0 R/XYZ 0 513 0]/Prev 1900 0 R/Next 1906 0 R>>endobj
-1902 0 obj<</Parent 1901 0 R/Title(24.2.1. How can I configure OS/2 Warp Connect or OS/2 Warp 4 as a client for Samba?)/Dest[1648 0 R/XYZ 0 493 0]/Next 1903 0 R>>endobj
-1903 0 obj<</Parent 1901 0 R/Title(24.2.2. How can I configure OS/2 Warp 3 \(not Connect\), OS/2 1.2, 1.3 or 2.x for Samba?)/Dest[1650 0 R/XYZ 0 786 0]/Prev 1902 0 R/Next 1904 0 R>>endobj
-1904 0 obj<</Parent 1901 0 R/Title(24.2.3. Are there any other issues when OS/2 \(any version\) is used as a client?)/Dest[1650 0 R/XYZ 0 575 0]/Prev 1903 0 R/Next 1905 0 R>>endobj
-1905 0 obj<</Parent 1901 0 R/Title(24.2.4. How do I get printer driver download working for OS/2 clients?)/Dest[1650 0 R/XYZ 0 461 0]/Prev 1904 0 R>>endobj
-1906 0 obj<</Parent 1899 0 R/Count -4/First 1907 0 R/Last 1910 0 R/Title(24.3. Windows for Workgroups)/Dest[1650 0 R/XYZ 0 204 0]/Prev 1901 0 R/Next 1911 0 R>>endobj
-1907 0 obj<</Parent 1906 0 R/Title(24.3.1. Use latest TCP/IP stack from Microsoft)/Dest[1650 0 R/XYZ 0 184 0]/Next 1908 0 R>>endobj
-1908 0 obj<</Parent 1906 0 R/Title(24.3.2. Delete .pwl files after password change)/Dest[1652 0 R/XYZ 0 679 0]/Prev 1907 0 R/Next 1909 0 R>>endobj
-1909 0 obj<</Parent 1906 0 R/Title(24.3.3. Configure WfW password handling)/Dest[1652 0 R/XYZ 0 528 0]/Prev 1908 0 R/Next 1910 0 R>>endobj
-1910 0 obj<</Parent 1906 0 R/Title(24.3.4. Case handling of passwords)/Dest[1652 0 R/XYZ 0 430 0]/Prev 1909 0 R>>endobj
-1911 0 obj<</Parent 1899 0 R/Title(24.4. Windows '95/'98)/Dest[1652 0 R/XYZ 0 345 0]/Prev 1906 0 R/Next 1912 0 R>>endobj
-1912 0 obj<</Parent 1899 0 R/Title(24.5. Windows 2000 Service Pack 2)/Dest[1654 0 R/XYZ 0 771 0]/Prev 1911 0 R>>endobj
-1913 0 obj<</Parent 1670 0 R/Count -6/First 1914 0 R/Last 1919 0 R/Title(Chapter 25. Reporting Bugs)/Dest[1656 0 R/XYZ 0 786 0]/Prev 1899 0 R/Next 1920 0 R>>endobj
-1914 0 obj<</Parent 1913 0 R/Title(25.1. Introduction)/Dest[1656 0 R/XYZ 0 762 0]/Next 1915 0 R>>endobj
-1915 0 obj<</Parent 1913 0 R/Title(25.2. General info)/Dest[1656 0 R/XYZ 0 476 0]/Prev 1914 0 R/Next 1916 0 R>>endobj
-1916 0 obj<</Parent 1913 0 R/Title(25.3. Debug levels)/Dest[1656 0 R/XYZ 0 335 0]/Prev 1915 0 R/Next 1917 0 R>>endobj
-1917 0 obj<</Parent 1913 0 R/Title(25.4. Internal errors)/Dest[1658 0 R/XYZ 0 665 0]/Prev 1916 0 R/Next 1918 0 R>>endobj
-1918 0 obj<</Parent 1913 0 R/Title(25.5. Attaching to a running process)/Dest[1658 0 R/XYZ 0 313 0]/Prev 1917 0 R/Next 1919 0 R>>endobj
-1919 0 obj<</Parent 1913 0 R/Title(25.6. Patches)/Dest[1658 0 R/XYZ 0 211 0]/Prev 1918 0 R>>endobj
-1920 0 obj<</Parent 1670 0 R/Count -4/First 1921 0 R/Last 1935 0 R/Title(Chapter 26. Diagnosing your samba server)/Dest[1660 0 R/XYZ 0 786 0]/Prev 1913 0 R>>endobj
-1921 0 obj<</Parent 1920 0 R/Title(26.1. Introduction)/Dest[1660 0 R/XYZ 0 762 0]/Next 1922 0 R>>endobj
-1922 0 obj<</Parent 1920 0 R/Title(26.2. Assumptions)/Dest[1660 0 R/XYZ 0 581 0]/Prev 1921 0 R/Next 1923 0 R>>endobj
-1923 0 obj<</Parent 1920 0 R/Count -11/First 1924 0 R/Last 1934 0 R/Title(26.3. Tests)/Dest[1660 0 R/XYZ 0 252 0]/Prev 1922 0 R/Next 1935 0 R>>endobj
-1924 0 obj<</Parent 1923 0 R/Title(26.3.1. Test 1)/Dest[1660 0 R/XYZ 0 231 0]/Next 1925 0 R>>endobj
-1925 0 obj<</Parent 1923 0 R/Title(26.3.2. Test 2)/Dest[1662 0 R/XYZ 0 786 0]/Prev 1924 0 R/Next 1926 0 R>>endobj
-1926 0 obj<</Parent 1923 0 R/Title(26.3.3. Test 3)/Dest[1662 0 R/XYZ 0 583 0]/Prev 1925 0 R/Next 1927 0 R>>endobj
-1927 0 obj<</Parent 1923 0 R/Title(26.3.4. Test 4)/Dest[1664 0 R/XYZ 0 679 0]/Prev 1926 0 R/Next 1928 0 R>>endobj
-1928 0 obj<</Parent 1923 0 R/Title(26.3.5. Test 5)/Dest[1664 0 R/XYZ 0 528 0]/Prev 1927 0 R/Next 1929 0 R>>endobj
-1929 0 obj<</Parent 1923 0 R/Title(26.3.6. Test 6)/Dest[1664 0 R/XYZ 0 403 0]/Prev 1928 0 R/Next 1930 0 R>>endobj
-1930 0 obj<</Parent 1923 0 R/Title(26.3.7. Test 7)/Dest[1666 0 R/XYZ 0 786 0]/Prev 1929 0 R/Next 1931 0 R>>endobj
-1931 0 obj<</Parent 1923 0 R/Title(26.3.8. Test 8)/Dest[1666 0 R/XYZ 0 424 0]/Prev 1930 0 R/Next 1932 0 R>>endobj
-1932 0 obj<</Parent 1923 0 R/Title(26.3.9. Test 9)/Dest[1668 0 R/XYZ 0 758 0]/Prev 1931 0 R/Next 1933 0 R>>endobj
-1933 0 obj<</Parent 1923 0 R/Title(26.3.10. Test 10)/Dest[1668 0 R/XYZ 0 567 0]/Prev 1932 0 R/Next 1934 0 R>>endobj
-1934 0 obj<</Parent 1923 0 R/Title(26.3.11. Test 11)/Dest[1668 0 R/XYZ 0 430 0]/Prev 1933 0 R>>endobj
-1935 0 obj<</Parent 1920 0 R/Title(26.4. Still having troubles?)/Dest[1668 0 R/XYZ 0 292 0]/Prev 1923 0 R>>endobj
-1936 0 obj<</Type/Catalog/Pages 1367 0 R/PageLayout/SinglePage/Outlines 1670 0 R/OpenAction[1384 0 R/XYZ null null 0]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</S/r>>8<</S/D/St 1/P()>>9<</S/D/St 2/P()>>13<</S/D/St 6/P()>>14<</S/D/St 7/P()>>16<</S/D/St 9/P()>>23<</S/D/St 16/P()>>32<</S/D/St 25/P()>>33<</S/D/St 26/P()>>37<</S/D/St 30/P()>>40<</S/D/St 33/P()>>41<</S/D/St 34/P()>>42<</S/D/St 35/P()>>59<</S/D/St 52/P()>>62<</S/D/St 55/P()>>65<</S/D/St 58/P()>>68<</S/D/St 61/P()>>69<</S/D/St 62/P()>>72<</S/D/St 65/P()>>82<</S/D/St 75/P()>>87<</S/D/St 80/P()>>90<</S/D/St 83/P()>>92<</S/D/St 85/P()>>103<</S/D/St 96/P()>>105<</S/D/St 98/P()>>118<</S/D/St 111/P()>>120<</S/D/St 113/P()>>121<</S/D/St 114/P()>>128<</S/D/St 121/P()>>130<</S/D/St 123/P()>>131<</S/D/St 124/P()>>137<</S/D/St 130/P()>>138<</S/D/St 131/P()>>140<</S/D/St 133/P()>>144<</S/D/St 137/P()>>146<</S/D/St 139/P()>>]>>>>endobj
+¸+JbÌ%7K®½ôÛ{†\I¶(
+C‚vÉáÌœ9s†þvÔ¡3üuhØ¥Þ€²üè,9£AoŒïþhˆï.>¥¤/`ëîëÃoGq2¦óÑ QNçã¤W?hš†cúƒŒsê ±xé|” ëÇœF]Xï×Ø{¿ßI0ëàäNý´;²×áýo#ëž÷`ÐëñQ9õ‡Ýä¼~Úš!¸ò¹œµoÆÔ=£Ù †#šÍC‚x“LEž
+fNÖ¯dIW“›)eZIãÝéì+lûÔéDÛVw”ta}2[)GÙJ™5^(ƒÁªå
+™©…ÊH™…-sá•5I<jLa}T¯Ÿôù¨[‘)ã­[mþò£×!ÒÆÖ¿¤Kh¶ªJ—nÈØ5­Ä‹$C¾
+ΩMSY¾pTBk9§_/>]S‹œ”|쵺ƒèw¶’òÒyRžÄ’ðô¨Ìܮϛ»ßw³€Ž 8!!ä›H*UZù )ç*ŽëÂð#¯rIvAëRye–ÍÚk§ ᬅ#á Q:@Cä,épb2ü<#oã;ªŠ¹ð.H¼¥Eª‘.hQJIˆÔh+æx²yp¾Åf-Ó¿NᜧŽå.qdCù
+%°t”JihYJáõ†¤Y “Éy3¤Kt‡À'­–­…úe2]Íåüé4”÷¸Ä0
+H¡ˆã:kPŸÃDæ6«v&¡©àÛ‡Ù4¹þ|ÝäëFöÌŹÿãÕCzPkÄû‹‡i#xÜmmpK°L`vw= D¼ÿtýaGDÄvüPZo3«Ý1 <’ã8y wxá&µt|U•%”Õ(xS6±Ø egÓÃûÄ>²+Lë¥$Så©,cØ˜Ï ŠŒN¸#ÔW è6ŠÄh«ˆÁßaÍÀ;fuœ(<eùtÂ*^ Øa‚–¤-t´JA²(>,·¶ˆ³U $h€y=[ñ¢”Î…Ä>Üaí¢7ÀÄ¢ÉLß+çM–êxÇÄÉô8¹›†){~+ Á „|Ì$ằÄ}¸¹Â¥¯Ì•±Ú.7û›ËV®x¾™ |GÈî›AOíþÖ…ëû_WöbÉ1§PÒ%È8~H·$ ŠæÁò“Vïs©C7.of31u1&@‘‚'¡8í›Ñþ2>¿F!»Ÿßàù¿ŽÁy7êu§¸{=;úóèZõ dendstream
+endobj
+1400 0 obj<</Type/Page/Parent 1119 0 R/Contents 1401 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F2 5 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 810 0 R>>endobj
+1401 0 obj<</Filter/FlateDecode/Length 1640 >>stream
+x­WÛnÛF}×W üR–"u±À(ìDnÄŠk©1Šº(VäJbBrY.iE/ýöžÙ]Z²£}h0¼ìÎœ9sffõW'¤>þ†tÑ`LqÞé‹>Þ<_îâ74ŽÆ¸æ ÏDäŸ2šw¢ñDŒŸ¿Çcqvðµ/&Øj/Õš Óhp.BNÎp?ã¶R´ê„ý·£~àç<#ÿÄ~ö€ì·4<ï‹so)‚5gh8ÄaÄNrŒÎÄÀ?yC48¾ßÆÈÂÁ^²g{W‹Np}Ná+P5žà&± õiŸþ¬·Ë‚n(ÖÅ*]7
+’T4µÙ¨,ë’JÒÚ‘fŠïóô&ìËJëú(Ú$­]íH¯ì›²%R)«:µXسLû=K eÞºtô霳Šá ¢^4ü
+éèOÔ¿0ªnJ¡¾©Ö?ªá•¥…ª·_²0;óŸV?%I»v/‘žG5@8TKví ™–R–LËäeft—]üP{š9!qÖ$*¡Ù4ê£$Uú)-U,9à©X6ëõNв=·´îÓ ½Íæ‡&Xx´—ZœàÙʬl–6QÀ,èêkP$© ,`%áxßao€0™ÇKDï¸Ê¹ä[`32´Ý¨Â©ýñ”?"…=¾að¹5‘ãáµB{`#L]¢±v6]Ðç›éWm[z'×,9–Ê]•¢Æ\¡Ð½2º©bEW•ÞUt©Ðd‹šðÈ`È°Ò!#Ò:ZÊ…~ÐåÎKYÇT:ü·š3Ü;ìµe‡!?nû6EEÁn›á#×(I™¬Á¢§‹ëâFÍÕ$!‹É2§›¡c㽬ô2S¹é’i€ì–•âXÓbM™Æeª
+™ûäùÖË/(IF2“J®×ÜFËêz€&ÊL‚Ï9W<÷~}Èçë"áüÝÐZ¡¼9KˆÏk:ÑÛ"Ó2!V}î‘Næ5e\§•©»W
+t5³aà1:pÿ~w3[¼¿ÿü`J[.°Ÿ%=¬N$X˜厕å;²‡Ã §hA3 ˼ÿˆ)Ž\L/ÿ´|ÊS“©}fB$dA[åÚ”
+¨@Z«Z]¥ë´ÙsK°Ž»VÇ<¯bF úŽ¡’#-\V#–ÙU«¼U3 ¶Bo|gгEKûŠÙ³\[~|R¬R  à¦kÑWdò%D±²PA<H^—Ð*ZS¹,é‚á×Ñ~N†íXó’s ÚAzzÒºò#‚Ã'Sª8]¥®à^Z<m¥{d§Kìžcc]·Ãd§}ëÅÊ$ñvò§Ñ®B½¬t–¡[ø13ÚGÓ’‰þr¸åÂòprðêDœ$ê)E°Í“ïÐ*±oéç;ú(Q™P£tÃ|zÿaº/¿x´­÷öÔ±‘O
+ªËê”ëßy‡ eY‚:K(öVV‘ºÈvžl7;¬|¢Øë™=¨k©vâ‘5ÔVbìk·/b»Ü«#¢mȸnPŸ»—ë½ò—;AX,®öÉßðØç ÂU"Ÿdš¹rþäŽFA«ÇÅâ‘vypZ“ÜkX€0c™âoÒ¼4nõIÂè(ô¶å1Íø ŠVÜƶ›½öÐðQä8P±¥œí[%N“|¨í †®ZÒd²+Ûsך¼=Žž{ƒ>Ný¿¿â4Àãµ¼xwÜÜ¡Éø«ëÛÏçÑ—*„7wˆåÍ íUÏQJp¸{"dÂc¥-`WÉ
+„â2´A§Ï4¦ ¦0Æ31ñ¥Žñ£d2À!?Æ#q~y{u‰Ù®y:Ñ{79ŽÒö°Êqá¼î¶ôÎú8&ÿßï7Üìøò¯¬Q„DÁA8°ãé¢óKç¾p,Jendstream
+endobj
+1402 0 obj<</Type/Page/Parent 1119 0 R/Contents 1403 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 813 0 R>>endobj
+1403 0 obj<</Filter/FlateDecode/Length 1639 >>stream
+x•W[oÚH~ϯ8êK©Ìý’Jû
+éz»÷–žëÈèKn€ô˜Û{­_Ü2¼³©ÌÕµ¬¨1÷x?)m`¦îKnÅ“›²Æê´¨Vì(ñ”1ÃLÇLlN±ƒ˜=F%÷¸Ji×ü¬‚;•S<¥«Q.à:¯
+øF³c¤ªPa#¶ äé ¸\Û ß—Æõj"-V´ÌqµÙ®u¶Õ0ÊÄ}¦d…aIÙ­>þ72ìP¿×+vìÅõÃÍ5aòüâ6k?w =wC«R >h^ýÏE±Ûzý^»„e§Ëú&Ë‹?/þ¦xendstream
+endobj
+1404 0 obj<</Type/Page/Parent 1119 0 R/Contents 1405 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F6 9 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 816 0 R>>endobj
+1405 0 obj<</Filter/FlateDecode/Length 1210 >>stream
+x…V]Sã6}ϯ¸³/ 3àÄ&_ì ,-3» Ûd¦M[ÁZlɵl(ýõ=W’xËB†€eݯsÏ=Ò߃˜ÆøÄ4OètFi9Gc¬¾~ÿu0IâhFÓ©¤É|-ÂSAkì_,°¿ûªïؘ&É4Ši²˜ãÿÙ<šS-iß÷ö&“Itö&Øï¶^l£«3Šç´Ù#ÁÙ"¦MæòÓ&þ¡tf-%cd»–õƒJ%ÝŠôž’£Íw˜N(†›ž$s¤¿É†›\µÀ¯•² ­Í“Щ´ô¨šœ^{½M"ºÑ’Ìžs•ædtñD¢ª¤¨aKM­UúŽ­E¹áâÓ(ápYÉšC¹± ¶â¡ªÍ^‡Õ~0J %ucIixìÞf¦JG´É•%am[²u.“xµ¸”å±v“KòŽi×6î)ì
+Y¢à¢ BÝKÔdÒ´­IíI5ìP›&
+>“Y4áb®5™:ó儵Ø6‚vßpõ³Â¶CÜ“©Ð€Æ‡èvu¹=:þ_ËàåâAú¾NC_‡¤iA¶­*S7tŽ´ý–®õCY&3N‰`àÉæÜßÎÜ ' ¦¤Úˆ’“éjŠèšÑ ¨åqgjgÝõÊ“ñ6 ô§¦¬
+´ÄΠ\üNºÂÑÎM8ôœ£ž¶Ã¥_\I­d¶=êE:£´–¢‘T¶E£*xJM¥P ºŽ&M™²÷p´ºù²¼þ1û0Óñ1½^HŽI6iEÛ£s„„€†-wQjô~;œþºš*q8MM¥˜™l„*™Á
+ËáJÁtW˜(z<ïÔµ,¤àÞVµBš
+½°(µPÿÂÄ‹k¦ö{œC
+&;œ²Õèê-UõoŸõ0eA«½ÄY à8Aßµ
+öèjöâ’l¾Þl>ÑG\3©3ƒÎ»ϱ/n ›n1¬Na¬ÑOÓò ÀI© ¢ån<(+wp ëÚ:ºZ„bܱƋSšLÁõÙ”õÆ‘’nkó
+endobj
+1406 0 obj<</Type/Page/Parent 1119 0 R/Contents 1407 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 825 0 R>>endobj
+1407 0 obj<</Filter/FlateDecode/Length 1680 >>stream
+xuWïoÛ6ýî¿âP`X
+$òoÇ)Pl+ºnöak ú…–ÎJÔH*Žÿû½#%ÇUR´‘-éx|w÷îýßdN3ü›Óí‚–ÊëÉ,›áÉùòéÉby—mi3_g ªi¹ØdËþÎÐçÉz•­h3[d3¼œo7bïäåö.[Ój¶J/ï¶X™îä%6¡åÝ
+^WÛ[|Žé0™Ï—ò
+^Vâs}‹eénX¶X‹ÅhÙ,Ûn|¸¸R í:›÷–Ë5ÅÞíÆqÂzúáŽ3ÚÍí–vEÌžäWŸ¸µ.覤w]é_ï¾MÄz~›¬o–Å®¸úØg‹.Ú6ÉhEóyo´¸Í6b´«˜¸VÚ*
+ÇÞÓÁ:Úw%°É.éÞµ7ŒG†•gOÚ“Wõ^ý¯™ue&X¾[£L[©ó0£$3bó•íLA¥¥`“«›ÀyÕè\™ §ý*Ty%`ÿŽÛSP÷LÀƒ®q±ØDx
+¸¨°â¼îòJ>%†\5òé<›ƒD[±i)8•ßÃøØ »fôYJ"µA=›€? ä„à .ØÀŨ
+¥³]Kö@-[¤ƒŽ•¥kº&0;ñ«qÞkò÷ÚOª)ˆÈnðý+„ÈY? M”£Zrž˜´·]ŒÄ.yB£[ë½Þ€kü‘6°1ÖJÁ›JáWº¬
+(
+"ß¿‡(R,Ã$·Õü Jãêþ)ý’Ã
+ŠÔW´Ðªl¬×þÚ‰´ãÿ»éZæ’jžõhß ºÉMW0JæBTs6Ð^¡JŸTZØÓˆŠûô@ ªAA,¥â~T¹°å(]/H!X<Êaa%/‰D”á—°Ez' hTÎKGò
+ó¶3Ðqøc½gAkDÖúaÿƒ¼xK™cª9¥R! L”Gb󞡱yJ…‘FåD—"ÁhåØcŽ;x€šBz#£ÐÙ’°Qø²õçDŢؠ³ã€Œuƒ
+:“Ñ{†·â"]ƒ~©è"Æ)uëG0-#Ýæ3™áˆe/l=x¥ÅƒÖiÞú9’—"qTŒi®‘2‘“¨bµiöÚß“oUþlVïD*Se‹§ÂÈj6ý°îÏXWѼM¯†²]û4=Ç‘7Ë®0(2i¸‘yF_.%ð “R§„J}@R‚¦8¸8·ôfüÖ¡Mm#“âˆO!æ=s 'èá=¼$Ý`˜ v!p0)ž²°ó›ú(çÙj¹ ›Å:Ûâ'µ3zKóÙ
+ÕÉWci3 äGœ¬p$„¾EQ)ôá
+&¤Û§ß$øá²^®…!Ïá¬6Ûl³^à×^Ï—YüûnòÏäóÅ…#endstream
+endobj
+1408 0 obj<</Type/Page/Parent 1119 0 R/Contents 1409 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1409 0 obj<</Filter/FlateDecode/Length 1659 >>stream
+x•WÁn7½û+¦ºTbY²lÙ)ЃƒÚ€&uµ@
+)¢1ÀË…¦€ŸK¤°.B¦³éGœJ|`ôF…rE_ß'«B£éÑÛ®Õ 7S¨RII-'7Ÿhæ2…çg™¤·.éà”%‚ñ¿Dc2_LÜÿÛZJl4Ò£Ñí×åõý׫ßéúþþûµ:F…È ðW:L&á£o„j™9 0BÑÓO]&”À-Rö ìí
+¡Ð9't›¸Ñ›à U0~À·iÁxi
+ôQ•¢g€CÁu  þr¶¡ +Â@{c:HöÛ—ÏÏÀxmó5sBË•h£ö òF
+òŽ•^w–ÑÚ1K+¿Åÿ?çf¥NÚXÖÔADHÍvz~ôífdÁFÒ š“ïPc\ùÎr_¢ï«¡•ßRò|&øª+Áþ}àdjÚø Ò˜Ðä@­Zó.”Á:÷N8±ÑÕ[QYŒ²6 …°Oa±30­Ôf+Ô
+o²¶Ó!aú‚ÖŽE ˜£nyÌX嚎Gâ9Æd©LÄ÷Ñ@Žà;ÌyMïçEcpÚ$ö©WÓÝš"( 6\“IN!ƒ³ÿ(áÌÜôðA&c´¶>¬ ¹~R%[Ýë„@ÀBÞ ÃàkÖûµ°!I"ô‚”¾‚¯Q9òÏä–3N{ˆ$aL…NÎôXóÈÉÞ‡ƒ®ôÆ—… yÓ¡®ÚÖ4\£ü€{_b~¿æxoX±“§ÎÜ€"z ãΙ'¹|É” 3ãÙéYãº'Zõ€SAø‰ÉÕµ„ßO ÂL*®ù uXܾA“:S!`åâ•G
+2Š>ˆ¼Eà ŠH›©ÕÛ £^Ê
+endobj
+1410 0 obj<</Type/Page/Parent 1119 0 R/Contents 1411 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1411 0 obj<</Filter/FlateDecode/Length 1344 >>stream
+x…VÛnÛF}÷W ôRˆ©«%Ù@”XNØ’k2Mƒ¢+r)nMr™]ÒŠþ¾gvÉÄa †m‰;;—3gÎðëÙ˜FøÓbBÓ9ÅÅÙ(Ñìê*XÒl¹Àç ~¤Ë%ýøcø2¢éh\µ¦³y0îlGptZÛñ|Lu '—Á¢ÿü]t6¼½¢Éˆ¢ÎKŠçOâó%¥¶ª<ÐI7†¬(ö‚¬4ÏÒüýëîŽþîÅtLpû|SÖF'M\+]z£Ç­ÑdÌÙ(Ê”¥Tå’b]ÖB•–åÊÖ¤Sª¥­-G¤X”TI“jSP­éYä*µôÙ„/² hS“È­Æå<÷—™¨©Î$ü>ÉüĹŒèb<õiÆ¢±ÒEƒEeô>—!)•’ª)
+^Dy"]vV0·µ¬,b9›JX+a”ç§>o|.Ù|±[±ÏOtÔæ (öRHU)ƒöÙd̘/¨ÚfºÉJ4­îî\ÎóR¥û¦M"ÑŒLË€>KÊÄ3‚%)F¦MŽ¨q¦5§•¡2 “9Ó&©Ë_
+.EáfÏh,(À3ð©ãð¶Å>À¤§˜:*LŒwäúÙ™Ú¶æ^™ƒº¨}iå@$ ¤Â=l/òxÓþD8a:q <_Ü7M]ìkv<¼Ñ‹Ñ8˜M't1¹ –øÉûqþébC‚ùÔ©(
+w°¿»¿_moÂ.“Vó»Ï[ºÙÜÐvÑú¯MÑfKëÕ#HöØEénu’ôKm¨ ®k Y`¡a ¥1 Q!­pˆçÎÈXªgéT’ô'œEˆ@Íâì©áÖ Ëå^¢c½”›2…°• Àcç­4¦Ê`èãLÆOß=Ñæ´:o\–pkƒŒjÜ·²¦¦
+H®é^€3пJz1‡²Ž‡Î˳#­_T•V˜ .ÜEñ[°-fÁ…bËoиþ
+#Ù«¢£½Ïå49ÒÇ@l[æ7æc©1[ÜíYFè1¯XÖG‹y³¬j•Àîü8Þ«’ñþþ~
+åw‹‹é¨]ýhìÒR8()×–(î™Æ°±Èe*Î|÷ñ¨]þ]®º7d‘ç•·Ç+évk»c ¸ÙCÌ1•;Šî©Ùª¿¤¤êÐáXåÞ[
+endobj
+1412 0 obj<</Type/Page/Parent 1119 0 R/Contents 1413 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1413 0 obj<</Filter/FlateDecode/Length 1651 >>stream
+x½WMOãH½ó+J¾,#ç BiÀ0+$–e‡h¥‘¸´ívÒƒíÎtÛ$ù÷ûªÚ&ÁÌîÜDBìvwÕ{õ^U~i„ß1Oh:£´<Å#:ñz:?ÇëNSŽó9í_Üðäì,·K§gñ´[;"<}ÑíqŸ…W >
+r맑¨ô¹Ïè-hçPb"R[Õ¨
+OªEȹR­Qi@òÀÑ:ÑàèI¡i”¯”(ˆi‹®‡©Í~¢“ ;O™®v¢¹(xJƒZ÷ XL8ň-?amÊ•%3Ï C²¢)Ö¯lÓõJ§Ï½³7­¯8z÷dã%I®þµre$*«u¹¶N9ƒô  %©j×Å,%ÖK Éù½ƒÛtwdªw¾“Ûr"ä\Á5¹Úαàë¹BS™dC”j'V–èNƒ¯fþj¼dXO½8w È?!Xg¦f'fƒÛu»Ÿï¯À3e
+ȉp+J™”°ß/ÔÖ0N‚Åí×r~ˆ,1Ö¼‡¹[4l…ýïn7÷ÜÐ9Z±˜?Ó@EÿYø‘‡7`ÅEÄÊ_)o5xn <_‡™v|HÖH=ÄSy¢g„õ¯q¢¹Ðš*‡µWYª—³ ZÈ«”*ð,†.²êŠ¦kî¢ Ô©*u ¡Hwÿ¢ Õõ­ÞÁ¹BÇ•3
+]JŸ‘l ôÚà†t×fÍv¡e1]Þ¶„‰ØXz†Í6ót܉ñ郴'¿ƒglIŒÄËæ½Ó£ž²¸ˆÌ¨Ë60
+endobj
+1414 0 obj<</Type/Page/Parent 1119 0 R/Contents 1415 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1415 0 obj<</Filter/FlateDecode/Length 1410 >>stream
+x…VkOã8ýί¸Ë˜ }Qè~ã¹BÚa»­´r§ñØۡÿßsí´t2Ì „Ô¦ñ}œ{Îñýº7¢!þFt:¦ÉŒòfo˜ éät˜ÌhzvŠÏcü[Ieøa:š'gïý0žŸ$Ó÷~˜Ìq¾é"Ý;¾™ÒhDi‰ä³³SJ BâáÒü°6f•‰ü™DQXé­U]S†Ô7Y3F?~J>¥_ö†4Ï7-ϵñ•´”›¦1šrÑ:I¦$<Ä¿6$­5Ö‘rT‰¥—ÔH_ñ'Q[)ŠW²­ÖüVÆzMæGäÚ¼"áèA4™è²Ž&ɘ³>*ù¹&+8îæxiMCJK_l"?~"cwÖêYÒ•Z*/êG ᫵±Ï.¡ËJ¢óWÓÚ!É.Ñy-{©3YÌÅÛW®Ør^ äP ªT $ŽHy ¡I¼…z¨6žq)më¼^ýÛPô*=‰Ò•qNeµì@EZ*…ª[dG ôú!¥ ·¿®¤f¼X†æ©3Ôsó™5¢È…CÜ8Ö^?NzNP9â*keîZÔR`‚yÀÅW‡ˆÏ€áE/m)rI· :ïørLÛdoÏbUŸQÕ¯Rw‰Cá!]˜;8ãÀ­PSýJ@LŒÜR±éÚ,ÝdaTœÇ7s›LñÁdišJ
+ŒY‡÷m ÅfÜöbxnW4¸ ‹Û?®ïÿ½¾§§§‡óÏçOOû ýgZr•ië‚–Àœáå`>L¥^¿±#'í ÃJë‹é6£ÂèƒR* ß ( ÊÕµ,~ÆZÃ@L 
+Ôgåóa3Ê^m‘µ»jb$jå¼ ÒÑÛbµ‘çi¿ò¿5¨-`e H !º˜ rͬJÕ¬ð‹Ô>ðƒ¡QQ†·VÂ
+xƒ„]À
+ÓÍHjHè¶ìU  Î^eºâL®â%4g´ðIr¹U+†4†°½
+}m¥Åb
+rrŸ,$b)]/sP¨“0TQÇÖÞ![p‰ Ó–œBSª…å h‡ï÷cAOÁ;FâoÅÀ¾Ï7g\>˜ð±PðEëM ÌÑU^ ­\ocÈ@\Õ2ˆ·›‰ü¶’„‚p7zØßÞ¾nŸÌŠw ÞC IÜaÐ̵ÅÔ^ÙûJµä šµ;Â:z£T¸A ^#Þ3„²Ù(»« Ôeûèì$м[E‚la•Ô’/o\$®q¹vÕã!ö@¢ŒJþÜñŽ-0&ì×åÈ ðÕ$2àÀ{ÅkëaomÚV°½ÎY›X=
+endobj
+1416 0 obj<</Type/Page/Parent 1119 0 R/Contents 1417 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>>>endobj
+1417 0 obj<</Filter/FlateDecode/Length 1706 >>stream
+x}WÛnÛF}÷W U€H²äk‚4@’&…&qcµE
+Ÿ`
+ÀßäGAš†‚ÚJŒ]«Òdduþ=£°¿Žú\ƒ0Ô adAôƒ÷:mÊ-Ý´5¨ÆixnˆIêl>‰Îæ±2 ÜÎßRe;²ü”æAÃ^ªP‰À4øÑÛãÞ#R¨µ,*s1‚† t?B¦Á¡xÂßu
+ÛÐèêþ-Û†2“1PàcmÀ „Úºv¾‘D¾¾ã¸ÇÃΫ–ÒõcCß³ ñ1|3 ÍSÒáÈL
+ üØܬZ¯¤/€›±5ñÛŸl4ßëíïòTT™G4rªÐø»¦‡ g
+NH[žwm™ìN•z­Ë¤oKpBQaVE¬KïJ[×®
+’Ã}Xý³³}d}„„µ‚Tü–HC Š±æÌ]ŽzWèô«.ÒÂ"S+_õN$÷ó½‡Þ)çÞ'´ËEÛÔo;}ÒkÕt‚x÷ñ-nÉ!
+C Ië©©ãøŠ5¼}'õÛùÿ‰6wÚ>1W~¬ÍÚ(úýÓ#|à {€Ô.:t~ñ@s‡ä‡
+x*«Â…ìæQöDøQ^Ô.î~‘?ý c2Ò)£:ðž„"òœ®kp;ÒÝòˆí‡é/xu‰«òøO˜âS-A>l&Ší“¶h€çT©tS‹5VMº<Á·égÎ^µîGºÆPc=‡™•÷Ï¢ë~h½)ƒ{ÎŒæ®aºË–$™«”—%¨¥ÈÛᶥZ^o¨$ÇóœGÄ`É KIÖ º²<J[5Ø?jøpý}Œn$v%-ÓqS˜´õ«»ãÕ]òÿ72­Ri!ôW4`¯qŒÕ‘GANR ýꮡ^"Ubónx7žýÈpHq»M‹F?KÿGØ’n½6h* & 6Y(£Q›5çÛCy v–$¨é‹ªBÇî&W=Z9Juh§H0·zIj€c±Û:
+endobj
+1418 0 obj<</Type/Page/Parent 1119 0 R/Contents 1419 0 R/MediaBox[0 0 595 792]/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 7 0 R/F5 8 0 R/F8 11 0 R/F9 12 0 R>>/XObject<<>>>>/Annots 830 0 R>>endobj
+1419 0 obj<</Filter/FlateDecode/Length 1557 >>stream
+xWÛnÛF}×WLõˆhQ–%9€Ñ:møÁ®k+ ŠªVäRbBî²\ÒŠþ¾gf©í^D¡Hî™Û™3£¿:! ð7¤ÉNÇåA0 ñd i4àzˆ¥¦DŒ¦gÁôµ§£éë'†á ¿rVƒAóñxÓ9âx8:ÃgNád
++þ[FOp‰ð”]Éi8“æ?ý0ëœ\( i– ”ñtB³XÐ4‹z+ë*¨,³kJÒ ‘Ø’6¶.)ÊRm*š÷pÃÕ £«w¤«(˜¿};û
+Ìs¸à1û§a€Ë¸7Ó®¢sÿxo²?d“½ÇÚPµÒÙ<W&öo5ŽõøT;MßßÓ>ÜÞ<]=þvõ8ŸÏîŽ!{ýnkr+[g1-4¥Í‹JÇâ¼¢B9·¶eÌæ Ó¼Ê(ꇧH#Z¢¢nãûUdšQ\EÚ¹¤Î²M—r\ª¥è6!c«hI?“³IµV @ê(5‘-KUÙ×®BRfË–YI®ËAdMrt. \}Ó0<y«+Õ!©N—4² ¥ÁÉtIYj4›¥{Ò84f‡c_›Ûê’³TXçÒJ]­”„CN—Ï «Ì›Š¹odk\ðc”¤$£r¼mÙ®A|’RåšYEì  8Ž“ÃÕ
+[ÅRqšº{AŸPãûË»«.£óÙ?ª¼ø Q•ZC6Ù‡¶Fàšºû5FbÿZæ$ ®°&NÍr‹¾#s¢Ú:–ªò·$Ev%Š$ýŽ¬âÒ,Dš« ؉R²ƒ[s(UQà•–Y[°ã/sOyº\nœ–‘"¶K ¤ÖM»Yö8mbGÚDåFh½õ„—ìîJ=KÄ'×ûjÞßÑßÑEË;cùÆ^zL "
+ÑÛr©õ&Š]—†ÒŠ*?ÐËIû.¡þ³„ƒc´ßÿSƒ|‘Yû­.¨G³«§ÙÍã/ŸÚ2
+ ‰RùBm[€óûT°k‡öv¨Uf…?G’ÃÊ!i` ·n—P æ+ßÉ•«Ð5‹(øŠÚ²+Ußyö‚-‰”8¶ÜÀ󲩳¦)Ð^¬N €£DA²AâÏ
+…Q ™©+éÔ¦-qmòµ†,/47‚c÷˜å†ÔR¥FZ m§ÆUi– >H—p8[µ0Ä•¡F:$HFöÌ÷ÃìDFa|¯MÝŠÛ« .JhH¨ ‡ƒ:5 ½ vÇ|ê1 µÉ•¡]¦úJcBÀU¨qYÕű5<Fß±õÆGŒ. déƒi_c©ºQá æ!©šAÁЪäœ0Iš“YŠÚ€7BÅÌF*kqeG?‰ù¨52È:J“ÊtçùÛ#ªBl”h½¥ØÖ|¡iP­Ò²ëÃÁñƒrë©[aÊ@ü1Y‰š)ššg•¥ñN|º„Bbs@‹ú‹ÀûkS<%àÙ¦e¶¬a:¡ ïgbÝs̨?Ø'}×´RxnÃ\h‹&„¶P‹4K+í V ]¬ã-Ó™~ÖÏžºäwsóÐçjረµN‘~WK·jïîÔE£$Œ}(´—÷ý­½^oU½9ñB­úr?ûr§"Ì£Fñ·›•¨·ðf«ÙBÑwX9©úËl8º¼ž]=ʶƒœ ¡Ìº(lÙ–
+WŽ9“&^Œ›mó‹;'IÒ(Å«¾?|öã@mÄv!ÔÀVh0–néŸä3°åR¶ÙxWÊ-(­|é¡™i+ÖZøR/\T¦<ö}ÆþÍìJss†ã÷Pk½@[-_ѪªŠ÷'';/üUÀvÕ»ä-ãP¤ýÖÛH¨ÏÈO¢OF9€ð…Ào
+YÂ1~ØLOi<6Õ»¼ûpI¥ýÊËßGÕ9~(Þtød{ ?œÿ §Áøl* ªáhȯ_Í:¿vþ›S3¤endstream
+endobj
+1420 0 obj<</Count 36/First 1421 0 R/Last 1665 0 R>>endobj
+1421 0 obj<</Parent 1420 0 R/Title(Table of Contents)/Dest[1122 0 R/XYZ 0 756 0]/Next 1422 0 R>>endobj
+1422 0 obj<</Parent 1420 0 R/Count -1/First 1423 0 R/Last 1423 0 R/Title(SAMBA Project Documentation)/Dest[1136 0 R/XYZ 0 786 0]/Prev 1421 0 R/Next 1424 0 R>>endobj
+1423 0 obj<</Parent 1422 0 R/Title(SAMBA Team)/Dest[1136 0 R/XYZ 0 762 0]>>endobj
+1424 0 obj<</Parent 1420 0 R/Title(Abstract)/Dest[1138 0 R/XYZ 0 786 0]/Prev 1422 0 R/Next 1425 0 R>>endobj
+1425 0 obj<</Parent 1420 0 R/Title(I. General installation)/Dest[1146 0 R/XYZ 0 786 0]/Prev 1424 0 R/Next 1426 0 R>>endobj
+1426 0 obj<</Parent 1420 0 R/Title(Introduction)/Dest[1148 0 R/XYZ 0 786 0]/Prev 1425 0 R/Next 1427 0 R>>endobj
+1427 0 obj<</Parent 1420 0 R/Count -10/First 1428 0 R/Last 1439 0 R/Title(How to Install and Test SAMBA)/Dest[1150 0 R/XYZ 0 786 0]/Prev 1426 0 R/Next 1446 0 R>>endobj
+1428 0 obj<</Parent 1427 0 R/Title(Read the man pages)/Dest[1150 0 R/XYZ 0 762 0]/Next 1429 0 R>>endobj
+1429 0 obj<</Parent 1427 0 R/Title(Building the Binaries)/Dest[1150 0 R/XYZ 0 621 0]/Prev 1428 0 R/Next 1430 0 R>>endobj
+1430 0 obj<</Parent 1427 0 R/Title(The all important step)/Dest[1150 0 R/XYZ 0 216 0]/Prev 1429 0 R/Next 1431 0 R>>endobj
+1431 0 obj<</Parent 1427 0 R/Title(Create the smb configuration file.)/Dest[1152 0 R/XYZ 0 786 0]/Prev 1430 0 R/Next 1432 0 R>>endobj
+1432 0 obj<</Parent 1427 0 R/Title(Test your config file with testparm)/Dest[1152 0 R/XYZ 0 435 0]/Prev 1431 0 R/Next 1433 0 R>>endobj
+1433 0 obj<</Parent 1427 0 R/Count -2/First 1434 0 R/Last 1435 0 R/Title(Starting the smbd and nmbd)/Dest[1152 0 R/XYZ 0 307 0]/Prev 1432 0 R/Next 1436 0 R>>endobj
+1434 0 obj<</Parent 1433 0 R/Title(Starting from inetd.conf)/Dest[1154 0 R/XYZ 0 786 0]/Next 1435 0 R>>endobj
+1435 0 obj<</Parent 1433 0 R/Title(Alternative: starting it as a daemon)/Dest[1154 0 R/XYZ 0 297 0]/Prev 1434 0 R>>endobj
+1436 0 obj<</Parent 1427 0 R/Title(Try listing the shares available on your server)/Dest[1156 0 R/XYZ 0 718 0]/Prev 1433 0 R/Next 1437 0 R>>endobj
+1437 0 obj<</Parent 1427 0 R/Title(Try connecting with the unix client)/Dest[1156 0 R/XYZ 0 551 0]/Prev 1436 0 R/Next 1438 0 R>>endobj
+1438 0 obj<</Parent 1427 0 R/Title(Try connecting from a DOS, WfWg, Win9x, WinNT, Win2k, OS/2, etc... client)/Dest[1156 0 R/XYZ 0 383 0]/Prev 1437 0 R/Next 1439 0 R>>endobj
+1439 0 obj<</Parent 1427 0 R/Count -6/First 1440 0 R/Last 1445 0 R/Title(What If Things Don't Work?)/Dest[1158 0 R/XYZ 0 786 0]/Prev 1438 0 R>>endobj
+1440 0 obj<</Parent 1439 0 R/Title(Diagnosing Problems)/Dest[1158 0 R/XYZ 0 605 0]/Next 1441 0 R>>endobj
+1441 0 obj<</Parent 1439 0 R/Title(Scope IDs)/Dest[1158 0 R/XYZ 0 547 0]/Prev 1440 0 R/Next 1442 0 R>>endobj
+1442 0 obj<</Parent 1439 0 R/Title(Choosing the Protocol Level)/Dest[1158 0 R/XYZ 0 462 0]/Prev 1441 0 R/Next 1443 0 R>>endobj
+1443 0 obj<</Parent 1439 0 R/Title(Printing from UNIX to a Client PC)/Dest[1160 0 R/XYZ 0 786 0]/Prev 1442 0 R/Next 1444 0 R>>endobj
+1444 0 obj<</Parent 1439 0 R/Title(Locking)/Dest[1160 0 R/XYZ 0 635 0]/Prev 1443 0 R/Next 1445 0 R>>endobj
+1445 0 obj<</Parent 1439 0 R/Title(Mapping Usernames)/Dest[1160 0 R/XYZ 0 181 0]/Prev 1444 0 R>>endobj
+1446 0 obj<</Parent 1420 0 R/Count -11/First 1447 0 R/Last 1458 0 R/Title(Improved browsing in samba)/Dest[1164 0 R/XYZ 0 786 0]/Prev 1427 0 R/Next 1459 0 R>>endobj
+1447 0 obj<</Parent 1446 0 R/Title(Overview of browsing)/Dest[1164 0 R/XYZ 0 762 0]/Next 1448 0 R>>endobj
+1448 0 obj<</Parent 1446 0 R/Title(Browsing support in samba)/Dest[1164 0 R/XYZ 0 568 0]/Prev 1447 0 R/Next 1449 0 R>>endobj
+1449 0 obj<</Parent 1446 0 R/Title(Problem resolution)/Dest[1164 0 R/XYZ 0 189 0]/Prev 1448 0 R/Next 1450 0 R>>endobj
+1450 0 obj<</Parent 1446 0 R/Count -1/First 1451 0 R/Last 1451 0 R/Title(Browsing across subnets)/Dest[1166 0 R/XYZ 0 586 0]/Prev 1449 0 R/Next 1452 0 R>>endobj
+1451 0 obj<</Parent 1450 0 R/Title(How does cross subnet browsing work ?)/Dest[1166 0 R/XYZ 0 326 0]>>endobj
+1452 0 obj<</Parent 1446 0 R/Title(Setting up a WINS server)/Dest[1172 0 R/XYZ 0 564 0]/Prev 1450 0 R/Next 1453 0 R>>endobj
+1453 0 obj<</Parent 1446 0 R/Title(Setting up Browsing in a WORKGROUP)/Dest[1174 0 R/XYZ 0 613 0]/Prev 1452 0 R/Next 1454 0 R>>endobj
+1454 0 obj<</Parent 1446 0 R/Title(Setting up Browsing in a DOMAIN)/Dest[1176 0 R/XYZ 0 619 0]/Prev 1453 0 R/Next 1455 0 R>>endobj
+1455 0 obj<</Parent 1446 0 R/Title(Forcing samba to be the master)/Dest[1176 0 R/XYZ 0 261 0]/Prev 1454 0 R/Next 1456 0 R>>endobj
+1456 0 obj<</Parent 1446 0 R/Title(Making samba the domain master)/Dest[1178 0 R/XYZ 0 507 0]/Prev 1455 0 R/Next 1457 0 R>>endobj
+1457 0 obj<</Parent 1446 0 R/Title(Note about broadcast addresses)/Dest[1180 0 R/XYZ 0 731 0]/Prev 1456 0 R/Next 1458 0 R>>endobj
+1458 0 obj<</Parent 1446 0 R/Title(Multiple interfaces)/Dest[1180 0 R/XYZ 0 643 0]/Prev 1457 0 R>>endobj
+1459 0 obj<</Parent 1420 0 R/Count -6/First 1460 0 R/Last 1465 0 R/Title(Quick Cross Subnet Browsing / Cross Workgroup Browsing guide)/Dest[1182 0 R/XYZ 0 786 0]/Prev 1446 0 R/Next 1466 0 R>>endobj
+1460 0 obj<</Parent 1459 0 R/Title(Discussion)/Dest[1182 0 R/XYZ 0 657 0]/Next 1461 0 R>>endobj
+1461 0 obj<</Parent 1459 0 R/Title(Use of the "Remote Announce" parameter)/Dest[1182 0 R/XYZ 0 212 0]/Prev 1460 0 R/Next 1462 0 R>>endobj
+1462 0 obj<</Parent 1459 0 R/Title(Use of the "Remote Browse Sync" parameter)/Dest[1184 0 R/XYZ 0 573 0]/Prev 1461 0 R/Next 1463 0 R>>endobj
+1463 0 obj<</Parent 1459 0 R/Title(Use of WINS)/Dest[1184 0 R/XYZ 0 391 0]/Prev 1462 0 R/Next 1464 0 R>>endobj
+1464 0 obj<</Parent 1459 0 R/Title(Do NOT use more than one \(1\) protocol on MS Windows machines)/Dest[1186 0 R/XYZ 0 547 0]/Prev 1463 0 R/Next 1465 0 R>>endobj
+1465 0 obj<</Parent 1459 0 R/Title(Name Resolution Order)/Dest[1186 0 R/XYZ 0 266 0]/Prev 1464 0 R>>endobj
+1466 0 obj<</Parent 1420 0 R/Count -3/First 1467 0 R/Last 1471 0 R/Title(LanMan and NT Password Encryption in Samba)/Dest[1190 0 R/XYZ 0 786 0]/Prev 1459 0 R/Next 1472 0 R>>endobj
+1467 0 obj<</Parent 1466 0 R/Title(Introduction)/Dest[1190 0 R/XYZ 0 762 0]/Next 1468 0 R>>endobj
+1468 0 obj<</Parent 1466 0 R/Count -2/First 1469 0 R/Last 1470 0 R/Title(Important Notes About Security)/Dest[1190 0 R/XYZ 0 608 0]/Prev 1467 0 R/Next 1471 0 R>>endobj
+1469 0 obj<</Parent 1468 0 R/Title(Advantages of SMB Encryption)/Dest[1192 0 R/XYZ 0 786 0]/Next 1470 0 R>>endobj
+1470 0 obj<</Parent 1468 0 R/Title(Advantages of non-encrypted passwords)/Dest[1192 0 R/XYZ 0 662 0]/Prev 1469 0 R>>endobj
+1471 0 obj<</Parent 1466 0 R/Title(The smbpasswd Command)/Dest[1192 0 R/XYZ 0 564 0]/Prev 1468 0 R>>endobj
+1472 0 obj<</Parent 1420 0 R/Title(II. Type of installation)/Dest[1196 0 R/XYZ 0 786 0]/Prev 1466 0 R/Next 1473 0 R>>endobj
+1473 0 obj<</Parent 1420 0 R/Title(Introduction)/Dest[1198 0 R/XYZ 0 786 0]/Prev 1472 0 R/Next 1474 0 R>>endobj
+1474 0 obj<</Parent 1420 0 R/Title(User and Share security level \(for servers not in a domain\))/Dest[1200 0 R/XYZ 0 786 0]/Prev 1473 0 R/Next 1475 0 R>>endobj
+1475 0 obj<</Parent 1420 0 R/Count -9/First 1476 0 R/Last 1489 0 R/Title(How to Configure Samba as a NT4 Primary Domain Controller)/Dest[1204 0 R/XYZ 0 786 0]/Prev 1474 0 R/Next 1490 0 R>>endobj
+1476 0 obj<</Parent 1475 0 R/Title(Prerequisite Reading)/Dest[1204 0 R/XYZ 0 738 0]/Next 1477 0 R>>endobj
+1477 0 obj<</Parent 1475 0 R/Title(Background)/Dest[1204 0 R/XYZ 0 637 0]/Prev 1476 0 R/Next 1478 0 R>>endobj
+1478 0 obj<</Parent 1475 0 R/Title(Configuring the Samba Domain Controller)/Dest[1206 0 R/XYZ 0 771 0]/Prev 1477 0 R/Next 1479 0 R>>endobj
+1479 0 obj<</Parent 1475 0 R/Count -3/First 1480 0 R/Last 1482 0 R/Title(Creating Machine Trust Accounts and Joining Clients to the Domain)/Dest[1208 0 R/XYZ 0 665 0]/Prev 1478 0 R/Next 1483 0 R>>endobj
+1480 0 obj<</Parent 1479 0 R/Title(Manual Creation of Machine Trust Accounts)/Dest[1208 0 R/XYZ 0 279 0]/Next 1481 0 R>>endobj
+1481 0 obj<</Parent 1479 0 R/Title("On-the-Fly" Creation of Machine Trust Accounts)/Dest[1210 0 R/XYZ 0 369 0]/Prev 1480 0 R/Next 1482 0 R>>endobj
+1482 0 obj<</Parent 1479 0 R/Title(Joining the Client to the Domain)/Dest[1212 0 R/XYZ 0 786 0]/Prev 1481 0 R>>endobj
+1483 0 obj<</Parent 1475 0 R/Title(Common Problems and Errors)/Dest[1212 0 R/XYZ 0 437 0]/Prev 1479 0 R/Next 1484 0 R>>endobj
+1484 0 obj<</Parent 1475 0 R/Title(System Policies and Profiles)/Dest[1214 0 R/XYZ 0 179 0]/Prev 1483 0 R/Next 1485 0 R>>endobj
+1485 0 obj<</Parent 1475 0 R/Title(What other help can I get?)/Dest[1216 0 R/XYZ 0 177 0]/Prev 1484 0 R/Next 1486 0 R>>endobj
+1486 0 obj<</Parent 1475 0 R/Count -2/First 1487 0 R/Last 1488 0 R/Title(Domain Control for Windows 9x/ME)/Dest[1222 0 R/XYZ 0 560 0]/Prev 1485 0 R/Next 1489 0 R>>endobj
+1487 0 obj<</Parent 1486 0 R/Title(Configuration Instructions: Network Logons)/Dest[1224 0 R/XYZ 0 573 0]/Next 1488 0 R>>endobj
+1488 0 obj<</Parent 1486 0 R/Title(Configuration Instructions: Setting up Roaming User Profiles)/Dest[1226 0 R/XYZ 0 786 0]/Prev 1487 0 R>>endobj
+1489 0 obj<</Parent 1475 0 R/Title(DOMAIN_CONTROL.txt : Windows NT Domain Control & Samba)/Dest[1234 0 R/XYZ 0 755 0]/Prev 1486 0 R>>endobj
+1490 0 obj<</Parent 1420 0 R/Count -5/First 1491 0 R/Last 1497 0 R/Title(How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain)/Dest[1238 0 R/XYZ 0 786 0]/Prev 1475 0 R/Next 1499 0 R>>endobj
+1491 0 obj<</Parent 1490 0 R/Title(Prerequisite Reading)/Dest[1238 0 R/XYZ 0 738 0]/Next 1492 0 R>>endobj
+1492 0 obj<</Parent 1490 0 R/Title(Background)/Dest[1238 0 R/XYZ 0 650 0]/Prev 1491 0 R/Next 1493 0 R>>endobj
+1493 0 obj<</Parent 1490 0 R/Count -2/First 1494 0 R/Last 1495 0 R/Title(What qualifies a Domain Controller on the network?)/Dest[1238 0 R/XYZ 0 275 0]/Prev 1492 0 R/Next 1496 0 R>>endobj
+1494 0 obj<</Parent 1493 0 R/Title(How does a Workstation find its domain controller?)/Dest[1240 0 R/XYZ 0 786 0]/Next 1495 0 R>>endobj
+1495 0 obj<</Parent 1493 0 R/Title(When is the PDC needed?)/Dest[1240 0 R/XYZ 0 662 0]/Prev 1494 0 R>>endobj
+1496 0 obj<</Parent 1490 0 R/Title(Can Samba be a Backup Domain Controller?)/Dest[1240 0 R/XYZ 0 577 0]/Prev 1493 0 R/Next 1497 0 R>>endobj
+1497 0 obj<</Parent 1490 0 R/Count -1/First 1498 0 R/Last 1498 0 R/Title(How do I set up a Samba BDC?)/Dest[1240 0 R/XYZ 0 436 0]/Prev 1496 0 R>>endobj
+1498 0 obj<</Parent 1497 0 R/Title(How do I replicate the smbpasswd file?)/Dest[1242 0 R/XYZ 0 670 0]>>endobj
+1499 0 obj<</Parent 1420 0 R/Count -8/First 1500 0 R/Last 1508 0 R/Title(Samba as a ADS domain member)/Dest[1244 0 R/XYZ 0 786 0]/Prev 1490 0 R/Next 1509 0 R>>endobj
+1500 0 obj<</Parent 1499 0 R/Title(Installing the required packages for Debian)/Dest[1244 0 R/XYZ 0 604 0]/Next 1501 0 R>>endobj
+1501 0 obj<</Parent 1499 0 R/Title(Installing the required packages for RedHat)/Dest[1244 0 R/XYZ 0 496 0]/Prev 1500 0 R/Next 1502 0 R>>endobj
+1502 0 obj<</Parent 1499 0 R/Title(Compile Samba)/Dest[1244 0 R/XYZ 0 320 0]/Prev 1501 0 R/Next 1503 0 R>>endobj
+1503 0 obj<</Parent 1499 0 R/Title(Setup your /etc/krb5.conf)/Dest[1246 0 R/XYZ 0 617 0]/Prev 1502 0 R/Next 1504 0 R>>endobj
+1504 0 obj<</Parent 1499 0 R/Count -1/First 1505 0 R/Last 1505 0 R/Title(Create the computer account)/Dest[1246 0 R/XYZ 0 297 0]/Prev 1503 0 R/Next 1506 0 R>>endobj
+1505 0 obj<</Parent 1504 0 R/Title(Possible errors)/Dest[1246 0 R/XYZ 0 209 0]>>endobj
+1506 0 obj<</Parent 1499 0 R/Title(Test your server setup)/Dest[1248 0 R/XYZ 0 745 0]/Prev 1504 0 R/Next 1507 0 R>>endobj
+1507 0 obj<</Parent 1499 0 R/Title(Testing with smbclient)/Dest[1248 0 R/XYZ 0 656 0]/Prev 1506 0 R/Next 1508 0 R>>endobj
+1508 0 obj<</Parent 1499 0 R/Title(Notes)/Dest[1248 0 R/XYZ 0 581 0]/Prev 1507 0 R>>endobj
+1509 0 obj<</Parent 1420 0 R/Count -3/First 1510 0 R/Last 1512 0 R/Title(Samba as a NT4 domain member)/Dest[1250 0 R/XYZ 0 786 0]/Prev 1499 0 R/Next 1513 0 R>>endobj
+1510 0 obj<</Parent 1509 0 R/Title(Joining an NT Domain with Samba 2.2)/Dest[1250 0 R/XYZ 0 762 0]/Next 1511 0 R>>endobj
+1511 0 obj<</Parent 1509 0 R/Title(Samba and Windows 2000 Domains)/Dest[1252 0 R/XYZ 0 415 0]/Prev 1510 0 R/Next 1512 0 R>>endobj
+1512 0 obj<</Parent 1509 0 R/Title(Why is this better than security = server?)/Dest[1252 0 R/XYZ 0 207 0]/Prev 1511 0 R>>endobj
+1513 0 obj<</Parent 1420 0 R/Title(III. Optional configuration)/Dest[1256 0 R/XYZ 0 786 0]/Prev 1509 0 R/Next 1514 0 R>>endobj
+1514 0 obj<</Parent 1420 0 R/Title(Introduction)/Dest[1258 0 R/XYZ 0 786 0]/Prev 1513 0 R/Next 1515 0 R>>endobj
+1515 0 obj<</Parent 1420 0 R/Count -6/First 1516 0 R/Last 1533 0 R/Title(Integrating MS Windows networks with Samba)/Dest[1260 0 R/XYZ 0 786 0]/Prev 1514 0 R/Next 1534 0 R>>endobj
+1516 0 obj<</Parent 1515 0 R/Title(Agenda)/Dest[1260 0 R/XYZ 0 762 0]/Next 1517 0 R>>endobj
+1517 0 obj<</Parent 1515 0 R/Count -4/First 1518 0 R/Last 1521 0 R/Title(Name Resolution in a pure Unix/Linux world)/Dest[1260 0 R/XYZ 0 515 0]/Prev 1516 0 R/Next 1522 0 R>>endobj
+1518 0 obj<</Parent 1517 0 R/Title(/etc/hosts)/Dest[1260 0 R/XYZ 0 387 0]/Next 1519 0 R>>endobj
+1519 0 obj<</Parent 1517 0 R/Title(/etc/resolv.conf)/Dest[1262 0 R/XYZ 0 507 0]/Prev 1518 0 R/Next 1520 0 R>>endobj
+1520 0 obj<</Parent 1517 0 R/Title(/etc/host.conf)/Dest[1262 0 R/XYZ 0 369 0]/Prev 1519 0 R/Next 1521 0 R>>endobj
+1521 0 obj<</Parent 1517 0 R/Title(/etc/nsswitch.conf)/Dest[1262 0 R/XYZ 0 221 0]/Prev 1520 0 R>>endobj
+1522 0 obj<</Parent 1515 0 R/Count -5/First 1523 0 R/Last 1527 0 R/Title(Name resolution as used within MS Windows networking)/Dest[1264 0 R/XYZ 0 400 0]/Prev 1517 0 R/Next 1528 0 R>>endobj
+1523 0 obj<</Parent 1522 0 R/Title(The NetBIOS Name Cache)/Dest[1266 0 R/XYZ 0 348 0]/Next 1524 0 R>>endobj
+1524 0 obj<</Parent 1522 0 R/Title(The LMHOSTS file)/Dest[1268 0 R/XYZ 0 786 0]/Prev 1523 0 R/Next 1525 0 R>>endobj
+1525 0 obj<</Parent 1522 0 R/Title(HOSTS file)/Dest[1270 0 R/XYZ 0 509 0]/Prev 1524 0 R/Next 1526 0 R>>endobj
+1526 0 obj<</Parent 1522 0 R/Title(DNS Lookup)/Dest[1270 0 R/XYZ 0 411 0]/Prev 1525 0 R/Next 1527 0 R>>endobj
+1527 0 obj<</Parent 1522 0 R/Title(WINS Lookup)/Dest[1270 0 R/XYZ 0 273 0]/Prev 1526 0 R>>endobj
+1528 0 obj<</Parent 1515 0 R/Title(How browsing functions and how to deploy stable and dependable browsing using Samba)/Dest[1272 0 R/XYZ 0 720 0]/Prev 1522 0 R/Next 1529 0 R>>endobj
+1529 0 obj<</Parent 1515 0 R/Count -3/First 1530 0 R/Last 1532 0 R/Title(MS Windows security options and how to configure Samba for seemless integration)/Dest[1274 0 R/XYZ 0 786 0]/Prev 1528 0 R/Next 1533 0 R>>endobj
+1530 0 obj<</Parent 1529 0 R/Title(Use MS Windows NT as an authentication server)/Dest[1276 0 R/XYZ 0 745 0]/Next 1531 0 R>>endobj
+1531 0 obj<</Parent 1529 0 R/Title(Make Samba a member of an MS Windows NT security domain)/Dest[1276 0 R/XYZ 0 493 0]/Prev 1530 0 R/Next 1532 0 R>>endobj
+1532 0 obj<</Parent 1529 0 R/Title(Configure Samba as an authentication server)/Dest[1278 0 R/XYZ 0 786 0]/Prev 1531 0 R>>endobj
+1533 0 obj<</Parent 1515 0 R/Title(Conclusions)/Dest[1278 0 R/XYZ 0 225 0]/Prev 1529 0 R>>endobj
+1534 0 obj<</Parent 1420 0 R/Count -7/First 1535 0 R/Last 1543 0 R/Title(UNIX Permission Bits and Windows NT Access Control Lists)/Dest[1282 0 R/XYZ 0 786 0]/Prev 1515 0 R/Next 1544 0 R>>endobj
+1535 0 obj<</Parent 1534 0 R/Title(Viewing and changing UNIX permissions using the NT security dialogs)/Dest[1282 0 R/XYZ 0 738 0]/Next 1536 0 R>>endobj
+1536 0 obj<</Parent 1534 0 R/Title(How to view file security on a Samba share)/Dest[1282 0 R/XYZ 0 550 0]/Prev 1535 0 R/Next 1537 0 R>>endobj
+1537 0 obj<</Parent 1534 0 R/Title(Viewing file ownership)/Dest[1282 0 R/XYZ 0 383 0]/Prev 1536 0 R/Next 1538 0 R>>endobj
+1538 0 obj<</Parent 1534 0 R/Count -2/First 1539 0 R/Last 1540 0 R/Title(Viewing file or directory permissions)/Dest[1284 0 R/XYZ 0 718 0]/Prev 1537 0 R/Next 1541 0 R>>endobj
+1539 0 obj<</Parent 1538 0 R/Title(File Permissions)/Dest[1284 0 R/XYZ 0 485 0]/Next 1540 0 R>>endobj
+1540 0 obj<</Parent 1538 0 R/Title(Directory Permissions)/Dest[1284 0 R/XYZ 0 241 0]/Prev 1539 0 R>>endobj
+1541 0 obj<</Parent 1534 0 R/Title(Modifying file or directory permissions)/Dest[1286 0 R/XYZ 0 745 0]/Prev 1538 0 R/Next 1542 0 R>>endobj
+1542 0 obj<</Parent 1534 0 R/Title(Interaction with the standard Samba create mask parameters)/Dest[1286 0 R/XYZ 0 313 0]/Prev 1541 0 R/Next 1543 0 R>>endobj
+1543 0 obj<</Parent 1534 0 R/Title(Interaction with the standard Samba file attribute mapping)/Dest[1290 0 R/XYZ 0 652 0]/Prev 1542 0 R>>endobj
+1544 0 obj<</Parent 1420 0 R/Count -3/First 1545 0 R/Last 1547 0 R/Title(Configuring PAM for distributed but centrally managed authentication)/Dest[1292 0 R/XYZ 0 786 0]/Prev 1534 0 R/Next 1548 0 R>>endobj
+1545 0 obj<</Parent 1544 0 R/Title(Samba and PAM)/Dest[1292 0 R/XYZ 0 738 0]/Next 1546 0 R>>endobj
+1546 0 obj<</Parent 1544 0 R/Title(Distributed Authentication)/Dest[1294 0 R/XYZ 0 179 0]/Prev 1545 0 R/Next 1547 0 R>>endobj
+1547 0 obj<</Parent 1544 0 R/Title(PAM Configuration in smb.conf)/Dest[1296 0 R/XYZ 0 731 0]/Prev 1546 0 R>>endobj
+1548 0 obj<</Parent 1420 0 R/Count -1/First 1549 0 R/Last 1549 0 R/Title(Hosting a Microsoft Distributed File System tree on Samba)/Dest[1298 0 R/XYZ 0 786 0]/Prev 1544 0 R/Next 1551 0 R>>endobj
+1549 0 obj<</Parent 1548 0 R/Count -1/First 1550 0 R/Last 1550 0 R/Title(Instructions)/Dest[1298 0 R/XYZ 0 738 0]>>endobj
+1550 0 obj<</Parent 1549 0 R/Title(Notes)/Dest[1300 0 R/XYZ 0 705 0]>>endobj
+1551 0 obj<</Parent 1420 0 R/Count -4/First 1552 0 R/Last 1564 0 R/Title(Printing Support)/Dest[1302 0 R/XYZ 0 786 0]/Prev 1548 0 R/Next 1574 0 R>>endobj
+1552 0 obj<</Parent 1551 0 R/Title(Introduction)/Dest[1302 0 R/XYZ 0 762 0]/Next 1553 0 R>>endobj
+1553 0 obj<</Parent 1551 0 R/Count -5/First 1554 0 R/Last 1558 0 R/Title(Configuration)/Dest[1302 0 R/XYZ 0 370 0]/Prev 1552 0 R/Next 1559 0 R>>endobj
+1554 0 obj<</Parent 1553 0 R/Title(Creating [print$])/Dest[1302 0 R/XYZ 0 184 0]/Next 1555 0 R>>endobj
+1555 0 obj<</Parent 1553 0 R/Title(Setting Drivers for Existing Printers)/Dest[1306 0 R/XYZ 0 636 0]/Prev 1554 0 R/Next 1556 0 R>>endobj
+1556 0 obj<</Parent 1553 0 R/Title(Support a large number of printers)/Dest[1306 0 R/XYZ 0 221 0]/Prev 1555 0 R/Next 1557 0 R>>endobj
+1557 0 obj<</Parent 1553 0 R/Title(Adding New Printers via the Windows NT APW)/Dest[1308 0 R/XYZ 0 509 0]/Prev 1556 0 R/Next 1558 0 R>>endobj
+1558 0 obj<</Parent 1553 0 R/Title(Samba and Printer Ports)/Dest[1310 0 R/XYZ 0 336 0]/Prev 1557 0 R>>endobj
+1559 0 obj<</Parent 1551 0 R/Count -4/First 1560 0 R/Last 1563 0 R/Title(The Imprints Toolset)/Dest[1312 0 R/XYZ 0 786 0]/Prev 1553 0 R/Next 1564 0 R>>endobj
+1560 0 obj<</Parent 1559 0 R/Title(What is Imprints?)/Dest[1312 0 R/XYZ 0 685 0]/Next 1561 0 R>>endobj
+1561 0 obj<</Parent 1559 0 R/Title(Creating Printer Driver Packages)/Dest[1312 0 R/XYZ 0 560 0]/Prev 1560 0 R/Next 1562 0 R>>endobj
+1562 0 obj<</Parent 1559 0 R/Title(The Imprints server)/Dest[1312 0 R/XYZ 0 475 0]/Prev 1561 0 R/Next 1563 0 R>>endobj
+1563 0 obj<</Parent 1559 0 R/Title(The Installation Client)/Dest[1312 0 R/XYZ 0 377 0]/Prev 1562 0 R>>endobj
+1564 0 obj<</Parent 1551 0 R/Count -9/First 1565 0 R/Last 1573 0 R/Title(Diagnosis)/Dest[1314 0 R/XYZ 0 479 0]/Prev 1559 0 R>>endobj
+1565 0 obj<</Parent 1564 0 R/Title(Introduction)/Dest[1314 0 R/XYZ 0 459 0]/Next 1566 0 R>>endobj
+1566 0 obj<</Parent 1564 0 R/Title(Debugging printer problems)/Dest[1316 0 R/XYZ 0 503 0]/Prev 1565 0 R/Next 1567 0 R>>endobj
+1567 0 obj<</Parent 1564 0 R/Title(What printers do I have?)/Dest[1318 0 R/XYZ 0 718 0]/Prev 1566 0 R/Next 1568 0 R>>endobj
+1568 0 obj<</Parent 1564 0 R/Title(Setting up printcap and print servers)/Dest[1318 0 R/XYZ 0 532 0]/Prev 1567 0 R/Next 1569 0 R>>endobj
+1569 0 obj<</Parent 1564 0 R/Title(Job sent, no output)/Dest[1320 0 R/XYZ 0 771 0]/Prev 1568 0 R/Next 1570 0 R>>endobj
+1570 0 obj<</Parent 1564 0 R/Title(Job sent, strange output)/Dest[1320 0 R/XYZ 0 426 0]/Prev 1569 0 R/Next 1571 0 R>>endobj
+1571 0 obj<</Parent 1564 0 R/Title(Raw PostScript printed)/Dest[1322 0 R/XYZ 0 731 0]/Prev 1570 0 R/Next 1572 0 R>>endobj
+1572 0 obj<</Parent 1564 0 R/Title(Advanced Printing)/Dest[1322 0 R/XYZ 0 647 0]/Prev 1571 0 R/Next 1573 0 R>>endobj
+1573 0 obj<</Parent 1564 0 R/Title(Real debugging)/Dest[1322 0 R/XYZ 0 549 0]/Prev 1572 0 R>>endobj
+1574 0 obj<</Parent 1420 0 R/Count -7/First 1575 0 R/Last 1590 0 R/Title(Unified Logons between Windows NT and UNIX using Winbind)/Dest[1324 0 R/XYZ 0 786 0]/Prev 1551 0 R/Next 1591 0 R>>endobj
+1575 0 obj<</Parent 1574 0 R/Title(Abstract)/Dest[1324 0 R/XYZ 0 738 0]/Next 1576 0 R>>endobj
+1576 0 obj<</Parent 1574 0 R/Title(Introduction)/Dest[1324 0 R/XYZ 0 597 0]/Prev 1575 0 R/Next 1577 0 R>>endobj
+1577 0 obj<</Parent 1574 0 R/Count -1/First 1578 0 R/Last 1578 0 R/Title(What Winbind Provides)/Dest[1324 0 R/XYZ 0 284 0]/Prev 1576 0 R/Next 1579 0 R>>endobj
+1578 0 obj<</Parent 1577 0 R/Title(Target Uses)/Dest[1326 0 R/XYZ 0 613 0]>>endobj
+1579 0 obj<</Parent 1574 0 R/Count -5/First 1580 0 R/Last 1584 0 R/Title(How Winbind Works)/Dest[1326 0 R/XYZ 0 462 0]/Prev 1577 0 R/Next 1585 0 R>>endobj
+1580 0 obj<</Parent 1579 0 R/Title(Microsoft Remote Procedure Calls)/Dest[1326 0 R/XYZ 0 347 0]/Next 1581 0 R>>endobj
+1581 0 obj<</Parent 1579 0 R/Title(Name Service Switch)/Dest[1328 0 R/XYZ 0 786 0]/Prev 1580 0 R/Next 1582 0 R>>endobj
+1582 0 obj<</Parent 1579 0 R/Title(Pluggable Authentication Modules)/Dest[1328 0 R/XYZ 0 345 0]/Prev 1581 0 R/Next 1583 0 R>>endobj
+1583 0 obj<</Parent 1579 0 R/Title(User and Group ID Allocation)/Dest[1330 0 R/XYZ 0 718 0]/Prev 1582 0 R/Next 1584 0 R>>endobj
+1584 0 obj<</Parent 1579 0 R/Title(Result Caching)/Dest[1330 0 R/XYZ 0 541 0]/Prev 1583 0 R>>endobj
+1585 0 obj<</Parent 1574 0 R/Count -3/First 1586 0 R/Last 1588 0 R/Title(Installation and Configuration)/Dest[1330 0 R/XYZ 0 403 0]/Prev 1579 0 R/Next 1589 0 R>>endobj
+1586 0 obj<</Parent 1585 0 R/Title(Introduction)/Dest[1330 0 R/XYZ 0 262 0]/Next 1587 0 R>>endobj
+1587 0 obj<</Parent 1585 0 R/Title(Requirements)/Dest[1332 0 R/XYZ 0 652 0]/Prev 1586 0 R/Next 1588 0 R>>endobj
+1588 0 obj<</Parent 1585 0 R/Title(Testing Things Out)/Dest[1332 0 R/XYZ 0 383 0]/Prev 1587 0 R>>endobj
+1589 0 obj<</Parent 1574 0 R/Title(Limitations)/Dest[1346 0 R/XYZ 0 270 0]/Prev 1585 0 R/Next 1590 0 R>>endobj
+1590 0 obj<</Parent 1574 0 R/Title(Conclusion)/Dest[1348 0 R/XYZ 0 731 0]/Prev 1589 0 R>>endobj
+1591 0 obj<</Parent 1420 0 R/Count -4/First 1592 0 R/Last 1595 0 R/Title(Passdb MySQL plugin)/Dest[1350 0 R/XYZ 0 786 0]/Prev 1574 0 R/Next 1596 0 R>>endobj
+1592 0 obj<</Parent 1591 0 R/Title(Building)/Dest[1350 0 R/XYZ 0 762 0]/Next 1593 0 R>>endobj
+1593 0 obj<</Parent 1591 0 R/Title(Configuring)/Dest[1350 0 R/XYZ 0 647 0]/Prev 1592 0 R/Next 1594 0 R>>endobj
+1594 0 obj<</Parent 1591 0 R/Title(Using plaintext passwords or encrypted password)/Dest[1352 0 R/XYZ 0 564 0]/Prev 1593 0 R/Next 1595 0 R>>endobj
+1595 0 obj<</Parent 1591 0 R/Title(Getting non-column data from the table)/Dest[1352 0 R/XYZ 0 410 0]/Prev 1594 0 R>>endobj
+1596 0 obj<</Parent 1420 0 R/Count -2/First 1597 0 R/Last 1598 0 R/Title(Passdb XML plugin)/Dest[1354 0 R/XYZ 0 786 0]/Prev 1591 0 R/Next 1599 0 R>>endobj
+1597 0 obj<</Parent 1596 0 R/Title(Building)/Dest[1354 0 R/XYZ 0 762 0]/Next 1598 0 R>>endobj
+1598 0 obj<</Parent 1596 0 R/Title(Usage)/Dest[1354 0 R/XYZ 0 661 0]/Prev 1597 0 R>>endobj
+1599 0 obj<</Parent 1420 0 R/Count -3/First 1600 0 R/Last 1605 0 R/Title(Stackable VFS modules)/Dest[1356 0 R/XYZ 0 786 0]/Prev 1596 0 R/Next 1608 0 R>>endobj
+1600 0 obj<</Parent 1599 0 R/Title(Introduction and configuration)/Dest[1356 0 R/XYZ 0 762 0]/Next 1601 0 R>>endobj
+1601 0 obj<</Parent 1599 0 R/Count -3/First 1602 0 R/Last 1604 0 R/Title(Included modules)/Dest[1356 0 R/XYZ 0 435 0]/Prev 1600 0 R/Next 1605 0 R>>endobj
+1602 0 obj<</Parent 1601 0 R/Title(audit)/Dest[1356 0 R/XYZ 0 414 0]/Next 1603 0 R>>endobj
+1603 0 obj<</Parent 1601 0 R/Title(recycle)/Dest[1356 0 R/XYZ 0 265 0]/Prev 1602 0 R/Next 1604 0 R>>endobj
+1604 0 obj<</Parent 1601 0 R/Title(netatalk)/Dest[1358 0 R/XYZ 0 613 0]/Prev 1603 0 R>>endobj
+1605 0 obj<</Parent 1599 0 R/Count -2/First 1606 0 R/Last 1607 0 R/Title(VFS modules available elsewhere)/Dest[1358 0 R/XYZ 0 483 0]/Prev 1601 0 R>>endobj
+1606 0 obj<</Parent 1605 0 R/Title(DatabaseFS)/Dest[1358 0 R/XYZ 0 368 0]/Next 1607 0 R>>endobj
+1607 0 obj<</Parent 1605 0 R/Title(vscan)/Dest[1360 0 R/XYZ 0 786 0]/Prev 1606 0 R>>endobj
+1608 0 obj<</Parent 1420 0 R/Count -10/First 1609 0 R/Last 1620 0 R/Title(Storing Samba's User/Machine Account information in an LDAP Directory)/Dest[1362 0 R/XYZ 0 786 0]/Prev 1599 0 R/Next 1621 0 R>>endobj
+1609 0 obj<</Parent 1608 0 R/Title(Purpose)/Dest[1362 0 R/XYZ 0 738 0]/Next 1610 0 R>>endobj
+1610 0 obj<</Parent 1608 0 R/Title(Introduction)/Dest[1362 0 R/XYZ 0 465 0]/Prev 1609 0 R/Next 1611 0 R>>endobj
+1611 0 obj<</Parent 1608 0 R/Title(Supported LDAP Servers)/Dest[1364 0 R/XYZ 0 626 0]/Prev 1610 0 R/Next 1612 0 R>>endobj
+1612 0 obj<</Parent 1608 0 R/Title(Schema and Relationship to the RFC 2307 posixAccount)/Dest[1364 0 R/XYZ 0 524 0]/Prev 1611 0 R/Next 1613 0 R>>endobj
+1613 0 obj<</Parent 1608 0 R/Count -2/First 1614 0 R/Last 1615 0 R/Title(Configuring Samba with LDAP)/Dest[1366 0 R/XYZ 0 786 0]/Prev 1612 0 R/Next 1616 0 R>>endobj
+1614 0 obj<</Parent 1613 0 R/Title(OpenLDAP configuration)/Dest[1366 0 R/XYZ 0 766 0]/Next 1615 0 R>>endobj
+1615 0 obj<</Parent 1613 0 R/Title(Configuring Samba)/Dest[1366 0 R/XYZ 0 191 0]/Prev 1614 0 R>>endobj
+1616 0 obj<</Parent 1608 0 R/Title(Accounts and Groups management)/Dest[1368 0 R/XYZ 0 280 0]/Prev 1613 0 R/Next 1617 0 R>>endobj
+1617 0 obj<</Parent 1608 0 R/Title(Security and sambaAccount)/Dest[1370 0 R/XYZ 0 758 0]/Prev 1616 0 R/Next 1618 0 R>>endobj
+1618 0 obj<</Parent 1608 0 R/Title(LDAP specials attributes for sambaAccounts)/Dest[1370 0 R/XYZ 0 373 0]/Prev 1617 0 R/Next 1619 0 R>>endobj
+1619 0 obj<</Parent 1608 0 R/Title(Example LDIF Entries for a sambaAccount)/Dest[1372 0 R/XYZ 0 362 0]/Prev 1618 0 R/Next 1620 0 R>>endobj
+1620 0 obj<</Parent 1608 0 R/Title(Comments)/Dest[1374 0 R/XYZ 0 531 0]/Prev 1619 0 R>>endobj
+1621 0 obj<</Parent 1420 0 R/Count -2/First 1622 0 R/Last 1623 0 R/Title(HOWTO Access Samba source code via CVS)/Dest[1376 0 R/XYZ 0 786 0]/Prev 1608 0 R/Next 1626 0 R>>endobj
+1622 0 obj<</Parent 1621 0 R/Title(Introduction)/Dest[1376 0 R/XYZ 0 762 0]/Next 1623 0 R>>endobj
+1623 0 obj<</Parent 1621 0 R/Count -2/First 1624 0 R/Last 1625 0 R/Title(CVS Access to samba.org)/Dest[1376 0 R/XYZ 0 634 0]/Prev 1622 0 R>>endobj
+1624 0 obj<</Parent 1623 0 R/Title(Access via CVSweb)/Dest[1376 0 R/XYZ 0 546 0]/Next 1625 0 R>>endobj
+1625 0 obj<</Parent 1623 0 R/Title(Access via cvs)/Dest[1376 0 R/XYZ 0 435 0]/Prev 1624 0 R>>endobj
+1626 0 obj<</Parent 1420 0 R/Title(Group mapping HOWTO)/Dest[1380 0 R/XYZ 0 786 0]/Prev 1621 0 R/Next 1627 0 R>>endobj
+1627 0 obj<</Parent 1420 0 R/Count -10/First 1628 0 R/Last 1637 0 R/Title(Samba performance issues)/Dest[1382 0 R/XYZ 0 786 0]/Prev 1626 0 R/Next 1638 0 R>>endobj
+1628 0 obj<</Parent 1627 0 R/Title(Comparisons)/Dest[1382 0 R/XYZ 0 762 0]/Next 1629 0 R>>endobj
+1629 0 obj<</Parent 1627 0 R/Title(Socket options)/Dest[1382 0 R/XYZ 0 502 0]/Prev 1628 0 R/Next 1630 0 R>>endobj
+1630 0 obj<</Parent 1627 0 R/Title(Read size)/Dest[1382 0 R/XYZ 0 242 0]/Prev 1629 0 R/Next 1631 0 R>>endobj
+1631 0 obj<</Parent 1627 0 R/Title(Max xmit)/Dest[1384 0 R/XYZ 0 692 0]/Prev 1630 0 R/Next 1632 0 R>>endobj
+1632 0 obj<</Parent 1627 0 R/Title(Log level)/Dest[1384 0 R/XYZ 0 511 0]/Prev 1631 0 R/Next 1633 0 R>>endobj
+1633 0 obj<</Parent 1627 0 R/Title(Read raw)/Dest[1384 0 R/XYZ 0 436 0]/Prev 1632 0 R/Next 1634 0 R>>endobj
+1634 0 obj<</Parent 1627 0 R/Title(Write raw)/Dest[1384 0 R/XYZ 0 268 0]/Prev 1633 0 R/Next 1635 0 R>>endobj
+1635 0 obj<</Parent 1627 0 R/Title(Slow Clients)/Dest[1386 0 R/XYZ 0 786 0]/Prev 1634 0 R/Next 1636 0 R>>endobj
+1636 0 obj<</Parent 1627 0 R/Title(Slow Logins)/Dest[1386 0 R/XYZ 0 658 0]/Prev 1635 0 R/Next 1637 0 R>>endobj
+1637 0 obj<</Parent 1627 0 R/Title(Client tuning)/Dest[1386 0 R/XYZ 0 583 0]/Prev 1636 0 R>>endobj
+1638 0 obj<</Parent 1420 0 R/Title(IV. Appendixes)/Dest[1390 0 R/XYZ 0 786 0]/Prev 1627 0 R/Next 1639 0 R>>endobj
+1639 0 obj<</Parent 1420 0 R/Count -4/First 1640 0 R/Last 1643 0 R/Title(Portability)/Dest[1392 0 R/XYZ 0 786 0]/Prev 1638 0 R/Next 1644 0 R>>endobj
+1640 0 obj<</Parent 1639 0 R/Title(HPUX)/Dest[1392 0 R/XYZ 0 707 0]/Next 1641 0 R>>endobj
+1641 0 obj<</Parent 1639 0 R/Title(SCO Unix)/Dest[1392 0 R/XYZ 0 461 0]/Prev 1640 0 R/Next 1642 0 R>>endobj
+1642 0 obj<</Parent 1639 0 R/Title(DNIX)/Dest[1392 0 R/XYZ 0 346 0]/Prev 1641 0 R/Next 1643 0 R>>endobj
+1643 0 obj<</Parent 1639 0 R/Title(RedHat Linux Rembrandt-II)/Dest[1394 0 R/XYZ 0 269 0]/Prev 1642 0 R>>endobj
+1644 0 obj<</Parent 1420 0 R/Count -5/First 1645 0 R/Last 1657 0 R/Title(Samba and other CIFS clients)/Dest[1398 0 R/XYZ 0 786 0]/Prev 1639 0 R/Next 1658 0 R>>endobj
+1645 0 obj<</Parent 1644 0 R/Title(Macintosh clients?)/Dest[1398 0 R/XYZ 0 721 0]/Next 1646 0 R>>endobj
+1646 0 obj<</Parent 1644 0 R/Count -4/First 1647 0 R/Last 1650 0 R/Title(OS2 Client)/Dest[1398 0 R/XYZ 0 513 0]/Prev 1645 0 R/Next 1651 0 R>>endobj
+1647 0 obj<</Parent 1646 0 R/Title(How can I configure OS/2 Warp Connect or OS/2 Warp 4 as a client for Samba?)/Dest[1398 0 R/XYZ 0 493 0]/Next 1648 0 R>>endobj
+1648 0 obj<</Parent 1646 0 R/Title(How can I configure OS/2 Warp 3 \(not Connect\), OS/2 1.2, 1.3 or 2.x for Samba?)/Dest[1400 0 R/XYZ 0 786 0]/Prev 1647 0 R/Next 1649 0 R>>endobj
+1649 0 obj<</Parent 1646 0 R/Title(Are there any other issues when OS/2 \(any version\) is used as a client?)/Dest[1400 0 R/XYZ 0 573 0]/Prev 1648 0 R/Next 1650 0 R>>endobj
+1650 0 obj<</Parent 1646 0 R/Title(How do I get printer driver download working for OS/2 clients?)/Dest[1400 0 R/XYZ 0 475 0]/Prev 1649 0 R>>endobj
+1651 0 obj<</Parent 1644 0 R/Count -4/First 1652 0 R/Last 1655 0 R/Title(Windows for Workgroups)/Dest[1400 0 R/XYZ 0 218 0]/Prev 1646 0 R/Next 1656 0 R>>endobj
+1652 0 obj<</Parent 1651 0 R/Title(Use latest TCP/IP stack from Microsoft)/Dest[1400 0 R/XYZ 0 198 0]/Next 1653 0 R>>endobj
+1653 0 obj<</Parent 1651 0 R/Title(Delete .pwl files after password change)/Dest[1402 0 R/XYZ 0 705 0]/Prev 1652 0 R/Next 1654 0 R>>endobj
+1654 0 obj<</Parent 1651 0 R/Title(Configure WfW password handling)/Dest[1402 0 R/XYZ 0 554 0]/Prev 1653 0 R/Next 1655 0 R>>endobj
+1655 0 obj<</Parent 1651 0 R/Title(Case handling of passwords)/Dest[1402 0 R/XYZ 0 456 0]/Prev 1654 0 R>>endobj
+1656 0 obj<</Parent 1644 0 R/Title(Windows '95/'98)/Dest[1402 0 R/XYZ 0 371 0]/Prev 1651 0 R/Next 1657 0 R>>endobj
+1657 0 obj<</Parent 1644 0 R/Title(Windows 2000 Service Pack 2)/Dest[1404 0 R/XYZ 0 786 0]/Prev 1656 0 R>>endobj
+1658 0 obj<</Parent 1420 0 R/Count -6/First 1659 0 R/Last 1664 0 R/Title(Reporting Bugs)/Dest[1406 0 R/XYZ 0 786 0]/Prev 1644 0 R/Next 1665 0 R>>endobj
+1659 0 obj<</Parent 1658 0 R/Title(Introduction)/Dest[1406 0 R/XYZ 0 762 0]/Next 1660 0 R>>endobj
+1660 0 obj<</Parent 1658 0 R/Title(General info)/Dest[1406 0 R/XYZ 0 476 0]/Prev 1659 0 R/Next 1661 0 R>>endobj
+1661 0 obj<</Parent 1658 0 R/Title(Debug levels)/Dest[1406 0 R/XYZ 0 335 0]/Prev 1660 0 R/Next 1662 0 R>>endobj
+1662 0 obj<</Parent 1658 0 R/Title(Internal errors)/Dest[1408 0 R/XYZ 0 665 0]/Prev 1661 0 R/Next 1663 0 R>>endobj
+1663 0 obj<</Parent 1658 0 R/Title(Attaching to a running process)/Dest[1408 0 R/XYZ 0 313 0]/Prev 1662 0 R/Next 1664 0 R>>endobj
+1664 0 obj<</Parent 1658 0 R/Title(Patches)/Dest[1408 0 R/XYZ 0 211 0]/Prev 1663 0 R>>endobj
+1665 0 obj<</Parent 1420 0 R/Count -4/First 1666 0 R/Last 1680 0 R/Title(Diagnosing your samba server)/Dest[1410 0 R/XYZ 0 786 0]/Prev 1658 0 R>>endobj
+1666 0 obj<</Parent 1665 0 R/Title(Introduction)/Dest[1410 0 R/XYZ 0 762 0]/Next 1667 0 R>>endobj
+1667 0 obj<</Parent 1665 0 R/Title(Assumptions)/Dest[1410 0 R/XYZ 0 581 0]/Prev 1666 0 R/Next 1668 0 R>>endobj
+1668 0 obj<</Parent 1665 0 R/Count -11/First 1669 0 R/Last 1679 0 R/Title(Tests)/Dest[1410 0 R/XYZ 0 249 0]/Prev 1667 0 R/Next 1680 0 R>>endobj
+1669 0 obj<</Parent 1668 0 R/Title(Test 1)/Dest[1410 0 R/XYZ 0 229 0]/Next 1670 0 R>>endobj
+1670 0 obj<</Parent 1668 0 R/Title(Test 2)/Dest[1412 0 R/XYZ 0 786 0]/Prev 1669 0 R/Next 1671 0 R>>endobj
+1671 0 obj<</Parent 1668 0 R/Title(Test 3)/Dest[1412 0 R/XYZ 0 583 0]/Prev 1670 0 R/Next 1672 0 R>>endobj
+1672 0 obj<</Parent 1668 0 R/Title(Test 4)/Dest[1414 0 R/XYZ 0 652 0]/Prev 1671 0 R/Next 1673 0 R>>endobj
+1673 0 obj<</Parent 1668 0 R/Title(Test 5)/Dest[1414 0 R/XYZ 0 501 0]/Prev 1672 0 R/Next 1674 0 R>>endobj
+1674 0 obj<</Parent 1668 0 R/Title(Test 6)/Dest[1414 0 R/XYZ 0 377 0]/Prev 1673 0 R/Next 1675 0 R>>endobj
+1675 0 obj<</Parent 1668 0 R/Title(Test 7)/Dest[1416 0 R/XYZ 0 786 0]/Prev 1674 0 R/Next 1676 0 R>>endobj
+1676 0 obj<</Parent 1668 0 R/Title(Test 8)/Dest[1416 0 R/XYZ 0 424 0]/Prev 1675 0 R/Next 1677 0 R>>endobj
+1677 0 obj<</Parent 1668 0 R/Title(Test 9)/Dest[1418 0 R/XYZ 0 758 0]/Prev 1676 0 R/Next 1678 0 R>>endobj
+1678 0 obj<</Parent 1668 0 R/Title(Test 10)/Dest[1418 0 R/XYZ 0 567 0]/Prev 1677 0 R/Next 1679 0 R>>endobj
+1679 0 obj<</Parent 1668 0 R/Title(Test 11)/Dest[1418 0 R/XYZ 0 430 0]/Prev 1678 0 R>>endobj
+1680 0 obj<</Parent 1665 0 R/Title(Still having troubles?)/Dest[1418 0 R/XYZ 0 292 0]/Prev 1668 0 R>>endobj
+1681 0 obj<</Type/Catalog/Pages 1119 0 R/PageLayout/SinglePage/Outlines 1420 0 R/OpenAction[1136 0 R/XYZ null null 0]/PageMode/UseOutlines/PageLabels<</Nums[0<</P(title)>>1<</S/r>>8<</S/D/St 1/P()>>9<</S/D/St 2/P()>>13<</S/D/St 6/P()>>14<</S/D/St 7/P()>>15<</S/D/St 8/P()>>22<</S/D/St 15/P()>>31<</S/D/St 24/P()>>35<</S/D/St 28/P()>>38<</S/D/St 31/P()>>39<</S/D/St 32/P()>>40<</S/D/St 33/P()>>42<</S/D/St 35/P()>>59<</S/D/St 52/P()>>62<</S/D/St 55/P()>>65<</S/D/St 58/P()>>68<</S/D/St 61/P()>>69<</S/D/St 62/P()>>70<</S/D/St 63/P()>>81<</S/D/St 74/P()>>86<</S/D/St 79/P()>>89<</S/D/St 82/P()>>91<</S/D/St 84/P()>>102<</S/D/St 95/P()>>115<</S/D/St 108/P()>>117<</S/D/St 110/P()>>118<</S/D/St 111/P()>>121<</S/D/St 114/P()>>128<</S/D/St 121/P()>>130<</S/D/St 123/P()>>131<</S/D/St 124/P()>>135<</S/D/St 128/P()>>136<</S/D/St 129/P()>>139<</S/D/St 132/P()>>143<</S/D/St 136/P()>>145<</S/D/St 138/P()>>]>>>>endobj
xref
-0 1937
+0 1682
0000000000 65535 f
0000000015 00000 n
-0000000248 00000 n
-0000001814 00000 n
-0000001888 00000 n
-0000001967 00000 n
-0000002049 00000 n
-0000002135 00000 n
-0000002213 00000 n
-0000002290 00000 n
-0000002369 00000 n
-0000002453 00000 n
-0000002530 00000 n
-0000002612 00000 n
-0000002671 00000 n
-0000002773 00000 n
-0000002876 00000 n
-0000002978 00000 n
-0000003080 00000 n
-0000003182 00000 n
-0000003284 00000 n
-0000003387 00000 n
-0000003490 00000 n
-0000003593 00000 n
-0000003696 00000 n
-0000003799 00000 n
-0000003902 00000 n
-0000004005 00000 n
-0000004108 00000 n
-0000004211 00000 n
-0000004314 00000 n
-0000004417 00000 n
-0000004520 00000 n
-0000004623 00000 n
-0000004726 00000 n
-0000004829 00000 n
-0000004932 00000 n
-0000005035 00000 n
-0000005138 00000 n
-0000005240 00000 n
-0000005343 00000 n
-0000005446 00000 n
-0000005549 00000 n
-0000005652 00000 n
-0000005755 00000 n
-0000005858 00000 n
-0000005961 00000 n
-0000006064 00000 n
-0000006167 00000 n
-0000006270 00000 n
-0000006373 00000 n
-0000006476 00000 n
-0000006578 00000 n
-0000006681 00000 n
-0000006970 00000 n
-0000007072 00000 n
-0000007175 00000 n
-0000007278 00000 n
-0000007381 00000 n
-0000007484 00000 n
-0000007587 00000 n
-0000007690 00000 n
-0000007792 00000 n
-0000007895 00000 n
-0000007998 00000 n
-0000008101 00000 n
-0000008204 00000 n
-0000008307 00000 n
-0000008409 00000 n
-0000008511 00000 n
-0000008613 00000 n
-0000008716 00000 n
-0000008819 00000 n
-0000008922 00000 n
-0000009025 00000 n
-0000009128 00000 n
-0000009231 00000 n
-0000009334 00000 n
-0000009437 00000 n
-0000009540 00000 n
-0000009643 00000 n
-0000009746 00000 n
-0000009849 00000 n
-0000009952 00000 n
-0000010055 00000 n
-0000010157 00000 n
-0000010260 00000 n
-0000010363 00000 n
-0000010466 00000 n
-0000010569 00000 n
-0000010672 00000 n
-0000010775 00000 n
-0000010878 00000 n
-0000010981 00000 n
-0000011082 00000 n
-0000011183 00000 n
-0000011284 00000 n
-0000011594 00000 n
-0000011696 00000 n
-0000011799 00000 n
-0000011902 00000 n
-0000012006 00000 n
-0000012110 00000 n
-0000012214 00000 n
-0000012318 00000 n
-0000012422 00000 n
-0000012525 00000 n
-0000012629 00000 n
-0000012733 00000 n
-0000012837 00000 n
-0000012940 00000 n
-0000013043 00000 n
-0000013146 00000 n
-0000013250 00000 n
-0000013354 00000 n
-0000013458 00000 n
-0000013562 00000 n
-0000013666 00000 n
-0000013770 00000 n
-0000013874 00000 n
-0000013978 00000 n
-0000014082 00000 n
-0000014186 00000 n
-0000014290 00000 n
-0000014394 00000 n
-0000014498 00000 n
-0000014602 00000 n
-0000014706 00000 n
-0000014810 00000 n
-0000014914 00000 n
-0000015018 00000 n
-0000015121 00000 n
-0000015225 00000 n
-0000015329 00000 n
-0000015433 00000 n
-0000015537 00000 n
-0000015641 00000 n
-0000015745 00000 n
-0000015848 00000 n
-0000015950 00000 n
-0000016052 00000 n
+0000000250 00000 n
+0000001816 00000 n
+0000001890 00000 n
+0000001969 00000 n
+0000002051 00000 n
+0000002137 00000 n
+0000002215 00000 n
+0000002292 00000 n
+0000002371 00000 n
+0000002455 00000 n
+0000002532 00000 n
+0000002614 00000 n
+0000002673 00000 n
+0000002775 00000 n
+0000002878 00000 n
+0000002980 00000 n
+0000003082 00000 n
+0000003184 00000 n
+0000003286 00000 n
+0000003389 00000 n
+0000003492 00000 n
+0000003595 00000 n
+0000003698 00000 n
+0000003801 00000 n
+0000003904 00000 n
+0000004007 00000 n
+0000004110 00000 n
+0000004213 00000 n
+0000004316 00000 n
+0000004419 00000 n
+0000004522 00000 n
+0000004625 00000 n
+0000004728 00000 n
+0000004831 00000 n
+0000004934 00000 n
+0000005037 00000 n
+0000005140 00000 n
+0000005242 00000 n
+0000005345 00000 n
+0000005448 00000 n
+0000005551 00000 n
+0000005654 00000 n
+0000005757 00000 n
+0000005860 00000 n
+0000005963 00000 n
+0000006066 00000 n
+0000006169 00000 n
+0000006272 00000 n
+0000006375 00000 n
+0000006478 00000 n
+0000006580 00000 n
+0000006683 00000 n
+0000006785 00000 n
+0000006886 00000 n
+0000006987 00000 n
+0000007297 00000 n
+0000007399 00000 n
+0000007502 00000 n
+0000007605 00000 n
+0000007707 00000 n
+0000007810 00000 n
+0000007913 00000 n
+0000008016 00000 n
+0000008119 00000 n
+0000008222 00000 n
+0000008324 00000 n
+0000008426 00000 n
+0000008528 00000 n
+0000008630 00000 n
+0000008733 00000 n
+0000008836 00000 n
+0000008939 00000 n
+0000009042 00000 n
+0000009145 00000 n
+0000009248 00000 n
+0000009351 00000 n
+0000009454 00000 n
+0000009557 00000 n
+0000009660 00000 n
+0000009763 00000 n
+0000009866 00000 n
+0000009969 00000 n
+0000010072 00000 n
+0000010174 00000 n
+0000010277 00000 n
+0000010380 00000 n
+0000010483 00000 n
+0000010586 00000 n
+0000010689 00000 n
+0000010792 00000 n
+0000010895 00000 n
+0000010998 00000 n
+0000011100 00000 n
+0000011203 00000 n
+0000011305 00000 n
+0000011406 00000 n
+0000011507 00000 n
+0000011810 00000 n
+0000011912 00000 n
+0000012016 00000 n
+0000012120 00000 n
+0000012224 00000 n
+0000012328 00000 n
+0000012432 00000 n
+0000012535 00000 n
+0000012639 00000 n
+0000012743 00000 n
+0000012847 00000 n
+0000012950 00000 n
+0000013053 00000 n
+0000013156 00000 n
+0000013260 00000 n
+0000013364 00000 n
+0000013468 00000 n
+0000013572 00000 n
+0000013676 00000 n
+0000013780 00000 n
+0000013884 00000 n
+0000013988 00000 n
+0000014092 00000 n
+0000014196 00000 n
+0000014300 00000 n
+0000014404 00000 n
+0000014508 00000 n
+0000014612 00000 n
+0000014716 00000 n
+0000014820 00000 n
+0000014924 00000 n
+0000015028 00000 n
+0000015131 00000 n
+0000015235 00000 n
+0000015339 00000 n
+0000015443 00000 n
+0000015547 00000 n
+0000015651 00000 n
+0000015755 00000 n
+0000015859 00000 n
+0000015963 00000 n
+0000016066 00000 n
0000016410 00000 n
0000016513 00000 n
0000016617 00000 n
@@ -4301,102 +3779,102 @@ xref
0000019630 00000 n
0000019734 00000 n
0000019838 00000 n
-0000019941 00000 n
-0000020045 00000 n
-0000020149 00000 n
-0000020253 00000 n
-0000020357 00000 n
-0000020461 00000 n
-0000020565 00000 n
-0000020669 00000 n
-0000020772 00000 n
-0000020874 00000 n
-0000020976 00000 n
-0000021345 00000 n
-0000021448 00000 n
-0000021552 00000 n
-0000021656 00000 n
-0000021760 00000 n
-0000021864 00000 n
-0000021968 00000 n
-0000022072 00000 n
-0000022175 00000 n
-0000022279 00000 n
-0000022383 00000 n
-0000022487 00000 n
-0000022591 00000 n
-0000022694 00000 n
-0000022798 00000 n
-0000022902 00000 n
-0000023005 00000 n
-0000023109 00000 n
-0000023213 00000 n
-0000023317 00000 n
-0000023421 00000 n
-0000023525 00000 n
-0000023629 00000 n
-0000023733 00000 n
-0000023837 00000 n
-0000023941 00000 n
-0000024045 00000 n
-0000024149 00000 n
-0000024253 00000 n
-0000024356 00000 n
-0000024460 00000 n
-0000024564 00000 n
-0000024668 00000 n
-0000024772 00000 n
-0000024875 00000 n
-0000024978 00000 n
-0000025082 00000 n
-0000025186 00000 n
-0000025290 00000 n
-0000025394 00000 n
-0000025497 00000 n
-0000025599 00000 n
-0000025701 00000 n
-0000026054 00000 n
-0000026157 00000 n
-0000026261 00000 n
-0000026365 00000 n
-0000026469 00000 n
-0000026573 00000 n
-0000026677 00000 n
-0000026781 00000 n
-0000026885 00000 n
-0000026989 00000 n
-0000027093 00000 n
-0000027197 00000 n
-0000027301 00000 n
-0000027405 00000 n
-0000027509 00000 n
-0000027612 00000 n
-0000027715 00000 n
-0000027819 00000 n
-0000027923 00000 n
-0000028027 00000 n
-0000028131 00000 n
-0000028234 00000 n
-0000028338 00000 n
-0000028442 00000 n
-0000028546 00000 n
-0000028650 00000 n
-0000028754 00000 n
-0000028858 00000 n
-0000028962 00000 n
-0000029066 00000 n
-0000029170 00000 n
-0000029274 00000 n
-0000029378 00000 n
-0000029482 00000 n
-0000029586 00000 n
-0000029689 00000 n
-0000029793 00000 n
-0000029897 00000 n
-0000030001 00000 n
-0000030105 00000 n
-0000030209 00000 n
-0000030313 00000 n
+0000019942 00000 n
+0000020046 00000 n
+0000020150 00000 n
+0000020254 00000 n
+0000020358 00000 n
+0000020462 00000 n
+0000020566 00000 n
+0000020670 00000 n
+0000020774 00000 n
+0000020877 00000 n
+0000020979 00000 n
+0000021081 00000 n
+0000021458 00000 n
+0000021561 00000 n
+0000021665 00000 n
+0000021769 00000 n
+0000021872 00000 n
+0000021976 00000 n
+0000022080 00000 n
+0000022184 00000 n
+0000022288 00000 n
+0000022391 00000 n
+0000022495 00000 n
+0000022599 00000 n
+0000022702 00000 n
+0000022806 00000 n
+0000022910 00000 n
+0000023014 00000 n
+0000023118 00000 n
+0000023222 00000 n
+0000023326 00000 n
+0000023430 00000 n
+0000023534 00000 n
+0000023637 00000 n
+0000023741 00000 n
+0000023845 00000 n
+0000023949 00000 n
+0000024053 00000 n
+0000024157 00000 n
+0000024261 00000 n
+0000024365 00000 n
+0000024469 00000 n
+0000024573 00000 n
+0000024677 00000 n
+0000024781 00000 n
+0000024885 00000 n
+0000024988 00000 n
+0000025092 00000 n
+0000025196 00000 n
+0000025300 00000 n
+0000025404 00000 n
+0000025507 00000 n
+0000025836 00000 n
+0000025939 00000 n
+0000026043 00000 n
+0000026147 00000 n
+0000026251 00000 n
+0000026355 00000 n
+0000026459 00000 n
+0000026563 00000 n
+0000026667 00000 n
+0000026771 00000 n
+0000026875 00000 n
+0000026979 00000 n
+0000027082 00000 n
+0000027185 00000 n
+0000027289 00000 n
+0000027393 00000 n
+0000027497 00000 n
+0000027601 00000 n
+0000027704 00000 n
+0000027808 00000 n
+0000027912 00000 n
+0000028016 00000 n
+0000028120 00000 n
+0000028224 00000 n
+0000028328 00000 n
+0000028432 00000 n
+0000028536 00000 n
+0000028640 00000 n
+0000028744 00000 n
+0000028848 00000 n
+0000028952 00000 n
+0000029056 00000 n
+0000029159 00000 n
+0000029263 00000 n
+0000029367 00000 n
+0000029471 00000 n
+0000029575 00000 n
+0000029679 00000 n
+0000029783 00000 n
+0000029886 00000 n
+0000029990 00000 n
+0000030093 00000 n
+0000030195 00000 n
+0000030297 00000 n
0000030658 00000 n
0000030761 00000 n
0000030865 00000 n
@@ -4410,1661 +3888,1406 @@ xref
0000031697 00000 n
0000031801 00000 n
0000031905 00000 n
-0000032009 00000 n
-0000032113 00000 n
-0000032217 00000 n
-0000032321 00000 n
-0000032466 00000 n
-0000032519 00000 n
-0000032606 00000 n
-0000032660 00000 n
-0000032746 00000 n
-0000032813 00000 n
-0000032899 00000 n
-0000033002 00000 n
-0000033106 00000 n
-0000033210 00000 n
-0000033314 00000 n
-0000033418 00000 n
-0000033522 00000 n
-0000033626 00000 n
-0000033730 00000 n
-0000033834 00000 n
-0000033938 00000 n
-0000034042 00000 n
-0000034146 00000 n
-0000034250 00000 n
-0000034354 00000 n
-0000034458 00000 n
-0000034562 00000 n
-0000034666 00000 n
-0000034770 00000 n
-0000034874 00000 n
-0000034978 00000 n
-0000035082 00000 n
-0000035186 00000 n
-0000035290 00000 n
-0000035394 00000 n
-0000035498 00000 n
-0000035602 00000 n
-0000035706 00000 n
-0000035810 00000 n
-0000035914 00000 n
-0000036018 00000 n
-0000036122 00000 n
-0000036225 00000 n
-0000036327 00000 n
-0000036429 00000 n
-0000036742 00000 n
-0000036846 00000 n
-0000036950 00000 n
-0000037054 00000 n
-0000037157 00000 n
-0000037261 00000 n
-0000037365 00000 n
-0000037469 00000 n
-0000037573 00000 n
-0000037677 00000 n
-0000037781 00000 n
-0000037885 00000 n
-0000037989 00000 n
-0000038093 00000 n
-0000038197 00000 n
-0000038301 00000 n
-0000038405 00000 n
-0000038509 00000 n
-0000038613 00000 n
-0000038717 00000 n
-0000038821 00000 n
-0000038925 00000 n
-0000039029 00000 n
-0000039133 00000 n
-0000039237 00000 n
-0000039341 00000 n
-0000039445 00000 n
-0000039549 00000 n
-0000039653 00000 n
-0000039757 00000 n
-0000039861 00000 n
-0000039965 00000 n
-0000040069 00000 n
-0000040173 00000 n
-0000040276 00000 n
-0000040380 00000 n
-0000040484 00000 n
-0000040588 00000 n
-0000040692 00000 n
-0000040796 00000 n
-0000040900 00000 n
-0000041004 00000 n
-0000041108 00000 n
-0000041212 00000 n
-0000041316 00000 n
-0000041420 00000 n
-0000041524 00000 n
-0000041628 00000 n
-0000041732 00000 n
-0000041835 00000 n
-0000041937 00000 n
-0000042039 00000 n
-0000042464 00000 n
-0000042568 00000 n
-0000042672 00000 n
-0000042776 00000 n
-0000042880 00000 n
-0000042984 00000 n
-0000043088 00000 n
-0000043192 00000 n
-0000043296 00000 n
-0000043400 00000 n
-0000043504 00000 n
-0000043608 00000 n
-0000043712 00000 n
-0000043816 00000 n
-0000043920 00000 n
-0000044024 00000 n
-0000044128 00000 n
-0000044232 00000 n
-0000044336 00000 n
-0000044440 00000 n
-0000044544 00000 n
-0000044648 00000 n
-0000044752 00000 n
-0000044856 00000 n
-0000044960 00000 n
-0000045064 00000 n
-0000045168 00000 n
-0000045272 00000 n
-0000045376 00000 n
-0000045480 00000 n
-0000045584 00000 n
-0000045688 00000 n
-0000045792 00000 n
-0000045896 00000 n
-0000046000 00000 n
-0000046104 00000 n
-0000046208 00000 n
-0000046312 00000 n
-0000046416 00000 n
-0000046520 00000 n
-0000046624 00000 n
-0000046728 00000 n
-0000046832 00000 n
-0000046936 00000 n
-0000047040 00000 n
-0000047144 00000 n
-0000047248 00000 n
-0000047352 00000 n
-0000047456 00000 n
-0000047559 00000 n
-0000047661 00000 n
-0000047763 00000 n
-0000048188 00000 n
-0000048292 00000 n
-0000048396 00000 n
-0000048500 00000 n
-0000048604 00000 n
-0000048708 00000 n
-0000048812 00000 n
-0000048916 00000 n
-0000049020 00000 n
-0000049124 00000 n
-0000049228 00000 n
-0000049332 00000 n
-0000049435 00000 n
-0000049539 00000 n
-0000049643 00000 n
-0000049747 00000 n
-0000049851 00000 n
-0000049955 00000 n
-0000050059 00000 n
-0000050163 00000 n
-0000050267 00000 n
-0000050371 00000 n
-0000050475 00000 n
-0000050579 00000 n
-0000050683 00000 n
-0000050787 00000 n
-0000050891 00000 n
-0000050995 00000 n
-0000051099 00000 n
-0000051203 00000 n
-0000051307 00000 n
-0000051411 00000 n
-0000051515 00000 n
-0000051619 00000 n
-0000051723 00000 n
-0000051827 00000 n
-0000052124 00000 n
-0000052227 00000 n
-0000052331 00000 n
-0000052435 00000 n
-0000052539 00000 n
-0000052643 00000 n
-0000052747 00000 n
-0000052851 00000 n
-0000052955 00000 n
-0000053059 00000 n
-0000053163 00000 n
-0000053267 00000 n
-0000053371 00000 n
-0000053475 00000 n
-0000053579 00000 n
-0000053683 00000 n
-0000053787 00000 n
-0000053891 00000 n
-0000053995 00000 n
-0000054099 00000 n
-0000054202 00000 n
-0000054306 00000 n
-0000054410 00000 n
-0000054514 00000 n
-0000054618 00000 n
-0000054722 00000 n
-0000054826 00000 n
-0000054930 00000 n
-0000055034 00000 n
-0000055138 00000 n
-0000055242 00000 n
-0000055346 00000 n
-0000055450 00000 n
-0000055553 00000 n
-0000055657 00000 n
-0000055760 00000 n
-0000055864 00000 n
-0000055968 00000 n
-0000056072 00000 n
-0000056176 00000 n
-0000056280 00000 n
-0000056384 00000 n
-0000056486 00000 n
-0000056588 00000 n
-0000056690 00000 n
-0000057059 00000 n
-0000057163 00000 n
-0000057267 00000 n
-0000057371 00000 n
-0000057412 00000 n
-0000057465 00000 n
-0000057552 00000 n
-0000057577 00000 n
-0000057624 00000 n
-0000057711 00000 n
-0000057736 00000 n
-0000057839 00000 n
-0000057943 00000 n
+0000032018 00000 n
+0000032071 00000 n
+0000032158 00000 n
+0000032212 00000 n
+0000032298 00000 n
+0000032353 00000 n
+0000032440 00000 n
+0000032507 00000 n
+0000032593 00000 n
+0000032696 00000 n
+0000032800 00000 n
+0000032904 00000 n
+0000033008 00000 n
+0000033112 00000 n
+0000033216 00000 n
+0000033320 00000 n
+0000033424 00000 n
+0000033528 00000 n
+0000033632 00000 n
+0000033736 00000 n
+0000033840 00000 n
+0000033944 00000 n
+0000034048 00000 n
+0000034152 00000 n
+0000034256 00000 n
+0000034360 00000 n
+0000034464 00000 n
+0000034568 00000 n
+0000034672 00000 n
+0000034776 00000 n
+0000034880 00000 n
+0000034984 00000 n
+0000035088 00000 n
+0000035192 00000 n
+0000035296 00000 n
+0000035400 00000 n
+0000035504 00000 n
+0000035608 00000 n
+0000035712 00000 n
+0000035816 00000 n
+0000035919 00000 n
+0000036021 00000 n
+0000036123 00000 n
+0000036444 00000 n
+0000036548 00000 n
+0000036651 00000 n
+0000036755 00000 n
+0000036859 00000 n
+0000036963 00000 n
+0000037067 00000 n
+0000037171 00000 n
+0000037275 00000 n
+0000037379 00000 n
+0000037483 00000 n
+0000037587 00000 n
+0000037691 00000 n
+0000037795 00000 n
+0000037899 00000 n
+0000038003 00000 n
+0000038107 00000 n
+0000038211 00000 n
+0000038315 00000 n
+0000038419 00000 n
+0000038523 00000 n
+0000038627 00000 n
+0000038731 00000 n
+0000038835 00000 n
+0000038939 00000 n
+0000039043 00000 n
+0000039147 00000 n
+0000039251 00000 n
+0000039355 00000 n
+0000039459 00000 n
+0000039563 00000 n
+0000039667 00000 n
+0000039771 00000 n
+0000039874 00000 n
+0000039978 00000 n
+0000040082 00000 n
+0000040186 00000 n
+0000040290 00000 n
+0000040394 00000 n
+0000040498 00000 n
+0000040602 00000 n
+0000040706 00000 n
+0000040810 00000 n
+0000040914 00000 n
+0000041018 00000 n
+0000041122 00000 n
+0000041226 00000 n
+0000041330 00000 n
+0000041434 00000 n
+0000041537 00000 n
+0000041639 00000 n
+0000041741 00000 n
+0000042166 00000 n
+0000042270 00000 n
+0000042374 00000 n
+0000042478 00000 n
+0000042582 00000 n
+0000042686 00000 n
+0000042790 00000 n
+0000042894 00000 n
+0000042998 00000 n
+0000043102 00000 n
+0000043206 00000 n
+0000043310 00000 n
+0000043414 00000 n
+0000043518 00000 n
+0000043622 00000 n
+0000043726 00000 n
+0000043830 00000 n
+0000043934 00000 n
+0000044038 00000 n
+0000044142 00000 n
+0000044246 00000 n
+0000044350 00000 n
+0000044454 00000 n
+0000044558 00000 n
+0000044662 00000 n
+0000044766 00000 n
+0000044870 00000 n
+0000044974 00000 n
+0000045078 00000 n
+0000045182 00000 n
+0000045286 00000 n
+0000045390 00000 n
+0000045494 00000 n
+0000045598 00000 n
+0000045702 00000 n
+0000045806 00000 n
+0000045910 00000 n
+0000046014 00000 n
+0000046118 00000 n
+0000046222 00000 n
+0000046326 00000 n
+0000046430 00000 n
+0000046534 00000 n
+0000046638 00000 n
+0000046742 00000 n
+0000046846 00000 n
+0000046950 00000 n
+0000047054 00000 n
+0000047158 00000 n
+0000047261 00000 n
+0000047363 00000 n
+0000047465 00000 n
+0000047890 00000 n
+0000047994 00000 n
+0000048098 00000 n
+0000048202 00000 n
+0000048305 00000 n
+0000048409 00000 n
+0000048513 00000 n
+0000048617 00000 n
+0000048721 00000 n
+0000048825 00000 n
+0000048929 00000 n
+0000049033 00000 n
+0000049137 00000 n
+0000049241 00000 n
+0000049345 00000 n
+0000049449 00000 n
+0000049553 00000 n
+0000049657 00000 n
+0000049761 00000 n
+0000049865 00000 n
+0000049969 00000 n
+0000050073 00000 n
+0000050177 00000 n
+0000050281 00000 n
+0000050385 00000 n
+0000050489 00000 n
+0000050593 00000 n
+0000050697 00000 n
+0000050930 00000 n
+0000051033 00000 n
+0000051136 00000 n
+0000051239 00000 n
+0000051342 00000 n
+0000051391 00000 n
+0000051444 00000 n
+0000051531 00000 n
+0000051556 00000 n
+0000051603 00000 n
+0000051690 00000 n
+0000051715 00000 n
+0000051818 00000 n
+0000051921 00000 n
+0000052024 00000 n
+0000052127 00000 n
+0000052230 00000 n
+0000052287 00000 n
+0000052335 00000 n
+0000052422 00000 n
+0000052470 00000 n
+0000052557 00000 n
+0000052607 00000 n
+0000052694 00000 n
+0000052742 00000 n
+0000052829 00000 n
+0000052878 00000 n
+0000052926 00000 n
+0000053013 00000 n
+0000053061 00000 n
+0000053146 00000 n
+0000053191 00000 n
+0000053277 00000 n
+0000053320 00000 n
+0000053406 00000 n
+0000053447 00000 n
+0000053533 00000 n
+0000053582 00000 n
+0000053668 00000 n
+0000053714 00000 n
+0000053800 00000 n
+0000053845 00000 n
+0000053931 00000 n
+0000053983 00000 n
+0000054069 00000 n
+0000054119 00000 n
+0000054205 00000 n
+0000054251 00000 n
+0000054337 00000 n
+0000054380 00000 n
+0000054466 00000 n
+0000054510 00000 n
+0000054596 00000 n
+0000054639 00000 n
+0000054725 00000 n
+0000054770 00000 n
+0000054856 00000 n
+0000054894 00000 n
+0000054980 00000 n
+0000055022 00000 n
+0000055108 00000 n
+0000055151 00000 n
+0000055237 00000 n
+0000055275 00000 n
+0000055361 00000 n
+0000055403 00000 n
+0000055489 00000 n
+0000055533 00000 n
+0000055619 00000 n
+0000055666 00000 n
+0000055752 00000 n
+0000055800 00000 n
+0000055885 00000 n
+0000056086 00000 n
+0000056136 00000 n
+0000056223 00000 n
+0000056273 00000 n
+0000056359 00000 n
+0000056392 00000 n
+0000056441 00000 n
+0000056527 00000 n
+0000056574 00000 n
+0000056661 00000 n
+0000056694 00000 n
+0000056809 00000 n
+0000056896 00000 n
+0000056978 00000 n
+0000057065 00000 n
+0000057150 00000 n
+0000057237 00000 n
+0000057278 00000 n
+0000057333 00000 n
+0000057420 00000 n
+0000057476 00000 n
+0000057563 00000 n
+0000057596 00000 n
+0000057644 00000 n
+0000057731 00000 n
+0000057805 00000 n
+0000057892 00000 n
+0000057960 00000 n
0000058047 00000 n
-0000058151 00000 n
-0000058255 00000 n
-0000058359 00000 n
-0000058463 00000 n
-0000058567 00000 n
-0000058671 00000 n
-0000058775 00000 n
-0000058879 00000 n
-0000058983 00000 n
+0000058101 00000 n
+0000058188 00000 n
+0000058256 00000 n
+0000058343 00000 n
+0000058417 00000 n
+0000058504 00000 n
+0000058552 00000 n
+0000058639 00000 n
+0000058696 00000 n
+0000058783 00000 n
+0000058864 00000 n
+0000058919 00000 n
+0000059006 00000 n
0000059087 00000 n
-0000059191 00000 n
-0000059295 00000 n
-0000059398 00000 n
-0000059502 00000 n
-0000059606 00000 n
-0000059710 00000 n
-0000059814 00000 n
-0000059918 00000 n
-0000060022 00000 n
-0000060126 00000 n
-0000060230 00000 n
-0000060333 00000 n
-0000060437 00000 n
-0000060541 00000 n
-0000060645 00000 n
-0000060749 00000 n
-0000060853 00000 n
-0000060957 00000 n
-0000061061 00000 n
-0000061165 00000 n
-0000061269 00000 n
-0000061372 00000 n
-0000061476 00000 n
-0000061580 00000 n
-0000061684 00000 n
-0000062005 00000 n
-0000062053 00000 n
-0000062140 00000 n
-0000062188 00000 n
-0000062275 00000 n
-0000062325 00000 n
-0000062412 00000 n
-0000062460 00000 n
-0000062547 00000 n
-0000062596 00000 n
-0000062644 00000 n
-0000062731 00000 n
-0000062779 00000 n
-0000062864 00000 n
-0000062909 00000 n
-0000062995 00000 n
-0000063038 00000 n
-0000063124 00000 n
-0000063165 00000 n
-0000063251 00000 n
-0000063300 00000 n
-0000063386 00000 n
-0000063432 00000 n
-0000063518 00000 n
-0000063563 00000 n
-0000063649 00000 n
-0000063701 00000 n
-0000063787 00000 n
-0000063837 00000 n
-0000063923 00000 n
-0000063969 00000 n
-0000064055 00000 n
-0000064098 00000 n
-0000064184 00000 n
-0000064228 00000 n
-0000064314 00000 n
-0000064357 00000 n
-0000064443 00000 n
-0000064488 00000 n
-0000064574 00000 n
-0000064612 00000 n
-0000064698 00000 n
-0000064740 00000 n
-0000064826 00000 n
-0000064869 00000 n
-0000064955 00000 n
-0000064993 00000 n
-0000065079 00000 n
-0000065121 00000 n
-0000065207 00000 n
-0000065251 00000 n
-0000065337 00000 n
-0000065384 00000 n
-0000065470 00000 n
-0000065518 00000 n
-0000065603 00000 n
-0000065804 00000 n
-0000065854 00000 n
-0000065941 00000 n
-0000065991 00000 n
-0000066077 00000 n
-0000066110 00000 n
-0000066159 00000 n
-0000066245 00000 n
-0000066292 00000 n
-0000066379 00000 n
-0000066412 00000 n
-0000066527 00000 n
-0000066614 00000 n
-0000066696 00000 n
-0000066783 00000 n
-0000066868 00000 n
-0000066955 00000 n
-0000066996 00000 n
-0000067051 00000 n
-0000067138 00000 n
-0000067194 00000 n
-0000067281 00000 n
-0000067314 00000 n
-0000067362 00000 n
-0000067449 00000 n
-0000067523 00000 n
-0000067610 00000 n
-0000067678 00000 n
-0000067765 00000 n
-0000067819 00000 n
-0000067906 00000 n
-0000067974 00000 n
-0000068061 00000 n
-0000068135 00000 n
-0000068222 00000 n
-0000068270 00000 n
-0000068357 00000 n
-0000068414 00000 n
-0000068501 00000 n
-0000068582 00000 n
-0000068637 00000 n
-0000068724 00000 n
-0000068805 00000 n
-0000068892 00000 n
-0000068925 00000 n
-0000068978 00000 n
-0000069065 00000 n
-0000069090 00000 n
-0000069139 00000 n
-0000069226 00000 n
-0000069274 00000 n
-0000069361 00000 n
-0000069403 00000 n
-0000069489 00000 n
-0000069530 00000 n
-0000069573 00000 n
-0000069660 00000 n
-0000069710 00000 n
-0000069797 00000 n
-0000069845 00000 n
-0000069932 00000 n
-0000069986 00000 n
-0000070071 00000 n
-0000070120 00000 n
-0000070165 00000 n
-0000070252 00000 n
-0000070309 00000 n
-0000070396 00000 n
-0000070492 00000 n
-0000070578 00000 n
-0000070619 00000 n
-0000070722 00000 n
-0000070826 00000 n
-0000070930 00000 n
-0000071034 00000 n
-0000071138 00000 n
-0000071242 00000 n
-0000071346 00000 n
-0000071450 00000 n
-0000071554 00000 n
-0000071658 00000 n
-0000071762 00000 n
-0000071866 00000 n
-0000071970 00000 n
-0000072074 00000 n
-0000072178 00000 n
-0000072282 00000 n
-0000072386 00000 n
-0000072490 00000 n
-0000072594 00000 n
-0000072697 00000 n
-0000072801 00000 n
-0000072905 00000 n
-0000073009 00000 n
-0000073113 00000 n
-0000073217 00000 n
-0000073321 00000 n
-0000073425 00000 n
-0000073529 00000 n
-0000073633 00000 n
-0000073736 00000 n
-0000073840 00000 n
-0000073944 00000 n
-0000074048 00000 n
-0000074151 00000 n
-0000074255 00000 n
-0000074359 00000 n
-0000074462 00000 n
-0000074566 00000 n
-0000074670 00000 n
-0000074774 00000 n
-0000074878 00000 n
-0000074981 00000 n
-0000075083 00000 n
-0000075185 00000 n
-0000075554 00000 n
-0000075658 00000 n
-0000075762 00000 n
-0000075866 00000 n
-0000075970 00000 n
-0000076074 00000 n
-0000076178 00000 n
-0000076282 00000 n
-0000076386 00000 n
+0000059174 00000 n
+0000059207 00000 n
+0000059260 00000 n
+0000059347 00000 n
+0000059372 00000 n
+0000059421 00000 n
+0000059508 00000 n
+0000059556 00000 n
+0000059643 00000 n
+0000059685 00000 n
+0000059771 00000 n
+0000059812 00000 n
+0000059855 00000 n
+0000059942 00000 n
+0000059992 00000 n
+0000060079 00000 n
+0000060127 00000 n
+0000060214 00000 n
+0000060268 00000 n
+0000060353 00000 n
+0000060402 00000 n
+0000060447 00000 n
+0000060534 00000 n
+0000060591 00000 n
+0000060678 00000 n
+0000060774 00000 n
+0000060860 00000 n
+0000060901 00000 n
+0000061004 00000 n
+0000061107 00000 n
+0000061210 00000 n
+0000061313 00000 n
+0000061416 00000 n
+0000061519 00000 n
+0000061622 00000 n
+0000061725 00000 n
+0000061828 00000 n
+0000061931 00000 n
+0000062034 00000 n
+0000062137 00000 n
+0000062240 00000 n
+0000062361 00000 n
+0000062409 00000 n
+0000062496 00000 n
+0000062543 00000 n
+0000062629 00000 n
+0000062676 00000 n
+0000062762 00000 n
+0000062803 00000 n
+0000062848 00000 n
+0000062935 00000 n
+0000062980 00000 n
+0000063066 00000 n
+0000063099 00000 n
+0000063145 00000 n
+0000063232 00000 n
+0000063257 00000 n
+0000063303 00000 n
+0000063390 00000 n
+0000063436 00000 n
+0000063521 00000 n
+0000063565 00000 n
+0000063652 00000 n
+0000063703 00000 n
+0000063790 00000 n
+0000063839 00000 n
+0000063926 00000 n
+0000063974 00000 n
+0000064060 00000 n
+0000064125 00000 n
+0000064180 00000 n
+0000064265 00000 n
+0000064290 00000 n
+0000064343 00000 n
+0000064430 00000 n
+0000064480 00000 n
+0000064567 00000 n
+0000064600 00000 n
+0000064719 00000 n
+0000064805 00000 n
+0000064848 00000 n
+0000064935 00000 n
+0000064978 00000 n
+0000065065 00000 n
+0000065106 00000 n
+0000065169 00000 n
+0000065256 00000 n
+0000065314 00000 n
+0000065401 00000 n
+0000065495 00000 n
+0000065581 00000 n
+0000065622 00000 n
+0000065665 00000 n
+0000065751 00000 n
+0000065799 00000 n
+0000065886 00000 n
+0000065927 00000 n
+0000066014 00000 n
+0000066058 00000 n
+0000066145 00000 n
+0000066189 00000 n
+0000066275 00000 n
+0000066332 00000 n
+0000066378 00000 n
+0000066465 00000 n
+0000066514 00000 n
+0000066600 00000 n
+0000066633 00000 n
+0000066687 00000 n
+0000066774 00000 n
+0000066825 00000 n
+0000066912 00000 n
+0000066963 00000 n
+0000067049 00000 n
+0000067103 00000 n
+0000067190 00000 n
+0000067240 00000 n
+0000067327 00000 n
+0000067384 00000 n
+0000067434 00000 n
+0000067521 00000 n
+0000067571 00000 n
+0000067657 00000 n
+0000067690 00000 n
+0000067754 00000 n
+0000067841 00000 n
+0000067866 00000 n
+0000067928 00000 n
+0000068015 00000 n
+0000068040 00000 n
+0000068089 00000 n
+0000068176 00000 n
+0000068201 00000 n
+0000068249 00000 n
+0000068336 00000 n
+0000068386 00000 n
+0000068473 00000 n
+0000068517 00000 n
+0000068604 00000 n
+0000068648 00000 n
+0000068735 00000 n
+0000068785 00000 n
+0000068871 00000 n
+0000068921 00000 n
+0000069006 00000 n
+0000069055 00000 n
+0000069140 00000 n
+0000069213 00000 n
+0000069260 00000 n
+0000069347 00000 n
+0000069372 00000 n
+0000069461 00000 n
+0000069547 00000 n
+0000069610 00000 n
+0000069696 00000 n
+0000069729 00000 n
+0000069790 00000 n
+0000069876 00000 n
+0000069901 00000 n
+0000069957 00000 n
+0000070044 00000 n
+0000070113 00000 n
+0000070200 00000 n
+0000070251 00000 n
+0000070338 00000 n
+0000070423 00000 n
+0000070510 00000 n
+0000070566 00000 n
+0000070653 00000 n
+0000070703 00000 n
+0000070790 00000 n
+0000070855 00000 n
+0000070907 00000 n
+0000070994 00000 n
+0000071050 00000 n
+0000071137 00000 n
+0000071185 00000 n
+0000071272 00000 n
+0000071320 00000 n
+0000071407 00000 n
+0000071456 00000 n
+0000071497 00000 n
+0000071584 00000 n
+0000071628 00000 n
+0000071715 00000 n
+0000071760 00000 n
+0000071847 00000 n
+0000071891 00000 n
+0000071978 00000 n
+0000072022 00000 n
+0000072109 00000 n
+0000072151 00000 n
+0000072238 00000 n
+0000072286 00000 n
+0000072373 00000 n
+0000072446 00000 n
+0000072494 00000 n
+0000072580 00000 n
+0000072605 00000 n
+0000072658 00000 n
+0000072744 00000 n
+0000072769 00000 n
+0000072823 00000 n
+0000072910 00000 n
+0000072935 00000 n
+0000072998 00000 n
+0000073085 00000 n
+0000073148 00000 n
+0000073235 00000 n
+0000073289 00000 n
+0000073376 00000 n
+0000073417 00000 n
+0000073520 00000 n
+0000073623 00000 n
+0000073726 00000 n
+0000073829 00000 n
+0000073878 00000 n
+0000073933 00000 n
+0000074019 00000 n
+0000074087 00000 n
+0000074173 00000 n
+0000074248 00000 n
+0000074335 00000 n
+0000074405 00000 n
+0000074491 00000 n
+0000074570 00000 n
+0000074657 00000 n
+0000074714 00000 n
+0000074796 00000 n
+0000074882 00000 n
+0000074957 00000 n
+0000075044 00000 n
+0000075117 00000 n
+0000075204 00000 n
+0000075282 00000 n
+0000075369 00000 n
+0000075418 00000 n
+0000075466 00000 n
+0000075553 00000 n
+0000075578 00000 n
+0000075626 00000 n
+0000075713 00000 n
+0000075738 00000 n
+0000075786 00000 n
+0000075873 00000 n
+0000075937 00000 n
+0000076024 00000 n
+0000076079 00000 n
+0000076166 00000 n
+0000076213 00000 n
+0000076300 00000 n
+0000076349 00000 n
+0000076403 00000 n
0000076490 00000 n
-0000076594 00000 n
+0000076544 00000 n
+0000076631 00000 n
+0000076664 00000 n
0000076698 00000 n
-0000076802 00000 n
-0000076906 00000 n
-0000077010 00000 n
-0000077114 00000 n
-0000077217 00000 n
-0000077321 00000 n
-0000077425 00000 n
-0000077528 00000 n
-0000077632 00000 n
-0000077736 00000 n
-0000077840 00000 n
-0000077944 00000 n
-0000078048 00000 n
-0000078152 00000 n
-0000078256 00000 n
-0000078360 00000 n
-0000078464 00000 n
-0000078568 00000 n
-0000078672 00000 n
-0000078776 00000 n
-0000078880 00000 n
-0000078984 00000 n
-0000079088 00000 n
-0000079192 00000 n
-0000079295 00000 n
-0000079399 00000 n
-0000079503 00000 n
-0000079607 00000 n
-0000079711 00000 n
-0000079814 00000 n
-0000079918 00000 n
-0000080022 00000 n
-0000080125 00000 n
-0000080229 00000 n
-0000080333 00000 n
-0000080437 00000 n
-0000080541 00000 n
-0000080644 00000 n
-0000080746 00000 n
-0000080848 00000 n
-0000081273 00000 n
-0000081377 00000 n
-0000081481 00000 n
-0000081585 00000 n
-0000081689 00000 n
-0000081793 00000 n
-0000081896 00000 n
-0000082000 00000 n
-0000082104 00000 n
-0000082208 00000 n
-0000082312 00000 n
-0000082415 00000 n
-0000082518 00000 n
-0000082622 00000 n
-0000082726 00000 n
-0000082830 00000 n
-0000082934 00000 n
-0000083038 00000 n
-0000083142 00000 n
-0000083246 00000 n
-0000083350 00000 n
-0000083454 00000 n
+0000076732 00000 n
+0000081490 00000 n
+0000081534 00000 n
+0000081578 00000 n
+0000081622 00000 n
+0000081666 00000 n
+0000081710 00000 n
+0000081754 00000 n
+0000081798 00000 n
+0000081842 00000 n
+0000081886 00000 n
+0000081930 00000 n
+0000081974 00000 n
+0000082018 00000 n
+0000082062 00000 n
+0000082106 00000 n
+0000082150 00000 n
+0000082194 00000 n
+0000082238 00000 n
+0000082282 00000 n
+0000082326 00000 n
+0000082370 00000 n
+0000082414 00000 n
+0000082458 00000 n
+0000082502 00000 n
+0000082546 00000 n
+0000082590 00000 n
+0000082634 00000 n
+0000082678 00000 n
+0000082722 00000 n
+0000082766 00000 n
+0000082810 00000 n
+0000082854 00000 n
+0000082898 00000 n
+0000082942 00000 n
+0000082986 00000 n
+0000083030 00000 n
+0000083074 00000 n
+0000083118 00000 n
+0000083162 00000 n
+0000083206 00000 n
+0000083250 00000 n
+0000083294 00000 n
+0000083338 00000 n
+0000083382 00000 n
+0000083426 00000 n
+0000083470 00000 n
+0000083514 00000 n
0000083558 00000 n
-0000083662 00000 n
-0000083766 00000 n
-0000083870 00000 n
-0000083974 00000 n
-0000084078 00000 n
-0000084182 00000 n
-0000084286 00000 n
-0000084390 00000 n
-0000084494 00000 n
-0000084598 00000 n
-0000084871 00000 n
-0000084919 00000 n
-0000085006 00000 n
-0000085053 00000 n
-0000085139 00000 n
+0000083602 00000 n
+0000083646 00000 n
+0000083690 00000 n
+0000083734 00000 n
+0000083778 00000 n
+0000083822 00000 n
+0000083866 00000 n
+0000083910 00000 n
+0000083954 00000 n
+0000083998 00000 n
+0000084042 00000 n
+0000084086 00000 n
+0000084130 00000 n
+0000084174 00000 n
+0000084218 00000 n
+0000084262 00000 n
+0000084306 00000 n
+0000084350 00000 n
+0000084394 00000 n
+0000084438 00000 n
+0000084482 00000 n
+0000084526 00000 n
+0000084570 00000 n
+0000084614 00000 n
+0000084658 00000 n
+0000084702 00000 n
+0000084746 00000 n
+0000084790 00000 n
+0000084834 00000 n
+0000084878 00000 n
+0000084922 00000 n
+0000084966 00000 n
+0000085010 00000 n
+0000085054 00000 n
+0000085098 00000 n
+0000085142 00000 n
0000085186 00000 n
-0000085272 00000 n
-0000085313 00000 n
-0000085358 00000 n
-0000085445 00000 n
-0000085490 00000 n
-0000085576 00000 n
-0000085609 00000 n
-0000085655 00000 n
-0000085742 00000 n
-0000085767 00000 n
-0000085813 00000 n
-0000085900 00000 n
-0000085946 00000 n
-0000086031 00000 n
-0000086075 00000 n
-0000086162 00000 n
-0000086213 00000 n
-0000086300 00000 n
-0000086349 00000 n
-0000086436 00000 n
-0000086484 00000 n
-0000086570 00000 n
-0000086635 00000 n
-0000086690 00000 n
-0000086776 00000 n
-0000086801 00000 n
-0000086854 00000 n
-0000086941 00000 n
-0000086991 00000 n
+0000085230 00000 n
+0000085274 00000 n
+0000085318 00000 n
+0000085362 00000 n
+0000085406 00000 n
+0000085450 00000 n
+0000085494 00000 n
+0000085538 00000 n
+0000085582 00000 n
+0000085626 00000 n
+0000085670 00000 n
+0000085714 00000 n
+0000085758 00000 n
+0000085802 00000 n
+0000085846 00000 n
+0000085890 00000 n
+0000085934 00000 n
+0000085978 00000 n
+0000086022 00000 n
+0000086066 00000 n
+0000086110 00000 n
+0000086154 00000 n
+0000086198 00000 n
+0000086242 00000 n
+0000086286 00000 n
+0000086330 00000 n
+0000086374 00000 n
+0000086418 00000 n
+0000086462 00000 n
+0000086506 00000 n
+0000086550 00000 n
+0000086594 00000 n
+0000086638 00000 n
+0000086682 00000 n
+0000086726 00000 n
+0000086770 00000 n
+0000086814 00000 n
+0000086858 00000 n
+0000086902 00000 n
+0000086946 00000 n
+0000086990 00000 n
+0000087034 00000 n
0000087078 00000 n
-0000087111 00000 n
-0000087230 00000 n
-0000087316 00000 n
-0000087359 00000 n
-0000087446 00000 n
-0000087489 00000 n
-0000087576 00000 n
-0000087617 00000 n
-0000087680 00000 n
-0000087767 00000 n
-0000087825 00000 n
-0000087912 00000 n
-0000088006 00000 n
-0000088092 00000 n
-0000088133 00000 n
-0000088176 00000 n
-0000088262 00000 n
+0000087122 00000 n
+0000087166 00000 n
+0000087210 00000 n
+0000087254 00000 n
+0000087298 00000 n
+0000087342 00000 n
+0000087386 00000 n
+0000087430 00000 n
+0000087474 00000 n
+0000087518 00000 n
+0000087562 00000 n
+0000087606 00000 n
+0000087650 00000 n
+0000087694 00000 n
+0000087738 00000 n
+0000087782 00000 n
+0000087826 00000 n
+0000087870 00000 n
+0000087914 00000 n
+0000087958 00000 n
+0000088002 00000 n
+0000088046 00000 n
+0000088090 00000 n
+0000088134 00000 n
+0000088178 00000 n
+0000088222 00000 n
+0000088266 00000 n
0000088310 00000 n
-0000088397 00000 n
-0000088438 00000 n
-0000088525 00000 n
-0000088569 00000 n
-0000088656 00000 n
-0000088700 00000 n
-0000088786 00000 n
-0000088843 00000 n
-0000088889 00000 n
-0000088976 00000 n
-0000089025 00000 n
-0000089111 00000 n
-0000089144 00000 n
-0000089198 00000 n
-0000089285 00000 n
-0000089336 00000 n
-0000089423 00000 n
-0000089474 00000 n
-0000089560 00000 n
-0000089614 00000 n
-0000089701 00000 n
-0000089751 00000 n
-0000089838 00000 n
-0000089895 00000 n
-0000089945 00000 n
-0000090032 00000 n
-0000090082 00000 n
-0000090168 00000 n
-0000090201 00000 n
-0000090265 00000 n
-0000090352 00000 n
-0000090377 00000 n
-0000090419 00000 n
-0000090505 00000 n
-0000090556 00000 n
-0000090643 00000 n
-0000090690 00000 n
-0000090777 00000 n
-0000090818 00000 n
-0000090880 00000 n
-0000090967 00000 n
-0000090992 00000 n
-0000091041 00000 n
-0000091128 00000 n
-0000091153 00000 n
-0000091201 00000 n
-0000091288 00000 n
-0000091338 00000 n
-0000091424 00000 n
-0000091468 00000 n
-0000091554 00000 n
-0000091598 00000 n
-0000091684 00000 n
-0000091734 00000 n
-0000091820 00000 n
-0000091870 00000 n
-0000091955 00000 n
-0000092004 00000 n
-0000092088 00000 n
-0000092135 00000 n
-0000092219 00000 n
-0000092300 00000 n
-0000092356 00000 n
-0000092443 00000 n
-0000092512 00000 n
-0000092599 00000 n
-0000092650 00000 n
-0000092737 00000 n
-0000092824 00000 n
-0000092911 00000 n
-0000092967 00000 n
-0000093054 00000 n
-0000093104 00000 n
-0000093191 00000 n
-0000093256 00000 n
-0000093308 00000 n
-0000093395 00000 n
-0000093451 00000 n
-0000093538 00000 n
-0000093586 00000 n
-0000093673 00000 n
-0000093721 00000 n
-0000093808 00000 n
-0000093857 00000 n
-0000093898 00000 n
-0000093983 00000 n
-0000094008 00000 n
-0000094052 00000 n
-0000094139 00000 n
-0000094184 00000 n
-0000094271 00000 n
-0000094315 00000 n
-0000094402 00000 n
-0000094446 00000 n
-0000094533 00000 n
-0000094575 00000 n
-0000094662 00000 n
-0000094710 00000 n
-0000094797 00000 n
-0000094862 00000 n
-0000094910 00000 n
-0000094996 00000 n
-0000095021 00000 n
-0000095074 00000 n
-0000095160 00000 n
-0000095185 00000 n
-0000095239 00000 n
-0000095326 00000 n
-0000095351 00000 n
-0000095414 00000 n
-0000095501 00000 n
-0000095564 00000 n
-0000095651 00000 n
-0000095705 00000 n
-0000095792 00000 n
-0000095833 00000 n
-0000095936 00000 n
-0000096040 00000 n
-0000096144 00000 n
-0000096248 00000 n
-0000096352 00000 n
-0000096455 00000 n
-0000096559 00000 n
-0000096663 00000 n
-0000096767 00000 n
-0000096871 00000 n
-0000096975 00000 n
-0000097079 00000 n
-0000097184 00000 n
-0000097289 00000 n
-0000097394 00000 n
-0000097499 00000 n
-0000097604 00000 n
-0000097709 00000 n
-0000097814 00000 n
-0000097918 00000 n
-0000098023 00000 n
-0000098128 00000 n
-0000098233 00000 n
-0000098338 00000 n
-0000098443 00000 n
-0000098548 00000 n
-0000098652 00000 n
-0000098757 00000 n
-0000098862 00000 n
-0000098967 00000 n
-0000099072 00000 n
-0000099177 00000 n
-0000099282 00000 n
-0000099387 00000 n
-0000099492 00000 n
-0000099597 00000 n
-0000099702 00000 n
-0000099807 00000 n
-0000099912 00000 n
-0000100017 00000 n
-0000100122 00000 n
-0000100227 00000 n
-0000100611 00000 n
-0000100667 00000 n
-0000100755 00000 n
-0000100824 00000 n
-0000100912 00000 n
-0000100988 00000 n
-0000101077 00000 n
-0000101148 00000 n
-0000101236 00000 n
-0000101316 00000 n
-0000101405 00000 n
-0000101468 00000 n
-0000101551 00000 n
-0000101639 00000 n
-0000101715 00000 n
-0000101804 00000 n
-0000101878 00000 n
-0000101967 00000 n
-0000102046 00000 n
-0000102135 00000 n
-0000102189 00000 n
-0000102238 00000 n
-0000102327 00000 n
-0000102354 00000 n
-0000102403 00000 n
-0000102492 00000 n
-0000102519 00000 n
-0000102568 00000 n
-0000102657 00000 n
-0000102722 00000 n
-0000102811 00000 n
-0000102867 00000 n
-0000102956 00000 n
-0000103004 00000 n
-0000103093 00000 n
-0000103147 00000 n
-0000103202 00000 n
-0000103291 00000 n
-0000103346 00000 n
-0000103435 00000 n
-0000103471 00000 n
-0000103507 00000 n
-0000103543 00000 n
-0000108581 00000 n
-0000108626 00000 n
-0000108671 00000 n
-0000108716 00000 n
-0000108761 00000 n
-0000108806 00000 n
-0000108851 00000 n
-0000108896 00000 n
-0000108941 00000 n
-0000108986 00000 n
-0000109031 00000 n
-0000109076 00000 n
-0000109121 00000 n
-0000109166 00000 n
-0000109211 00000 n
-0000109256 00000 n
-0000109301 00000 n
-0000109346 00000 n
-0000109391 00000 n
-0000109436 00000 n
-0000109481 00000 n
-0000109526 00000 n
-0000109571 00000 n
-0000109616 00000 n
-0000109661 00000 n
-0000109706 00000 n
-0000109751 00000 n
-0000109796 00000 n
-0000109841 00000 n
-0000109886 00000 n
-0000109931 00000 n
-0000109976 00000 n
-0000110021 00000 n
-0000110066 00000 n
-0000110111 00000 n
-0000110156 00000 n
-0000110201 00000 n
-0000110246 00000 n
-0000110291 00000 n
-0000110336 00000 n
-0000110381 00000 n
-0000110426 00000 n
-0000110471 00000 n
-0000110516 00000 n
-0000110561 00000 n
-0000110606 00000 n
-0000110651 00000 n
-0000110696 00000 n
-0000110741 00000 n
-0000110786 00000 n
-0000110831 00000 n
-0000110876 00000 n
-0000110921 00000 n
-0000110966 00000 n
-0000111011 00000 n
-0000111056 00000 n
-0000111101 00000 n
-0000111146 00000 n
-0000111191 00000 n
-0000111236 00000 n
-0000111281 00000 n
-0000111326 00000 n
-0000111371 00000 n
-0000111416 00000 n
-0000111461 00000 n
-0000111506 00000 n
-0000111551 00000 n
-0000111596 00000 n
-0000111641 00000 n
-0000111686 00000 n
-0000111731 00000 n
-0000111776 00000 n
-0000111821 00000 n
-0000111866 00000 n
-0000111911 00000 n
-0000111956 00000 n
-0000112001 00000 n
-0000112046 00000 n
-0000112091 00000 n
-0000112136 00000 n
-0000112181 00000 n
-0000112226 00000 n
-0000112271 00000 n
-0000112316 00000 n
-0000112361 00000 n
-0000112406 00000 n
-0000112451 00000 n
-0000112496 00000 n
-0000112541 00000 n
-0000112586 00000 n
-0000112631 00000 n
-0000112676 00000 n
-0000112721 00000 n
-0000112766 00000 n
-0000112811 00000 n
-0000112856 00000 n
-0000112901 00000 n
-0000112946 00000 n
-0000112991 00000 n
-0000113036 00000 n
-0000113081 00000 n
-0000113126 00000 n
-0000113171 00000 n
-0000113216 00000 n
-0000113261 00000 n
-0000113306 00000 n
-0000113351 00000 n
-0000113396 00000 n
-0000113441 00000 n
-0000113486 00000 n
-0000113531 00000 n
-0000113576 00000 n
-0000113621 00000 n
-0000113666 00000 n
-0000113711 00000 n
-0000113756 00000 n
-0000113801 00000 n
-0000113846 00000 n
-0000113891 00000 n
-0000113936 00000 n
-0000113981 00000 n
-0000114026 00000 n
-0000114071 00000 n
-0000114116 00000 n
-0000114161 00000 n
-0000114206 00000 n
-0000114251 00000 n
-0000114296 00000 n
-0000114341 00000 n
-0000114386 00000 n
-0000114431 00000 n
-0000114476 00000 n
-0000114521 00000 n
-0000114566 00000 n
-0000114611 00000 n
-0000114656 00000 n
-0000114701 00000 n
-0000114746 00000 n
-0000114791 00000 n
-0000114836 00000 n
-0000114881 00000 n
-0000114926 00000 n
-0000114971 00000 n
-0000115016 00000 n
-0000115061 00000 n
-0000115106 00000 n
-0000115151 00000 n
-0000115196 00000 n
-0000115241 00000 n
-0000115286 00000 n
-0000115331 00000 n
-0000115376 00000 n
-0000115421 00000 n
-0000115466 00000 n
-0000115511 00000 n
-0000115556 00000 n
-0000115601 00000 n
-0000115646 00000 n
-0000115691 00000 n
-0000115736 00000 n
-0000115781 00000 n
-0000115826 00000 n
-0000115871 00000 n
-0000115916 00000 n
-0000115961 00000 n
-0000116006 00000 n
-0000116051 00000 n
-0000116096 00000 n
-0000116141 00000 n
-0000116186 00000 n
-0000116231 00000 n
-0000116276 00000 n
-0000116321 00000 n
-0000116366 00000 n
-0000116411 00000 n
-0000116456 00000 n
-0000116501 00000 n
-0000116546 00000 n
-0000116591 00000 n
-0000116636 00000 n
-0000116681 00000 n
-0000116726 00000 n
-0000116771 00000 n
-0000116816 00000 n
-0000116861 00000 n
-0000116906 00000 n
-0000116951 00000 n
-0000116996 00000 n
-0000117041 00000 n
-0000117086 00000 n
-0000117131 00000 n
-0000117176 00000 n
-0000117221 00000 n
-0000117266 00000 n
-0000117311 00000 n
-0000117356 00000 n
-0000117401 00000 n
-0000117446 00000 n
-0000117491 00000 n
-0000117536 00000 n
-0000117581 00000 n
-0000117626 00000 n
-0000117671 00000 n
-0000117716 00000 n
-0000117761 00000 n
-0000117806 00000 n
-0000117851 00000 n
-0000117896 00000 n
-0000117941 00000 n
-0000117986 00000 n
-0000118031 00000 n
-0000118076 00000 n
-0000118121 00000 n
-0000118166 00000 n
-0000118211 00000 n
-0000118256 00000 n
-0000118301 00000 n
-0000118346 00000 n
-0000118391 00000 n
-0000118436 00000 n
-0000118481 00000 n
-0000118526 00000 n
-0000118571 00000 n
-0000118616 00000 n
-0000118661 00000 n
-0000118706 00000 n
-0000118751 00000 n
-0000118796 00000 n
-0000118841 00000 n
-0000118886 00000 n
-0000118931 00000 n
-0000118976 00000 n
-0000119021 00000 n
-0000119066 00000 n
-0000119111 00000 n
-0000119156 00000 n
-0000119201 00000 n
-0000119246 00000 n
-0000119291 00000 n
-0000119336 00000 n
-0000119381 00000 n
-0000119426 00000 n
-0000119471 00000 n
-0000119516 00000 n
-0000119561 00000 n
-0000119606 00000 n
-0000119651 00000 n
-0000119696 00000 n
-0000119741 00000 n
-0000119786 00000 n
-0000119831 00000 n
-0000119876 00000 n
-0000119921 00000 n
-0000119966 00000 n
-0000120011 00000 n
-0000120056 00000 n
-0000120101 00000 n
-0000120146 00000 n
-0000120191 00000 n
-0000120236 00000 n
-0000120281 00000 n
-0000120326 00000 n
-0000120371 00000 n
-0000120416 00000 n
-0000120461 00000 n
-0000120506 00000 n
-0000120551 00000 n
-0000120596 00000 n
-0000120641 00000 n
-0000120686 00000 n
-0000120731 00000 n
-0000120776 00000 n
-0000120821 00000 n
-0000120866 00000 n
-0000120911 00000 n
-0000120956 00000 n
-0000121001 00000 n
-0000121046 00000 n
-0000121091 00000 n
-0000121136 00000 n
-0000121181 00000 n
-0000121226 00000 n
-0000121271 00000 n
-0000121316 00000 n
-0000121361 00000 n
-0000121406 00000 n
-0000121451 00000 n
-0000121496 00000 n
-0000121541 00000 n
-0000121586 00000 n
-0000121631 00000 n
-0000121676 00000 n
-0000121721 00000 n
-0000121766 00000 n
-0000123174 00000 n
-0000123335 00000 n
-0000123504 00000 n
-0000123697 00000 n
-0000127450 00000 n
-0000127643 00000 n
-0000132340 00000 n
-0000132534 00000 n
-0000136913 00000 n
-0000137107 00000 n
-0000140959 00000 n
-0000141153 00000 n
-0000144725 00000 n
-0000144919 00000 n
-0000148558 00000 n
-0000148752 00000 n
-0000149730 00000 n
-0000149891 00000 n
-0000150125 00000 n
-0000150329 00000 n
-0000153103 00000 n
-0000153278 00000 n
-0000156898 00000 n
-0000157073 00000 n
-0000159486 00000 n
-0000159661 00000 n
-0000161080 00000 n
-0000161241 00000 n
-0000161429 00000 n
-0000161633 00000 n
-0000164580 00000 n
-0000164755 00000 n
-0000165173 00000 n
-0000165385 00000 n
-0000166546 00000 n
-0000166734 00000 n
-0000168196 00000 n
-0000168393 00000 n
-0000169763 00000 n
-0000169978 00000 n
-0000171214 00000 n
-0000171408 00000 n
-0000172987 00000 n
-0000173157 00000 n
-0000174973 00000 n
-0000175124 00000 n
-0000175365 00000 n
-0000175535 00000 n
-0000177210 00000 n
-0000177389 00000 n
-0000179202 00000 n
-0000179371 00000 n
-0000181209 00000 n
-0000181378 00000 n
-0000182365 00000 n
-0000182544 00000 n
-0000184190 00000 n
-0000184378 00000 n
-0000185867 00000 n
-0000186055 00000 n
-0000187476 00000 n
-0000187646 00000 n
-0000189312 00000 n
-0000189482 00000 n
-0000190038 00000 n
-0000190208 00000 n
-0000191940 00000 n
-0000192119 00000 n
-0000193825 00000 n
-0000194013 00000 n
-0000195668 00000 n
-0000195856 00000 n
-0000197573 00000 n
-0000197742 00000 n
-0000198490 00000 n
-0000198697 00000 n
-0000200340 00000 n
-0000200547 00000 n
-0000202154 00000 n
-0000202323 00000 n
-0000202655 00000 n
-0000202816 00000 n
-0000203006 00000 n
-0000203210 00000 n
-0000206041 00000 n
-0000206254 00000 n
-0000208022 00000 n
-0000208235 00000 n
-0000209737 00000 n
-0000209959 00000 n
-0000211786 00000 n
-0000212007 00000 n
-0000213663 00000 n
-0000213870 00000 n
-0000215562 00000 n
-0000215778 00000 n
-0000217711 00000 n
-0000217933 00000 n
-0000219945 00000 n
-0000220157 00000 n
-0000222240 00000 n
-0000222443 00000 n
-0000224709 00000 n
-0000224931 00000 n
-0000227140 00000 n
-0000227338 00000 n
-0000229347 00000 n
-0000229535 00000 n
-0000231059 00000 n
-0000231238 00000 n
-0000233230 00000 n
-0000233418 00000 n
-0000235438 00000 n
-0000235626 00000 n
-0000237518 00000 n
-0000237715 00000 n
-0000239427 00000 n
-0000239587 00000 n
-0000240580 00000 n
-0000240774 00000 n
-0000242353 00000 n
-0000242533 00000 n
-0000244296 00000 n
-0000244475 00000 n
-0000245334 00000 n
-0000245513 00000 n
-0000246598 00000 n
-0000246795 00000 n
-0000248294 00000 n
-0000248473 00000 n
-0000249289 00000 n
-0000249519 00000 n
-0000251018 00000 n
-0000251230 00000 n
-0000252983 00000 n
-0000253176 00000 n
-0000254533 00000 n
-0000254694 00000 n
-0000254885 00000 n
-0000255098 00000 n
-0000258048 00000 n
-0000258223 00000 n
-0000260654 00000 n
-0000260829 00000 n
-0000262285 00000 n
-0000262483 00000 n
-0000263845 00000 n
-0000264043 00000 n
-0000265732 00000 n
-0000265920 00000 n
-0000267601 00000 n
-0000267780 00000 n
-0000269882 00000 n
-0000270061 00000 n
-0000271834 00000 n
-0000272013 00000 n
-0000273695 00000 n
-0000273883 00000 n
-0000275737 00000 n
-0000275949 00000 n
-0000277979 00000 n
-0000278192 00000 n
-0000279744 00000 n
-0000279933 00000 n
-0000281207 00000 n
-0000281428 00000 n
-0000283204 00000 n
-0000283410 00000 n
-0000285295 00000 n
-0000285492 00000 n
-0000287077 00000 n
-0000287288 00000 n
-0000288808 00000 n
-0000288996 00000 n
-0000289898 00000 n
-0000290086 00000 n
-0000291612 00000 n
-0000291815 00000 n
-0000293523 00000 n
-0000293726 00000 n
-0000294543 00000 n
-0000294755 00000 n
-0000296233 00000 n
-0000296413 00000 n
-0000297172 00000 n
-0000297403 00000 n
-0000299126 00000 n
-0000299338 00000 n
-0000301264 00000 n
-0000301495 00000 n
-0000303505 00000 n
-0000303727 00000 n
-0000305447 00000 n
-0000305650 00000 n
-0000306909 00000 n
-0000307131 00000 n
-0000308724 00000 n
-0000308903 00000 n
-0000310451 00000 n
-0000310630 00000 n
-0000312247 00000 n
-0000312426 00000 n
-0000313824 00000 n
-0000314003 00000 n
-0000315669 00000 n
-0000315839 00000 n
-0000316585 00000 n
-0000316788 00000 n
-0000318657 00000 n
-0000318817 00000 n
-0000319941 00000 n
-0000320130 00000 n
-0000321823 00000 n
-0000322002 00000 n
-0000323747 00000 n
-0000323935 00000 n
-0000325838 00000 n
-0000326051 00000 n
-0000327916 00000 n
-0000328156 00000 n
-0000330231 00000 n
-0000330443 00000 n
-0000332011 00000 n
-0000332217 00000 n
-0000333381 00000 n
-0000333569 00000 n
-0000334765 00000 n
-0000334944 00000 n
-0000335949 00000 n
-0000336137 00000 n
-0000337764 00000 n
-0000337952 00000 n
-0000339220 00000 n
-0000339409 00000 n
-0000340717 00000 n
-0000340887 00000 n
-0000341360 00000 n
-0000341548 00000 n
-0000342939 00000 n
-0000343127 00000 n
-0000344098 00000 n
-0000344286 00000 n
-0000344835 00000 n
-0000345057 00000 n
-0000347130 00000 n
-0000347343 00000 n
-0000349364 00000 n
-0000349586 00000 n
-0000350797 00000 n
-0000351010 00000 n
-0000352572 00000 n
-0000352794 00000 n
-0000354603 00000 n
-0000354825 00000 n
-0000356545 00000 n
-0000356739 00000 n
-0000357449 00000 n
-0000357652 00000 n
-0000359191 00000 n
-0000359369 00000 n
-0000360054 00000 n
-0000360242 00000 n
-0000361727 00000 n
-0000361906 00000 n
-0000363512 00000 n
-0000363691 00000 n
-0000365361 00000 n
-0000365531 00000 n
-0000367080 00000 n
-0000367250 00000 n
-0000368551 00000 n
-0000368721 00000 n
-0000370347 00000 n
-0000370517 00000 n
-0000372097 00000 n
-0000372293 00000 n
-0000374483 00000 n
-0000374662 00000 n
-0000376189 00000 n
-0000376377 00000 n
-0000377345 00000 n
-0000377541 00000 n
-0000379272 00000 n
-0000379485 00000 n
-0000381167 00000 n
-0000381362 00000 n
-0000383112 00000 n
-0000383325 00000 n
-0000384590 00000 n
-0000384794 00000 n
-0000386531 00000 n
-0000386719 00000 n
-0000388462 00000 n
-0000388641 00000 n
-0000390039 00000 n
-0000390218 00000 n
-0000391915 00000 n
-0000392094 00000 n
-0000393575 00000 n
-0000393754 00000 n
-0000395546 00000 n
-0000395750 00000 n
-0000397401 00000 n
-0000397460 00000 n
-0000397563 00000 n
-0000397728 00000 n
-0000397810 00000 n
-0000397918 00000 n
-0000398041 00000 n
-0000398153 00000 n
-0000398332 00000 n
-0000398441 00000 n
-0000398567 00000 n
-0000398694 00000 n
-0000398833 00000 n
-0000398973 00000 n
-0000399142 00000 n
-0000399259 00000 n
-0000399388 00000 n
-0000399540 00000 n
-0000399680 00000 n
-0000399858 00000 n
-0000400014 00000 n
-0000400127 00000 n
-0000400244 00000 n
-0000400379 00000 n
-0000400520 00000 n
-0000400635 00000 n
-0000400746 00000 n
-0000400922 00000 n
-0000401033 00000 n
-0000401163 00000 n
-0000401286 00000 n
-0000401452 00000 n
-0000401568 00000 n
-0000401697 00000 n
-0000401836 00000 n
-0000401972 00000 n
-0000402107 00000 n
-0000402242 00000 n
-0000402378 00000 n
-0000402489 00000 n
-0000402645 00000 n
-0000402739 00000 n
-0000402948 00000 n
-0000403049 00000 n
-0000403192 00000 n
-0000403338 00000 n
-0000403454 00000 n
-0000403621 00000 n
-0000403733 00000 n
-0000403924 00000 n
-0000404027 00000 n
-0000404200 00000 n
-0000404321 00000 n
-0000404451 00000 n
-0000404563 00000 n
-0000404687 00000 n
-0000404799 00000 n
-0000405005 00000 n
-0000405116 00000 n
-0000405231 00000 n
-0000405375 00000 n
-0000405583 00000 n
-0000405717 00000 n
-0000405871 00000 n
-0000405996 00000 n
-0000406127 00000 n
-0000406260 00000 n
-0000406391 00000 n
-0000406566 00000 n
-0000406701 00000 n
-0000406854 00000 n
-0000406999 00000 n
-0000407224 00000 n
-0000407335 00000 n
-0000407450 00000 n
-0000407643 00000 n
-0000407786 00000 n
-0000407902 00000 n
-0000408047 00000 n
-0000408204 00000 n
-0000408321 00000 n
-0000408498 00000 n
-0000408632 00000 n
-0000408780 00000 n
-0000408898 00000 n
-0000409028 00000 n
-0000409198 00000 n
-0000409292 00000 n
-0000409419 00000 n
-0000409546 00000 n
-0000409642 00000 n
-0000409819 00000 n
-0000409945 00000 n
-0000410080 00000 n
-0000410213 00000 n
-0000410340 00000 n
-0000410452 00000 n
-0000410644 00000 n
-0000410742 00000 n
-0000410928 00000 n
-0000411032 00000 n
-0000411156 00000 n
-0000411278 00000 n
-0000411390 00000 n
-0000411586 00000 n
-0000411702 00000 n
-0000411826 00000 n
-0000411944 00000 n
-0000412062 00000 n
-0000412167 00000 n
-0000412356 00000 n
-0000412579 00000 n
-0000412718 00000 n
-0000412881 00000 n
-0000413018 00000 n
-0000413121 00000 n
-0000413327 00000 n
-0000413486 00000 n
-0000413634 00000 n
-0000413762 00000 n
-0000413943 00000 n
-0000414053 00000 n
-0000414168 00000 n
-0000414313 00000 n
-0000414477 00000 n
-0000414627 00000 n
-0000414845 00000 n
-0000414950 00000 n
-0000415082 00000 n
-0000415203 00000 n
-0000415410 00000 n
-0000415538 00000 n
-0000415623 00000 n
-0000415789 00000 n
-0000415893 00000 n
-0000416050 00000 n
-0000416161 00000 n
-0000416306 00000 n
-0000416448 00000 n
-0000416598 00000 n
-0000416715 00000 n
-0000416879 00000 n
-0000416990 00000 n
-0000417130 00000 n
-0000417257 00000 n
-0000417374 00000 n
-0000417513 00000 n
-0000417619 00000 n
-0000417753 00000 n
-0000417885 00000 n
-0000418030 00000 n
-0000418157 00000 n
-0000418289 00000 n
-0000418419 00000 n
-0000418544 00000 n
-0000418652 00000 n
-0000418817 00000 n
-0000418921 00000 n
-0000419057 00000 n
-0000419263 00000 n
-0000419363 00000 n
-0000419481 00000 n
-0000419646 00000 n
-0000419737 00000 n
-0000419898 00000 n
-0000420024 00000 n
-0000420151 00000 n
-0000420291 00000 n
-0000420427 00000 n
-0000420535 00000 n
-0000420709 00000 n
-0000420815 00000 n
-0000420935 00000 n
-0000421047 00000 n
-0000421164 00000 n
-0000421266 00000 n
-0000421435 00000 n
-0000421535 00000 n
-0000421652 00000 n
-0000421805 00000 n
-0000421935 00000 n
-0000422102 00000 n
-0000422202 00000 n
-0000422299 00000 n
-0000422519 00000 n
-0000422618 00000 n
-0000422736 00000 n
-0000422864 00000 n
-0000423022 00000 n
-0000423193 00000 n
-0000423309 00000 n
-0000423420 00000 n
-0000423556 00000 n
-0000423687 00000 n
-0000423835 00000 n
-0000423980 00000 n
-0000424081 00000 n
-0000424269 00000 n
-0000424373 00000 n
-0000424526 00000 n
-0000424637 00000 n
-0000424745 00000 n
-0000424876 00000 n
-0000425051 00000 n
-0000425154 00000 n
-0000425305 00000 n
-0000425407 00000 n
-0000425529 00000 n
-0000425661 00000 n
-0000425781 00000 n
-0000425896 00000 n
-0000426010 00000 n
-0000426123 00000 n
-0000426240 00000 n
-0000426355 00000 n
-0000426471 00000 n
-0000426586 00000 n
-0000426702 00000 n
-0000426824 00000 n
-0000426945 00000 n
-0000427064 00000 n
-0000427182 00000 n
-0000427302 00000 n
-0000427405 00000 n
-0000427519 00000 n
-0000427680 00000 n
-0000427776 00000 n
-0000427890 00000 n
-0000428000 00000 n
-0000428117 00000 n
-0000428295 00000 n
-0000428405 00000 n
-0000428559 00000 n
-0000428728 00000 n
-0000428916 00000 n
-0000429097 00000 n
-0000429253 00000 n
-0000429419 00000 n
-0000429551 00000 n
-0000429698 00000 n
-0000429837 00000 n
-0000429957 00000 n
-0000430078 00000 n
-0000430197 00000 n
-0000430361 00000 n
-0000430465 00000 n
-0000430583 00000 n
-0000430701 00000 n
-0000430822 00000 n
-0000430958 00000 n
-0000431057 00000 n
-0000431221 00000 n
-0000431325 00000 n
-0000431442 00000 n
-0000431592 00000 n
-0000431692 00000 n
-0000431806 00000 n
-0000431920 00000 n
-0000432034 00000 n
-0000432148 00000 n
-0000432262 00000 n
-0000432376 00000 n
-0000432490 00000 n
-0000432604 00000 n
-0000432720 00000 n
-0000432822 00000 n
-0000432936 00000 n
+0000088354 00000 n
+0000088398 00000 n
+0000088442 00000 n
+0000088486 00000 n
+0000088530 00000 n
+0000088574 00000 n
+0000088618 00000 n
+0000088662 00000 n
+0000088706 00000 n
+0000088750 00000 n
+0000088794 00000 n
+0000088839 00000 n
+0000088884 00000 n
+0000088929 00000 n
+0000088974 00000 n
+0000089019 00000 n
+0000089064 00000 n
+0000089109 00000 n
+0000089154 00000 n
+0000089199 00000 n
+0000089244 00000 n
+0000089289 00000 n
+0000089334 00000 n
+0000089379 00000 n
+0000089424 00000 n
+0000089469 00000 n
+0000089514 00000 n
+0000089559 00000 n
+0000089604 00000 n
+0000089649 00000 n
+0000089694 00000 n
+0000089739 00000 n
+0000089784 00000 n
+0000089829 00000 n
+0000089874 00000 n
+0000089919 00000 n
+0000089964 00000 n
+0000090009 00000 n
+0000090054 00000 n
+0000090099 00000 n
+0000090144 00000 n
+0000090189 00000 n
+0000090234 00000 n
+0000090279 00000 n
+0000090324 00000 n
+0000090369 00000 n
+0000090414 00000 n
+0000090459 00000 n
+0000090504 00000 n
+0000090549 00000 n
+0000090594 00000 n
+0000090639 00000 n
+0000090684 00000 n
+0000090729 00000 n
+0000090774 00000 n
+0000090819 00000 n
+0000090864 00000 n
+0000090909 00000 n
+0000090954 00000 n
+0000090999 00000 n
+0000091044 00000 n
+0000091089 00000 n
+0000091134 00000 n
+0000091179 00000 n
+0000091224 00000 n
+0000091269 00000 n
+0000091314 00000 n
+0000091359 00000 n
+0000091404 00000 n
+0000091449 00000 n
+0000091494 00000 n
+0000091539 00000 n
+0000091584 00000 n
+0000091629 00000 n
+0000091674 00000 n
+0000091719 00000 n
+0000091764 00000 n
+0000091809 00000 n
+0000091854 00000 n
+0000091899 00000 n
+0000091944 00000 n
+0000091989 00000 n
+0000092034 00000 n
+0000092079 00000 n
+0000092124 00000 n
+0000092169 00000 n
+0000092214 00000 n
+0000092259 00000 n
+0000092304 00000 n
+0000092349 00000 n
+0000092394 00000 n
+0000092439 00000 n
+0000092484 00000 n
+0000092529 00000 n
+0000092574 00000 n
+0000092619 00000 n
+0000092664 00000 n
+0000092709 00000 n
+0000092754 00000 n
+0000092799 00000 n
+0000092844 00000 n
+0000092889 00000 n
+0000092934 00000 n
+0000092979 00000 n
+0000093024 00000 n
+0000093069 00000 n
+0000093114 00000 n
+0000093159 00000 n
+0000093204 00000 n
+0000093249 00000 n
+0000093294 00000 n
+0000093339 00000 n
+0000093384 00000 n
+0000093429 00000 n
+0000093474 00000 n
+0000093519 00000 n
+0000093564 00000 n
+0000093609 00000 n
+0000093654 00000 n
+0000093699 00000 n
+0000093744 00000 n
+0000093789 00000 n
+0000093834 00000 n
+0000093879 00000 n
+0000093924 00000 n
+0000093969 00000 n
+0000094014 00000 n
+0000094059 00000 n
+0000094104 00000 n
+0000094149 00000 n
+0000095548 00000 n
+0000095709 00000 n
+0000095878 00000 n
+0000096071 00000 n
+0000099760 00000 n
+0000099953 00000 n
+0000104259 00000 n
+0000104453 00000 n
+0000108285 00000 n
+0000108479 00000 n
+0000111850 00000 n
+0000112044 00000 n
+0000114896 00000 n
+0000115090 00000 n
+0000118370 00000 n
+0000118564 00000 n
+0000119223 00000 n
+0000119384 00000 n
+0000119618 00000 n
+0000119822 00000 n
+0000122520 00000 n
+0000122695 00000 n
+0000126304 00000 n
+0000126479 00000 n
+0000128781 00000 n
+0000128956 00000 n
+0000130064 00000 n
+0000130225 00000 n
+0000130413 00000 n
+0000130617 00000 n
+0000131272 00000 n
+0000131484 00000 n
+0000132628 00000 n
+0000132816 00000 n
+0000134311 00000 n
+0000134508 00000 n
+0000135923 00000 n
+0000136138 00000 n
+0000137366 00000 n
+0000137560 00000 n
+0000139126 00000 n
+0000139296 00000 n
+0000141097 00000 n
+0000141248 00000 n
+0000141484 00000 n
+0000141654 00000 n
+0000143312 00000 n
+0000143491 00000 n
+0000145323 00000 n
+0000145492 00000 n
+0000147346 00000 n
+0000147515 00000 n
+0000148624 00000 n
+0000148812 00000 n
+0000150513 00000 n
+0000150701 00000 n
+0000152179 00000 n
+0000152367 00000 n
+0000153852 00000 n
+0000154022 00000 n
+0000155683 00000 n
+0000155853 00000 n
+0000156594 00000 n
+0000156773 00000 n
+0000158506 00000 n
+0000158694 00000 n
+0000160494 00000 n
+0000160682 00000 n
+0000162327 00000 n
+0000162496 00000 n
+0000163266 00000 n
+0000163473 00000 n
+0000165095 00000 n
+0000165302 00000 n
+0000166898 00000 n
+0000167067 00000 n
+0000167394 00000 n
+0000167555 00000 n
+0000167745 00000 n
+0000167949 00000 n
+0000168761 00000 n
+0000168931 00000 n
+0000170877 00000 n
+0000171037 00000 n
+0000171709 00000 n
+0000171922 00000 n
+0000173683 00000 n
+0000173896 00000 n
+0000175434 00000 n
+0000175656 00000 n
+0000177485 00000 n
+0000177706 00000 n
+0000179399 00000 n
+0000179606 00000 n
+0000181291 00000 n
+0000181507 00000 n
+0000183486 00000 n
+0000183708 00000 n
+0000185716 00000 n
+0000185928 00000 n
+0000188008 00000 n
+0000188211 00000 n
+0000190473 00000 n
+0000190695 00000 n
+0000192900 00000 n
+0000193098 00000 n
+0000195105 00000 n
+0000195293 00000 n
+0000196839 00000 n
+0000197018 00000 n
+0000199003 00000 n
+0000199191 00000 n
+0000201155 00000 n
+0000201343 00000 n
+0000203299 00000 n
+0000203496 00000 n
+0000205246 00000 n
+0000205406 00000 n
+0000206395 00000 n
+0000206589 00000 n
+0000208179 00000 n
+0000208359 00000 n
+0000210106 00000 n
+0000210285 00000 n
+0000211182 00000 n
+0000211361 00000 n
+0000212427 00000 n
+0000212624 00000 n
+0000214136 00000 n
+0000214315 00000 n
+0000215120 00000 n
+0000215350 00000 n
+0000216838 00000 n
+0000217050 00000 n
+0000218798 00000 n
+0000218991 00000 n
+0000220345 00000 n
+0000220506 00000 n
+0000220697 00000 n
+0000220901 00000 n
+0000222168 00000 n
+0000222366 00000 n
+0000223796 00000 n
+0000223984 00000 n
+0000225675 00000 n
+0000225863 00000 n
+0000227642 00000 n
+0000227821 00000 n
+0000229885 00000 n
+0000230064 00000 n
+0000231881 00000 n
+0000232060 00000 n
+0000233798 00000 n
+0000233986 00000 n
+0000235835 00000 n
+0000236057 00000 n
+0000238068 00000 n
+0000238281 00000 n
+0000239834 00000 n
+0000240023 00000 n
+0000241415 00000 n
+0000241585 00000 n
+0000241928 00000 n
+0000242149 00000 n
+0000243909 00000 n
+0000244115 00000 n
+0000245988 00000 n
+0000246185 00000 n
+0000247764 00000 n
+0000247975 00000 n
+0000249490 00000 n
+0000249678 00000 n
+0000250563 00000 n
+0000250751 00000 n
+0000252274 00000 n
+0000252477 00000 n
+0000254181 00000 n
+0000254384 00000 n
+0000255331 00000 n
+0000255543 00000 n
+0000257053 00000 n
+0000257233 00000 n
+0000257988 00000 n
+0000258219 00000 n
+0000259925 00000 n
+0000260137 00000 n
+0000262121 00000 n
+0000262352 00000 n
+0000264309 00000 n
+0000264531 00000 n
+0000266309 00000 n
+0000266512 00000 n
+0000267818 00000 n
+0000268040 00000 n
+0000269631 00000 n
+0000269810 00000 n
+0000271432 00000 n
+0000271611 00000 n
+0000273196 00000 n
+0000273375 00000 n
+0000274933 00000 n
+0000275112 00000 n
+0000276728 00000 n
+0000276898 00000 n
+0000277772 00000 n
+0000277961 00000 n
+0000279632 00000 n
+0000279811 00000 n
+0000281542 00000 n
+0000281730 00000 n
+0000283624 00000 n
+0000283837 00000 n
+0000285690 00000 n
+0000285930 00000 n
+0000288023 00000 n
+0000288235 00000 n
+0000289815 00000 n
+0000290036 00000 n
+0000291285 00000 n
+0000291473 00000 n
+0000292752 00000 n
+0000292931 00000 n
+0000293992 00000 n
+0000294180 00000 n
+0000295744 00000 n
+0000295932 00000 n
+0000297348 00000 n
+0000297537 00000 n
+0000298800 00000 n
+0000298980 00000 n
+0000299631 00000 n
+0000299828 00000 n
+0000301303 00000 n
+0000301491 00000 n
+0000302586 00000 n
+0000302774 00000 n
+0000303307 00000 n
+0000303504 00000 n
+0000304723 00000 n
+0000304926 00000 n
+0000306256 00000 n
+0000306441 00000 n
+0000306911 00000 n
+0000307133 00000 n
+0000309200 00000 n
+0000309413 00000 n
+0000311462 00000 n
+0000311659 00000 n
+0000312859 00000 n
+0000313072 00000 n
+0000314687 00000 n
+0000314909 00000 n
+0000316732 00000 n
+0000316954 00000 n
+0000318723 00000 n
+0000318917 00000 n
+0000319693 00000 n
+0000319896 00000 n
+0000321414 00000 n
+0000321592 00000 n
+0000322258 00000 n
+0000322446 00000 n
+0000323974 00000 n
+0000324144 00000 n
+0000325636 00000 n
+0000325806 00000 n
+0000327192 00000 n
+0000327362 00000 n
+0000328904 00000 n
+0000329073 00000 n
+0000330058 00000 n
+0000330253 00000 n
+0000330674 00000 n
+0000330853 00000 n
+0000332401 00000 n
+0000332589 00000 n
+0000333633 00000 n
+0000333784 00000 n
+0000334018 00000 n
+0000334213 00000 n
+0000335926 00000 n
+0000336138 00000 n
+0000337853 00000 n
+0000338047 00000 n
+0000339761 00000 n
+0000339973 00000 n
+0000341258 00000 n
+0000341461 00000 n
+0000343216 00000 n
+0000343404 00000 n
+0000345138 00000 n
+0000345317 00000 n
+0000346736 00000 n
+0000346915 00000 n
+0000348641 00000 n
+0000348820 00000 n
+0000350305 00000 n
+0000350484 00000 n
+0000352265 00000 n
+0000352468 00000 n
+0000354100 00000 n
+0000354159 00000 n
+0000354262 00000 n
+0000354427 00000 n
+0000354509 00000 n
+0000354617 00000 n
+0000354740 00000 n
+0000354852 00000 n
+0000355020 00000 n
+0000355124 00000 n
+0000355245 00000 n
+0000355367 00000 n
+0000355501 00000 n
+0000355636 00000 n
+0000355800 00000 n
+0000355910 00000 n
+0000356032 00000 n
+0000356179 00000 n
+0000356314 00000 n
+0000356487 00000 n
+0000356637 00000 n
+0000356742 00000 n
+0000356851 00000 n
+0000356978 00000 n
+0000357111 00000 n
+0000357218 00000 n
+0000357321 00000 n
+0000357486 00000 n
+0000357592 00000 n
+0000357717 00000 n
+0000357835 00000 n
+0000357996 00000 n
+0000358105 00000 n
+0000358229 00000 n
+0000358363 00000 n
+0000358494 00000 n
+0000358624 00000 n
+0000358754 00000 n
+0000358884 00000 n
+0000358989 00000 n
+0000359187 00000 n
+0000359283 00000 n
+0000359421 00000 n
+0000359562 00000 n
+0000359673 00000 n
+0000359835 00000 n
+0000359942 00000 n
+0000360122 00000 n
+0000360220 00000 n
+0000360388 00000 n
+0000360502 00000 n
+0000360625 00000 n
+0000360732 00000 n
+0000360856 00000 n
+0000360968 00000 n
+0000361129 00000 n
+0000361324 00000 n
+0000361430 00000 n
+0000361540 00000 n
+0000361679 00000 n
+0000361882 00000 n
+0000362009 00000 n
+0000362156 00000 n
+0000362274 00000 n
+0000362400 00000 n
+0000362528 00000 n
+0000362654 00000 n
+0000362824 00000 n
+0000362952 00000 n
+0000363098 00000 n
+0000363238 00000 n
+0000363452 00000 n
+0000363558 00000 n
+0000363668 00000 n
+0000363856 00000 n
+0000363992 00000 n
+0000364101 00000 n
+0000364241 00000 n
+0000364393 00000 n
+0000364503 00000 n
+0000364669 00000 n
+0000364798 00000 n
+0000364941 00000 n
+0000365054 00000 n
+0000365179 00000 n
+0000365344 00000 n
+0000365431 00000 n
+0000365553 00000 n
+0000365675 00000 n
+0000365766 00000 n
+0000365932 00000 n
+0000366053 00000 n
+0000366183 00000 n
+0000366311 00000 n
+0000366438 00000 n
+0000366550 00000 n
+0000366730 00000 n
+0000366822 00000 n
+0000367002 00000 n
+0000367098 00000 n
+0000367214 00000 n
+0000367328 00000 n
+0000367432 00000 n
+0000367622 00000 n
+0000367730 00000 n
+0000367846 00000 n
+0000367956 00000 n
+0000368066 00000 n
+0000368163 00000 n
+0000368346 00000 n
+0000368563 00000 n
+0000368694 00000 n
+0000368849 00000 n
+0000368978 00000 n
+0000369075 00000 n
+0000369269 00000 n
+0000369422 00000 n
+0000369564 00000 n
+0000369686 00000 n
+0000369861 00000 n
+0000369963 00000 n
+0000370070 00000 n
+0000370209 00000 n
+0000370367 00000 n
+0000370511 00000 n
+0000370717 00000 n
+0000370816 00000 n
+0000370942 00000 n
+0000371057 00000 n
+0000371252 00000 n
+0000371374 00000 n
+0000371451 00000 n
+0000371605 00000 n
+0000371703 00000 n
+0000371854 00000 n
+0000371957 00000 n
+0000372094 00000 n
+0000372228 00000 n
+0000372370 00000 n
+0000372479 00000 n
+0000372637 00000 n
+0000372740 00000 n
+0000372872 00000 n
+0000372991 00000 n
+0000373100 00000 n
+0000373233 00000 n
+0000373331 00000 n
+0000373457 00000 n
+0000373581 00000 n
+0000373718 00000 n
+0000373837 00000 n
+0000373961 00000 n
+0000374083 00000 n
+0000374200 00000 n
+0000374300 00000 n
+0000374494 00000 n
+0000374588 00000 n
+0000374700 00000 n
+0000374859 00000 n
+0000374942 00000 n
+0000375097 00000 n
+0000375215 00000 n
+0000375334 00000 n
+0000375466 00000 n
+0000375594 00000 n
+0000375694 00000 n
+0000375862 00000 n
+0000375960 00000 n
+0000376072 00000 n
+0000376176 00000 n
+0000376287 00000 n
+0000376383 00000 n
+0000376540 00000 n
+0000376634 00000 n
+0000376745 00000 n
+0000376892 00000 n
+0000377016 00000 n
+0000377171 00000 n
+0000377265 00000 n
+0000377356 00000 n
+0000377515 00000 n
+0000377631 00000 n
+0000377785 00000 n
+0000377876 00000 n
+0000377983 00000 n
+0000378077 00000 n
+0000378232 00000 n
+0000378328 00000 n
+0000378419 00000 n
+0000378627 00000 n
+0000378720 00000 n
+0000378832 00000 n
+0000378954 00000 n
+0000379106 00000 n
+0000379271 00000 n
+0000379379 00000 n
+0000379482 00000 n
+0000379612 00000 n
+0000379737 00000 n
+0000379879 00000 n
+0000380018 00000 n
+0000380112 00000 n
+0000380288 00000 n
+0000380386 00000 n
+0000380533 00000 n
+0000380636 00000 n
+0000380736 00000 n
+0000380855 00000 n
+0000381018 00000 n
+0000381115 00000 n
+0000381229 00000 n
+0000381338 00000 n
+0000381446 00000 n
+0000381555 00000 n
+0000381663 00000 n
+0000381772 00000 n
+0000381884 00000 n
+0000381995 00000 n
+0000382094 00000 n
+0000382208 00000 n
+0000382357 00000 n
+0000382447 00000 n
+0000382555 00000 n
+0000382659 00000 n
+0000382770 00000 n
+0000382936 00000 n
+0000383040 00000 n
+0000383188 00000 n
+0000383349 00000 n
+0000383529 00000 n
+0000383702 00000 n
+0000383850 00000 n
+0000384010 00000 n
+0000384134 00000 n
+0000384273 00000 n
+0000384404 00000 n
+0000384516 00000 n
+0000384631 00000 n
+0000384744 00000 n
+0000384896 00000 n
+0000384994 00000 n
+0000385106 00000 n
+0000385218 00000 n
+0000385333 00000 n
+0000385463 00000 n
+0000385556 00000 n
+0000385708 00000 n
+0000385806 00000 n
+0000385917 00000 n
+0000386061 00000 n
+0000386153 00000 n
+0000386259 00000 n
+0000386365 00000 n
+0000386471 00000 n
+0000386577 00000 n
+0000386683 00000 n
+0000386789 00000 n
+0000386895 00000 n
+0000387001 00000 n
+0000387108 00000 n
+0000387201 00000 n
+0000387309 00000 n
trailer
-<</Size 1937/Root 1936 0 R/Info 1 0 R/ID[<d4635e29b9310f2537aa795b8caa009c><d4635e29b9310f2537aa795b8caa009c>]>>
+<</Size 1682/Root 1681 0 R/Info 1 0 R/ID[<a6ff5435f6c7295918a4c9dcb3c2615f><a6ff5435f6c7295918a4c9dcb3c2615f>]>>
startxref
-433845
+388219
%%EOF
diff --git a/docs/docbook/faq/errors.sgml b/docs/docbook/faq/errors.sgml
index 819462899e..6476ec064e 100644
--- a/docs/docbook/faq/errors.sgml
+++ b/docs/docbook/faq/errors.sgml
@@ -49,6 +49,7 @@ the samba HOWTO Collection</member>
Windows NT in the chapter "Portability" of the samba HOWTO collection
</member>
</simplelist>
+</para>
</sect1>
@@ -62,6 +63,7 @@ the program always prompts for the password if the server is a Samba server.
It also ignores the "-N" argument when querying some (but not all) of our
NT servers.
</quote>
+</para>
<para>
No, it does not ignore -N, it is just that your server rejected the
diff --git a/docs/docbook/faq/general.sgml b/docs/docbook/faq/general.sgml
index 5111e69bec..38bcdf49e3 100644
--- a/docs/docbook/faq/general.sgml
+++ b/docs/docbook/faq/general.sgml
@@ -5,6 +5,7 @@
<title>Where can I get it?</title>
<para>
The Samba suite is available at the <ulink url="http://samba.org/">samba website</ulink>.
+</para>
</sect1>
<sect1>
@@ -41,6 +42,7 @@ same version number without the alpha, for example 1.9.16.</member>
<member>Inevitably bugs are found in the "stable" releases and minor patch
levels are released which give us the pXX series, for example 1.9.16p2.</member>
</simplelist>
+</para>
<para>
So the progression goes:
@@ -134,7 +136,7 @@ already know this, but the rest may need some help. Andrew doesn't ask
for payment, but he does appreciate it when people give him
pizza. This calls for a little organisation when the pizza donor is
twenty thousand kilometres away, but it has been done.
-<?para>
+</para>
<para>
Method 1: Ring up your local branch of an international pizza chain
diff --git a/docs/docbook/faq/install.sgml b/docs/docbook/faq/install.sgml
index 288e3a5f32..88520fc71d 100644
--- a/docs/docbook/faq/install.sgml
+++ b/docs/docbook/faq/install.sgml
@@ -19,9 +19,10 @@ thusly:
The details of how to do this and the specific syntax varies from
client to client - check your client's documentation.
</para>
+</sect1>
<sect1>
-<title>Some files that I KNOW are on the server doesn't show up when I view the files from my client!
+<title>Some files that I KNOW are on the server doesn't show up when I view the files from my client!</title>
<para>See the next question.</para>
</sect1>
@@ -146,6 +147,7 @@ coreplus. Also not that print status error messages don't mean
printing won't work. The print status is received by a different
mechanism.
</para>
+</sect1>
<sect1>
<title>My client reports "This server is not configured to list shared resources"</title>
@@ -293,14 +295,15 @@ Samba traditionally has had many problems dealing with time zones, due
to the bizarre ways that Microsoft network protocols handle time
zones.
</para>
+</sect1>
<sect1>
<title>How do I set the printer driver name correctly?</title>
-<para>Question:<para>
+<para>Question:
<quote> On NT, I opened "Printer Manager" and "Connect to Printer".
Enter ["\\ptdi270\ps1"] in the box of printer. I got the
following error message
- </quote>
+ </quote></para>
<para>
<programlisting>
You do not have sufficient access to your machine
diff --git a/docs/faq/clientapp.html b/docs/faq/clientapp.html
index b48e236377..d24e778b2a 100644
--- a/docs/faq/clientapp.html
+++ b/docs/faq/clientapp.html
@@ -5,7 +5,8 @@
>Specific client application problems</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="Samba FAQ"
HREF="samba-faq.html"><LINK
@@ -69,17 +70,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="CLIENTAPP"
-></A
->Chapter 4. Specific client application problems</H1
+NAME="CLIENTAPP">Chapter 4. Specific client application problems</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN175"
-></A
->4.1. MS Office Setup reports "Cannot change properties of '\MSOFFICE\SETUP.INI'"</H1
+NAME="AEN174">4.1. MS Office Setup reports "Cannot change properties of '\MSOFFICE\SETUP.INI'"</H1
><P
>When installing MS Office on a Samba drive for which you have admin
user permissions, ie. admin users = username, you will find the
@@ -98,9 +95,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN180"
-></A
->4.2. How to use a Samba share as an administrative share for MS Office, etc.</H1
+NAME="AEN179">4.2. How to use a Samba share as an administrative share for MS Office, etc.</H1
><P
>Microsoft Office products can be installed as an administrative installation
from which the application can either be run off the administratively installed
@@ -160,9 +155,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN195"
-></A
->4.3. Microsoft Access database opening errors</H1
+NAME="AEN194">4.3. Microsoft Access database opening errors</H1
><P
>Here are some notes on running MS-Access on a Samba drive from <A
HREF="stefank@esi.com.au"
diff --git a/docs/faq/errors.html b/docs/faq/errors.html
index 08da5e5db0..a918a73efc 100644
--- a/docs/faq/errors.html
+++ b/docs/faq/errors.html
@@ -5,7 +5,8 @@
>Common errors</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="Samba FAQ"
HREF="samba-faq.html"><LINK
@@ -69,17 +70,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="ERRORS"
-></A
->Chapter 5. Common errors</H1
+NAME="ERRORS">Chapter 5. Common errors</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN206"
-></A
->5.1. Not listening for calling name</H1
+NAME="AEN205">5.1. Not listening for calling name</H1
><P
><PRE
CLASS="PROGRAMLISTING"
@@ -103,9 +100,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN213"
-></A
->5.2. System Error 1240</H1
+NAME="AEN212">5.2. System Error 1240</H1
><P
>System error 1240 means that the client is refusing to talk
to a non-encrypting server. Microsoft changed WinNT in service
@@ -139,9 +134,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN220"
-></A
->5.3. smbclient ignores -N !</H1
+NAME="AEN219">5.3. smbclient ignores -N !</H1
><P
><SPAN
CLASS="QUOTE"
@@ -153,30 +146,34 @@ CLASS="COMMAND"
the program always prompts for the password if the server is a Samba server.
It also ignores the "-N" argument when querying some (but not all) of our
NT servers."</SPAN
->&#13;</P
-><P
+>
+
+<P
>No, it does not ignore -N, it is just that your server rejected the
null password in the connection, so smbclient prompts for a password
to try again.</P
-><P
+>
+
+<P
>To get the behaviour that you probably want use <B
CLASS="COMMAND"
>smbclient -L host -U%</B
></P
-><P
+>
+
+<P
>This will set both the username and password to null, which is
an anonymous login for SMB. Using -N would only set the password
to null, and this is not accepted as an anonymous login for most
SMB servers.</P
+>&#13;</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN229"
-></A
->5.4. The data on the CD-Drive I've shared seems to be corrupted!</H1
+NAME="AEN228">5.4. The data on the CD-Drive I've shared seems to be corrupted!</H1
><P
>Some OSes (notably Linux) default to auto detection of file type on
cdroms and do cr/lf translation. This is a very bad idea when use with
@@ -190,9 +187,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN233"
-></A
->5.5. Why can users access home directories of other users?</H1
+NAME="AEN232">5.5. Why can users access home directories of other users?</H1
><P
><SPAN
CLASS="QUOTE"
@@ -248,12 +243,19 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN246"
-></A
->5.6. Until a few minutes after samba has started, clients get the error "Domain Controller Unavailable"</H1
+NAME="AEN245">5.6. Until a few minutes after samba has started, clients get the error "Domain Controller Unavailable"</H1
><P
>A domain controller has to announce on the network who it is. This usually takes a while.</P
></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="AEN248">5.7. I'm getting "open_oplock_ipc: Failed to get local UDP socket for address 100007f. Error was Cannot assign requested" in the logs</H1
+><P
+>Your loopback device isn't working correctly. Make sure it's running.</P
+></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
diff --git a/docs/faq/general.html b/docs/faq/general.html
index 5a42678cb6..435a2282b4 100644
--- a/docs/faq/general.html
+++ b/docs/faq/general.html
@@ -5,7 +5,8 @@
>General Information</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="Samba FAQ"
HREF="samba-faq.html"><LINK
@@ -69,17 +70,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="GENERAL"
-></A
->Chapter 1. General Information</H1
+NAME="GENERAL">Chapter 1. General Information</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN12"
-></A
->1.1. Where can I get it?</H1
+NAME="AEN12">1.1. Where can I get it?</H1
><P
>The Samba suite is available at the <A
HREF="http://samba.org/"
@@ -92,9 +89,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN16"
-></A
->1.2. What do the version numbers mean?</H1
+NAME="AEN16">1.2. What do the version numbers mean?</H1
><P
>It is not recommended that you run a version of Samba with the word
"alpha" in its name unless you know what you are doing and are willing
@@ -141,7 +136,7 @@ levels are released which give us the pXX series, for example 1.9.16p2.</TD
></TABLE
><P
></P
->&#13;</P
+></P
><P
>So the progression goes:
@@ -166,9 +161,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN28"
-></A
->1.3. What platforms are supported?</H1
+NAME="AEN28">1.3. What platforms are supported?</H1
><P
>Many different platforms have run Samba successfully. The platforms
most widely used and thus best tested are Linux and SunOS.</P
@@ -342,9 +335,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN71"
-></A
->1.4. How do I subscribe to the Samba Mailing Lists?</H1
+NAME="AEN71">1.4. How do I subscribe to the Samba Mailing Lists?</H1
><P
>Look at <A
HREF="http://samba.org/samba/archives.html"
@@ -357,15 +348,13 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN75"
-></A
->1.5. Pizza supply details</H1
+NAME="AEN75">1.5. Pizza supply details</H1
><P
>Those who have registered in the Samba survey as "Pizza Factory" will
already know this, but the rest may need some help. Andrew doesn't ask
for payment, but he does appreciate it when people give him
pizza. This calls for a little organisation when the pizza donor is
-twenty thousand kilometres away, but it has been done.&#13;</P
+twenty thousand kilometres away, but it has been done.</P
><P
>Method 1: Ring up your local branch of an international pizza chain
and see if they honour their vouchers internationally. Pizza Hut do,
diff --git a/docs/faq/install.html b/docs/faq/install.html
index 23403ab96b..e647aef6d4 100644
--- a/docs/faq/install.html
+++ b/docs/faq/install.html
@@ -5,7 +5,8 @@
>Compiling and installing Samba on a Unix host</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="HOME"
TITLE="Samba FAQ"
HREF="samba-faq.html"><LINK
@@ -69,17 +70,13 @@ WIDTH="100%"></DIV
CLASS="CHAPTER"
><H1
><A
-NAME="INSTALL"
-></A
->Chapter 2. Compiling and installing Samba on a Unix host</H1
+NAME="INSTALL">Chapter 2. Compiling and installing Samba on a Unix host</H1
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN84"
-></A
->2.1. I can't see the Samba server in any browse lists!</H1
+NAME="AEN84">2.1. I can't see the Samba server in any browse lists!</H1
><P
>See Browsing.html in the docs directory of the samba source
for more information on browsing.</P
@@ -100,9 +97,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN89"
-></A
->2.2. Some files that I KNOW are on the server doesn't show up when I view the files from my client!</H1
+NAME="AEN89">2.2. Some files that I KNOW are on the server doesn't show up when I view the files from my client!</H1
><P
>See the next question.</P
></DIV
@@ -111,9 +106,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN92"
-></A
->2.3. Some files on the server show up with really wierd filenames when I view the files from my client!</H1
+NAME="AEN92">2.3. Some files on the server show up with really wierd filenames when I view the files from my client!</H1
><P
>If you check what files are not showing up, you will note that they
are files which contain upper case letters or which are otherwise not
@@ -131,9 +124,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN96"
-></A
->2.4. My client reports "cannot locate specified computer" or similar</H1
+NAME="AEN96">2.4. My client reports "cannot locate specified computer" or similar</H1
><P
>This indicates one of three things: You supplied an incorrect server
name, the underlying TCP/IP layer is not working correctly, or the
@@ -166,9 +157,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN103"
-></A
->2.5. My client reports "cannot locate specified share name" or similar</H1
+NAME="AEN103">2.5. My client reports "cannot locate specified share name" or similar</H1
><P
>This message indicates that your client CAN locate the specified
server, which is a good start, but that it cannot find a service of
@@ -209,9 +198,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN112"
-></A
->2.6. Printing doesn't work</H1
+NAME="AEN112">2.6. Printing doesn't work</H1
><P
>Make sure that the specified print command for the service you are
connecting to is correct and that it has a fully-qualified path (eg.,
@@ -245,9 +232,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN120"
-></A
->2.7. My client reports "This server is not configured to list shared resources"</H1
+NAME="AEN120">2.7. My client reports "This server is not configured to list shared resources"</H1
><P
>Your guest account is probably invalid for some reason. Samba uses the
guest account for browsing in smbd. Check that your guest account is
@@ -260,9 +245,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN124"
-></A
->2.8. Log message "you appear to have a trapdoor uid system"</H1
+NAME="AEN124">2.8. Log message "you appear to have a trapdoor uid system"</H1
><P
>This can have several causes. It might be because you are using a uid
or gid of 65535 or -1. This is a VERY bad idea, and is a big security
@@ -301,9 +284,7 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN132"
-></A
->2.9. Why are my file's timestamps off by an hour, or by a few hours?</H1
+NAME="AEN132">2.9. Why are my file's timestamps off by an hour, or by a few hours?</H1
><P
>This is from Paul Eggert eggert@twinsun.com.</P
><P
@@ -418,20 +399,16 @@ CLASS="SECT1"
><H1
CLASS="SECT1"
><A
-NAME="AEN155"
-></A
->2.10. How do I set the printer driver name correctly?</H1
+NAME="AEN155">2.10. How do I set the printer driver name correctly?</H1
><P
->Question:</P
-><P
-><SPAN
+>Question:
+<SPAN
CLASS="QUOTE"
>" On NT, I opened "Printer Manager" and "Connect to Printer".
Enter ["\\ptdi270\ps1"] in the box of printer. I got the
following error message
"</SPAN
->
- </P
+></P
><P
> <PRE
CLASS="PROGRAMLISTING"
diff --git a/docs/faq/samba-faq.html b/docs/faq/samba-faq.html
index f6a9d83128..ec46e078a3 100644
--- a/docs/faq/samba-faq.html
+++ b/docs/faq/samba-faq.html
@@ -5,7 +5,8 @@
>Samba FAQ</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77"><LINK
+CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
+"><LINK
REL="NEXT"
TITLE="General Information"
HREF="general.html"></HEAD
@@ -19,28 +20,20 @@ ALINK="#0000FF"
><DIV
CLASS="BOOK"
><A
-NAME="SAMBA-FAQ"
-></A
-><DIV
+NAME="SAMBA-FAQ"><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
><A
-NAME="SAMBA-FAQ"
-></A
->Samba FAQ</H1
+NAME="SAMBA-FAQ">Samba FAQ</H1
><H3
CLASS="AUTHOR"
><A
-NAME="AEN4"
-></A
->Samba Team</H3
+NAME="AEN4">Samba Team</H3
><HR></DIV
><H1
><A
-NAME="AEN7"
-></A
->Dedication</H1
+NAME="AEN7">Dedication</H1
><P
>This is the Frequently Asked Questions (FAQ) document for
Samba, the free and very popular SMB server product. An SMB server
@@ -163,7 +156,7 @@ HREF="config.html"
><DL
><DT
>3.1. <A
-HREF="config.html#AEN170"
+HREF="config.html#AEN169"
>I have set 'force user' and samba still makes 'root' the owner of all the files I touch!</A
></DT
></DL
@@ -177,17 +170,17 @@ HREF="clientapp.html"
><DL
><DT
>4.1. <A
-HREF="clientapp.html#AEN175"
+HREF="clientapp.html#AEN174"
>MS Office Setup reports "Cannot change properties of '\MSOFFICE\SETUP.INI'"</A
></DT
><DT
>4.2. <A
-HREF="clientapp.html#AEN180"
+HREF="clientapp.html#AEN179"
>How to use a Samba share as an administrative share for MS Office, etc.</A
></DT
><DT
>4.3. <A
-HREF="clientapp.html#AEN195"
+HREF="clientapp.html#AEN194"
>Microsoft Access database opening errors</A
></DT
></DL
@@ -201,34 +194,39 @@ HREF="errors.html"
><DL
><DT
>5.1. <A
-HREF="errors.html#AEN206"
+HREF="errors.html#AEN205"
>Not listening for calling name</A
></DT
><DT
>5.2. <A
-HREF="errors.html#AEN213"
+HREF="errors.html#AEN212"
>System Error 1240</A
></DT
><DT
>5.3. <A
-HREF="errors.html#AEN220"
+HREF="errors.html#AEN219"
>smbclient ignores -N !</A
></DT
><DT
>5.4. <A
-HREF="errors.html#AEN229"
+HREF="errors.html#AEN228"
>The data on the CD-Drive I've shared seems to be corrupted!</A
></DT
><DT
>5.5. <A
-HREF="errors.html#AEN233"
+HREF="errors.html#AEN232"
>Why can users access home directories of other users?</A
></DT
><DT
>5.6. <A
-HREF="errors.html#AEN246"
+HREF="errors.html#AEN245"
>Until a few minutes after samba has started, clients get the error "Domain Controller Unavailable"</A
></DT
+><DT
+>5.7. <A
+HREF="errors.html#AEN248"
+>I'm getting "open_oplock_ipc: Failed to get local UDP socket for address 100007f. Error was Cannot assign requested" in the logs</A
+></DT
></DL
></DD
><DT
@@ -240,56 +238,56 @@ HREF="features.html"
><DL
><DT
>6.1. <A
-HREF="features.html#AEN251"
+HREF="features.html#AEN253"
>How can I prevent my samba server from being used to distribute the Nimda worm?</A
></DT
><DT
>6.2. <A
-HREF="features.html#AEN265"
+HREF="features.html#AEN267"
>How can I use samba as a fax server?</A
></DT
><DD
><DL
><DT
>6.2.1. <A
-HREF="features.html#AEN276"
+HREF="features.html#AEN278"
>Tools for printing faxes</A
></DT
><DT
>6.2.2. <A
-HREF="features.html#AEN286"
+HREF="features.html#AEN288"
>Making the fax-server</A
></DT
><DT
>6.2.3. <A
-HREF="features.html#AEN302"
+HREF="features.html#AEN304"
>Installing the client drivers</A
></DT
><DT
>6.2.4. <A
-HREF="features.html#AEN316"
+HREF="features.html#AEN318"
>Example smb.conf</A
></DT
></DL
></DD
><DT
>6.3. <A
-HREF="features.html#AEN320"
+HREF="features.html#AEN322"
>Samba doesn't work well together with DHCP!</A
></DT
><DT
>6.4. <A
-HREF="features.html#AEN333"
+HREF="features.html#AEN335"
>How can I assign NetBIOS names to clients with DHCP?</A
></DT
><DT
>6.5. <A
-HREF="features.html#AEN340"
+HREF="features.html#AEN342"
>How do I convert between unix and dos text formats?</A
></DT
><DT
>6.6. <A
-HREF="features.html#AEN345"
+HREF="features.html#AEN347"
>Does samba have wins replication support?</A
></DT
></DL
diff --git a/docs/htmldocs/Samba-HOWTO-Collection.html b/docs/htmldocs/Samba-HOWTO-Collection.html
deleted file mode 100644
index 2bb324d9f3..0000000000
--- a/docs/htmldocs/Samba-HOWTO-Collection.html
+++ /dev/null
@@ -1,16882 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML
-><HEAD
-><TITLE
->SAMBA Project Documentation</TITLE
-><META
-NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
-><BODY
-CLASS="BOOK"
-BGCOLOR="#FFFFFF"
-TEXT="#000000"
-LINK="#0000FF"
-VLINK="#840084"
-ALINK="#0000FF"
-><DIV
-CLASS="BOOK"
-><A
-NAME="SAMBA-HOWTO-COLLECTION"
-></A
-><DIV
-CLASS="TITLEPAGE"
-><H1
-CLASS="TITLE"
-><A
-NAME="SAMBA-HOWTO-COLLECTION"
-></A
->SAMBA Project Documentation</H1
-><H3
-CLASS="AUTHOR"
-><A
-NAME="AEN4"
-></A
->SAMBA Team</H3
-><HR></DIV
-><HR><H1
-><A
-NAME="AEN8"
-></A
->Abstract</H1
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Last Update</I
-></SPAN
-> : Thu Aug 15 12:48:45 CDT 2002</P
-><P
->This book is a collection of HOWTOs added to Samba documentation over the years.
-I try to ensure that all are current, but sometimes the is a larger job
-than one person can maintain. The most recent version of this document
-can be found at <A
-HREF="http://www.samba.org/"
-TARGET="_top"
->http://www.samba.org/</A
->
-on the "Documentation" page. Please send updates to <A
-HREF="mailto:jerry@samba.org"
-TARGET="_top"
->jerry@samba.org</A
->.</P
-><P
->This documentation is distributed under the GNU General Public License (GPL)
-version 2. A copy of the license is included with the Samba source
-distribution. A copy can be found on-line at <A
-HREF="http://www.fsf.org/licenses/gpl.txt"
-TARGET="_top"
->http://www.fsf.org/licenses/gpl.txt</A
-></P
-><P
->Cheers, jerry</P
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->I. <A
-HREF="#AEN18"
->General installation</A
-></DT
-><DD
-><DL
-><DT
->1. <A
-HREF="#INSTALL"
->How to Install and Test SAMBA</A
-></DT
-><DD
-><DL
-><DT
->1.1. <A
-HREF="#AEN25"
->Read the man pages</A
-></DT
-><DT
->1.2. <A
-HREF="#AEN35"
->Building the Binaries</A
-></DT
-><DT
->1.3. <A
-HREF="#AEN63"
->The all important step</A
-></DT
-><DT
->1.4. <A
-HREF="#AEN67"
->Create the smb configuration file.</A
-></DT
-><DT
->1.5. <A
-HREF="#AEN81"
->Test your config file with
- <B
-CLASS="COMMAND"
->testparm</B
-></A
-></DT
-><DT
->1.6. <A
-HREF="#AEN89"
->Starting the smbd and nmbd</A
-></DT
-><DT
->1.7. <A
-HREF="#AEN144"
->Try listing the shares available on your
- server</A
-></DT
-><DT
->1.8. <A
-HREF="#AEN153"
->Try connecting with the unix client</A
-></DT
-><DT
->1.9. <A
-HREF="#AEN169"
->Try connecting from a DOS, WfWg, Win9x, WinNT,
- Win2k, OS/2, etc... client</A
-></DT
-><DT
->1.10. <A
-HREF="#AEN183"
->What If Things Don't Work?</A
-></DT
-></DL
-></DD
-><DT
->2. <A
-HREF="#IMPROVED-BROWSING"
->Improved browsing in samba</A
-></DT
-><DD
-><DL
-><DT
->2.1. <A
-HREF="#AEN228"
->Overview of browsing</A
-></DT
-><DT
->2.2. <A
-HREF="#AEN232"
->Browsing support in samba</A
-></DT
-><DT
->2.3. <A
-HREF="#AEN241"
->Problem resolution</A
-></DT
-><DT
->2.4. <A
-HREF="#AEN248"
->Browsing across subnets</A
-></DT
-><DT
->2.5. <A
-HREF="#AEN288"
->Setting up a WINS server</A
-></DT
-><DT
->2.6. <A
-HREF="#AEN307"
->Setting up Browsing in a WORKGROUP</A
-></DT
-><DT
->2.7. <A
-HREF="#AEN325"
->Setting up Browsing in a DOMAIN</A
-></DT
-><DT
->2.8. <A
-HREF="#AEN335"
->Forcing samba to be the master</A
-></DT
-><DT
->2.9. <A
-HREF="#AEN344"
->Making samba the domain master</A
-></DT
-><DT
->2.10. <A
-HREF="#AEN362"
->Note about broadcast addresses</A
-></DT
-><DT
->2.11. <A
-HREF="#AEN365"
->Multiple interfaces</A
-></DT
-></DL
-></DD
-><DT
->3. <A
-HREF="#OPLOCKS"
->Oplocks</A
-></DT
-><DD
-><DL
-><DT
->3.1. <A
-HREF="#AEN377"
->What are oplocks?</A
-></DT
-></DL
-></DD
-><DT
->4. <A
-HREF="#BROWSING-QUICK"
->Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</A
-></DT
-><DD
-><DL
-><DT
->4.1. <A
-HREF="#AEN392"
->Discussion</A
-></DT
-><DT
->4.2. <A
-HREF="#AEN400"
->Use of the "Remote Announce" parameter</A
-></DT
-><DT
->4.3. <A
-HREF="#AEN414"
->Use of the "Remote Browse Sync" parameter</A
-></DT
-><DT
->4.4. <A
-HREF="#AEN419"
->Use of WINS</A
-></DT
-><DT
->4.5. <A
-HREF="#AEN430"
->Do NOT use more than one (1) protocol on MS Windows machines</A
-></DT
-><DT
->4.6. <A
-HREF="#AEN436"
->Name Resolution Order</A
-></DT
-></DL
-></DD
-><DT
->5. <A
-HREF="#PWENCRYPT"
->LanMan and NT Password Encryption in Samba</A
-></DT
-><DD
-><DL
-><DT
->5.1. <A
-HREF="#AEN472"
->Introduction</A
-></DT
-><DT
->5.2. <A
-HREF="#AEN477"
->Important Notes About Security</A
-></DT
-><DT
->5.3. <A
-HREF="#AEN512"
->The smbpasswd Command</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->II. <A
-HREF="#AEN544"
->Type of installation</A
-></DT
-><DD
-><DL
-><DT
->6. <A
-HREF="#SAMBA-PDC"
->How to Configure Samba as a NT4 Primary Domain Controller</A
-></DT
-><DD
-><DL
-><DT
->6.1. <A
-HREF="#AEN566"
->Prerequisite Reading</A
-></DT
-><DT
->6.2. <A
-HREF="#AEN572"
->Background</A
-></DT
-><DT
->6.3. <A
-HREF="#AEN611"
->Configuring the Samba Domain Controller</A
-></DT
-><DT
->6.4. <A
-HREF="#AEN654"
->Creating Machine Trust Accounts and Joining Clients to the
-Domain</A
-></DT
-><DT
->6.5. <A
-HREF="#AEN738"
->Common Problems and Errors</A
-></DT
-><DT
->6.6. <A
-HREF="#AEN786"
->System Policies and Profiles</A
-></DT
-><DT
->6.7. <A
-HREF="#AEN830"
->What other help can I get?</A
-></DT
-><DT
->6.8. <A
-HREF="#AEN944"
->Domain Control for Windows 9x/ME</A
-></DT
-><DT
->6.9. <A
-HREF="#AEN1082"
->DOMAIN_CONTROL.txt : Windows NT Domain Control &#38; Samba</A
-></DT
-></DL
-></DD
-><DT
->7. <A
-HREF="#SAMBA-BDC"
->How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</A
-></DT
-><DD
-><DL
-><DT
->7.1. <A
-HREF="#AEN1118"
->Prerequisite Reading</A
-></DT
-><DT
->7.2. <A
-HREF="#AEN1122"
->Background</A
-></DT
-><DT
->7.3. <A
-HREF="#AEN1130"
->What qualifies a Domain Controller on the network?</A
-></DT
-><DT
->7.4. <A
-HREF="#AEN1139"
->Can Samba be a Backup Domain Controller?</A
-></DT
-><DT
->7.5. <A
-HREF="#AEN1143"
->How do I set up a Samba BDC?</A
-></DT
-></DL
-></DD
-><DT
->8. <A
-HREF="#ADS"
->Samba as a ADS domain member</A
-></DT
-><DD
-><DL
-><DT
->8.1. <A
-HREF="#AEN1178"
->Installing the required packages for Debian</A
-></DT
-><DT
->8.2. <A
-HREF="#AEN1184"
->Installing the required packages for RedHat</A
-></DT
-><DT
->8.3. <A
-HREF="#AEN1193"
->Compile Samba</A
-></DT
-><DT
->8.4. <A
-HREF="#AEN1205"
->Setup your /etc/krb5.conf</A
-></DT
-><DT
->8.5. <A
-HREF="#AEN1215"
->Create the computer account</A
-></DT
-><DT
->8.6. <A
-HREF="#AEN1231"
->Test your server setup</A
-></DT
-><DT
->8.7. <A
-HREF="#AEN1236"
->Testing with smbclient</A
-></DT
-><DT
->8.8. <A
-HREF="#AEN1239"
->Notes</A
-></DT
-></DL
-></DD
-><DT
->9. <A
-HREF="#DOMAIN-SECURITY"
->Samba as a NT4 domain member</A
-></DT
-><DD
-><DL
-><DT
->9.1. <A
-HREF="#AEN1261"
->Joining an NT Domain with Samba 2.2</A
-></DT
-><DT
->9.2. <A
-HREF="#AEN1325"
->Samba and Windows 2000 Domains</A
-></DT
-><DT
->9.3. <A
-HREF="#AEN1330"
->Why is this better than security = server?</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->III. <A
-HREF="#AEN1346"
->Optional configuration</A
-></DT
-><DD
-><DL
-><DT
->10. <A
-HREF="#INTEGRATE-MS-NETWORKS"
->Integrating MS Windows networks with Samba</A
-></DT
-><DD
-><DL
-><DT
->10.1. <A
-HREF="#AEN1362"
->Agenda</A
-></DT
-><DT
->10.2. <A
-HREF="#AEN1384"
->Name Resolution in a pure Unix/Linux world</A
-></DT
-><DT
->10.3. <A
-HREF="#AEN1447"
->Name resolution as used within MS Windows networking</A
-></DT
-><DT
->10.4. <A
-HREF="#AEN1492"
->How browsing functions and how to deploy stable and
-dependable browsing using Samba</A
-></DT
-><DT
->10.5. <A
-HREF="#AEN1502"
->MS Windows security options and how to configure
-Samba for seemless integration</A
-></DT
-><DT
->10.6. <A
-HREF="#AEN1572"
->Conclusions</A
-></DT
-></DL
-></DD
-><DT
->11. <A
-HREF="#UNIX-PERMISSIONS"
->UNIX Permission Bits and Windows NT Access Control Lists</A
-></DT
-><DD
-><DL
-><DT
->11.1. <A
-HREF="#AEN1593"
->Viewing and changing UNIX permissions using the NT
- security dialogs</A
-></DT
-><DT
->11.2. <A
-HREF="#AEN1602"
->How to view file security on a Samba share</A
-></DT
-><DT
->11.3. <A
-HREF="#AEN1613"
->Viewing file ownership</A
-></DT
-><DT
->11.4. <A
-HREF="#AEN1633"
->Viewing file or directory permissions</A
-></DT
-><DT
->11.5. <A
-HREF="#AEN1669"
->Modifying file or directory permissions</A
-></DT
-><DT
->11.6. <A
-HREF="#AEN1691"
->Interaction with the standard Samba create mask
- parameters</A
-></DT
-><DT
->11.7. <A
-HREF="#AEN1755"
->Interaction with the standard Samba file attribute
- mapping</A
-></DT
-></DL
-></DD
-><DT
->12. <A
-HREF="#PAM"
->Configuring PAM for distributed but centrally
-managed authentication</A
-></DT
-><DD
-><DL
-><DT
->12.1. <A
-HREF="#AEN1776"
->Samba and PAM</A
-></DT
-><DT
->12.2. <A
-HREF="#AEN1820"
->Distributed Authentication</A
-></DT
-><DT
->12.3. <A
-HREF="#AEN1827"
->PAM Configuration in smb.conf</A
-></DT
-></DL
-></DD
-><DT
->13. <A
-HREF="#MSDFS"
->Hosting a Microsoft Distributed File System tree on Samba</A
-></DT
-><DD
-><DL
-><DT
->13.1. <A
-HREF="#AEN1847"
->Instructions</A
-></DT
-></DL
-></DD
-><DT
->14. <A
-HREF="#PRINTING"
->Printing Support</A
-></DT
-><DD
-><DL
-><DT
->14.1. <A
-HREF="#AEN1908"
->Introduction</A
-></DT
-><DT
->14.2. <A
-HREF="#AEN1930"
->Configuration</A
-></DT
-><DT
->14.3. <A
-HREF="#AEN2038"
->The Imprints Toolset</A
-></DT
-><DT
->14.4. <A
-HREF="#AEN2081"
->Diagnosis</A
-></DT
-></DL
-></DD
-><DT
->15. <A
-HREF="#SECURITYLEVELS"
->Security levels</A
-></DT
-><DD
-><DL
-><DT
->15.1. <A
-HREF="#AEN2186"
->Introduction</A
-></DT
-><DT
->15.2. <A
-HREF="#AEN2197"
->More complete description of security levels</A
-></DT
-></DL
-></DD
-><DT
->16. <A
-HREF="#WINBIND"
->Unified Logons between Windows NT and UNIX using Winbind</A
-></DT
-><DD
-><DL
-><DT
->16.1. <A
-HREF="#AEN2249"
->Abstract</A
-></DT
-><DT
->16.2. <A
-HREF="#AEN2253"
->Introduction</A
-></DT
-><DT
->16.3. <A
-HREF="#AEN2266"
->What Winbind Provides</A
-></DT
-><DT
->16.4. <A
-HREF="#AEN2277"
->How Winbind Works</A
-></DT
-><DT
->16.5. <A
-HREF="#AEN2317"
->Installation and Configuration</A
-></DT
-><DT
->16.6. <A
-HREF="#AEN2566"
->Limitations</A
-></DT
-><DT
->16.7. <A
-HREF="#AEN2576"
->Conclusion</A
-></DT
-></DL
-></DD
-><DT
->17. <A
-HREF="#PDB-MYSQL"
->Passdb MySQL plugin</A
-></DT
-><DD
-><DL
-><DT
->17.1. <A
-HREF="#AEN2590"
->Building</A
-></DT
-><DT
->17.2. <A
-HREF="#AEN2596"
->Configuring</A
-></DT
-><DT
->17.3. <A
-HREF="#AEN2611"
->Using plaintext passwords or encrypted password</A
-></DT
-><DT
->17.4. <A
-HREF="#AEN2616"
->Getting non-column data from the table</A
-></DT
-></DL
-></DD
-><DT
->18. <A
-HREF="#PDB-XML"
->Passdb XML plugin</A
-></DT
-><DD
-><DL
-><DT
->18.1. <A
-HREF="#AEN2635"
->Building</A
-></DT
-><DT
->18.2. <A
-HREF="#AEN2641"
->Usage</A
-></DT
-></DL
-></DD
-><DT
->19. <A
-HREF="#SAMBA-LDAP-HOWTO"
->Storing Samba's User/Machine Account information in an LDAP Directory</A
-></DT
-><DD
-><DL
-><DT
->19.1. <A
-HREF="#AEN2664"
->Purpose</A
-></DT
-><DT
->19.2. <A
-HREF="#AEN2684"
->Introduction</A
-></DT
-><DT
->19.3. <A
-HREF="#AEN2713"
->Supported LDAP Servers</A
-></DT
-><DT
->19.4. <A
-HREF="#AEN2718"
->Schema and Relationship to the RFC 2307 posixAccount</A
-></DT
-><DT
->19.5. <A
-HREF="#AEN2730"
->Configuring Samba with LDAP</A
-></DT
-><DT
->19.6. <A
-HREF="#AEN2777"
->Accounts and Groups management</A
-></DT
-><DT
->19.7. <A
-HREF="#AEN2782"
->Security and sambaAccount</A
-></DT
-><DT
->19.8. <A
-HREF="#AEN2802"
->LDAP specials attributes for sambaAccounts</A
-></DT
-><DT
->19.9. <A
-HREF="#AEN2872"
->Example LDIF Entries for a sambaAccount</A
-></DT
-><DT
->19.10. <A
-HREF="#AEN2880"
->Comments</A
-></DT
-></DL
-></DD
-><DT
->20. <A
-HREF="#CVS-ACCESS"
->HOWTO Access Samba source code via CVS</A
-></DT
-><DD
-><DL
-><DT
->20.1. <A
-HREF="#AEN2891"
->Introduction</A
-></DT
-><DT
->20.2. <A
-HREF="#AEN2896"
->CVS Access to samba.org</A
-></DT
-></DL
-></DD
-><DT
->21. <A
-HREF="#GROUPMAPPING"
->Group mapping HOWTO</A
-></DT
-><DT
->22. <A
-HREF="#SPEED"
->Samba performance issues</A
-></DT
-><DD
-><DL
-><DT
->22.1. <A
-HREF="#AEN2982"
->Comparisons</A
-></DT
-><DT
->22.2. <A
-HREF="#AEN2988"
->Oplocks</A
-></DT
-><DT
->22.3. <A
-HREF="#AEN3008"
->Socket options</A
-></DT
-><DT
->22.4. <A
-HREF="#AEN3015"
->Read size</A
-></DT
-><DT
->22.5. <A
-HREF="#AEN3020"
->Max xmit</A
-></DT
-><DT
->22.6. <A
-HREF="#AEN3025"
->Locking</A
-></DT
-><DT
->22.7. <A
-HREF="#AEN3029"
->Share modes</A
-></DT
-><DT
->22.8. <A
-HREF="#AEN3034"
->Log level</A
-></DT
-><DT
->22.9. <A
-HREF="#AEN3037"
->Wide lines</A
-></DT
-><DT
->22.10. <A
-HREF="#AEN3040"
->Read raw</A
-></DT
-><DT
->22.11. <A
-HREF="#AEN3045"
->Write raw</A
-></DT
-><DT
->22.12. <A
-HREF="#AEN3049"
->Read prediction</A
-></DT
-><DT
->22.13. <A
-HREF="#AEN3056"
->Memory mapping</A
-></DT
-><DT
->22.14. <A
-HREF="#AEN3061"
->Slow Clients</A
-></DT
-><DT
->22.15. <A
-HREF="#AEN3065"
->Slow Logins</A
-></DT
-><DT
->22.16. <A
-HREF="#AEN3068"
->Client tuning</A
-></DT
-><DT
->22.17. <A
-HREF="#AEN3100"
->My Results</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->IV. <A
-HREF="#AEN3106"
->Appendixes</A
-></DT
-><DD
-><DL
-><DT
->23. <A
-HREF="#PORTABILITY"
->Portability</A
-></DT
-><DD
-><DL
-><DT
->23.1. <A
-HREF="#AEN3115"
->HPUX</A
-></DT
-><DT
->23.2. <A
-HREF="#AEN3121"
->SCO Unix</A
-></DT
-><DT
->23.3. <A
-HREF="#AEN3125"
->DNIX</A
-></DT
-><DT
->23.4. <A
-HREF="#AEN3154"
->RedHat Linux Rembrandt-II</A
-></DT
-></DL
-></DD
-><DT
->24. <A
-HREF="#OTHER-CLIENTS"
->Samba and other CIFS clients</A
-></DT
-><DD
-><DL
-><DT
->24.1. <A
-HREF="#AEN3175"
->Macintosh clients?</A
-></DT
-><DT
->24.2. <A
-HREF="#AEN3184"
->OS2 Client</A
-></DT
-><DT
->24.3. <A
-HREF="#AEN3224"
->Windows for Workgroups</A
-></DT
-><DT
->24.4. <A
-HREF="#AEN3245"
->Windows '95/'98</A
-></DT
-><DT
->24.5. <A
-HREF="#AEN3261"
->Windows 2000 Service Pack 2</A
-></DT
-></DL
-></DD
-><DT
->25. <A
-HREF="#BUGREPORT"
->Reporting Bugs</A
-></DT
-><DD
-><DL
-><DT
->25.1. <A
-HREF="#AEN3285"
->Introduction</A
-></DT
-><DT
->25.2. <A
-HREF="#AEN3295"
->General info</A
-></DT
-><DT
->25.3. <A
-HREF="#AEN3301"
->Debug levels</A
-></DT
-><DT
->25.4. <A
-HREF="#AEN3318"
->Internal errors</A
-></DT
-><DT
->25.5. <A
-HREF="#AEN3328"
->Attaching to a running process</A
-></DT
-><DT
->25.6. <A
-HREF="#AEN3331"
->Patches</A
-></DT
-></DL
-></DD
-><DT
->26. <A
-HREF="#DIAGNOSIS"
->Diagnosing your samba server</A
-></DT
-><DD
-><DL
-><DT
->26.1. <A
-HREF="#AEN3354"
->Introduction</A
-></DT
-><DT
->26.2. <A
-HREF="#AEN3359"
->Assumptions</A
-></DT
-><DT
->26.3. <A
-HREF="#AEN3369"
->Tests</A
-></DT
-><DT
->26.4. <A
-HREF="#AEN3479"
->Still having troubles?</A
-></DT
-></DL
-></DD
-></DL
-></DD
-></DL
-></DIV
-><DIV
-CLASS="PART"
-><A
-NAME="AEN18"
-></A
-><DIV
-CLASS="TITLEPAGE"
-><H1
-CLASS="TITLE"
->I. General installation</H1
-><DIV
-CLASS="PARTINTRO"
-><A
-NAME="AEN20"
-></A
-><H1
->Introduction</H1
-><P
->This part contains general info on how to install samba
-and how to configure the parts of samba you will most likely need.
-PLEASE read this.</P
-></DIV
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->1. <A
-HREF="#INSTALL"
->How to Install and Test SAMBA</A
-></DT
-><DD
-><DL
-><DT
->1.1. <A
-HREF="#AEN25"
->Read the man pages</A
-></DT
-><DT
->1.2. <A
-HREF="#AEN35"
->Building the Binaries</A
-></DT
-><DT
->1.3. <A
-HREF="#AEN63"
->The all important step</A
-></DT
-><DT
->1.4. <A
-HREF="#AEN67"
->Create the smb configuration file.</A
-></DT
-><DT
->1.5. <A
-HREF="#AEN81"
->Test your config file with
- <B
-CLASS="COMMAND"
->testparm</B
-></A
-></DT
-><DT
->1.6. <A
-HREF="#AEN89"
->Starting the smbd and nmbd</A
-></DT
-><DD
-><DL
-><DT
->1.6.1. <A
-HREF="#AEN99"
->Starting from inetd.conf</A
-></DT
-><DT
->1.6.2. <A
-HREF="#AEN128"
->Alternative: starting it as a daemon</A
-></DT
-></DL
-></DD
-><DT
->1.7. <A
-HREF="#AEN144"
->Try listing the shares available on your
- server</A
-></DT
-><DT
->1.8. <A
-HREF="#AEN153"
->Try connecting with the unix client</A
-></DT
-><DT
->1.9. <A
-HREF="#AEN169"
->Try connecting from a DOS, WfWg, Win9x, WinNT,
- Win2k, OS/2, etc... client</A
-></DT
-><DT
->1.10. <A
-HREF="#AEN183"
->What If Things Don't Work?</A
-></DT
-><DD
-><DL
-><DT
->1.10.1. <A
-HREF="#AEN188"
->Diagnosing Problems</A
-></DT
-><DT
->1.10.2. <A
-HREF="#AEN192"
->Scope IDs</A
-></DT
-><DT
->1.10.3. <A
-HREF="#AEN195"
->Choosing the Protocol Level</A
-></DT
-><DT
->1.10.4. <A
-HREF="#AEN204"
->Printing from UNIX to a Client PC</A
-></DT
-><DT
->1.10.5. <A
-HREF="#AEN209"
->Locking</A
-></DT
-><DT
->1.10.6. <A
-HREF="#AEN218"
->Mapping Usernames</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->2. <A
-HREF="#IMPROVED-BROWSING"
->Improved browsing in samba</A
-></DT
-><DD
-><DL
-><DT
->2.1. <A
-HREF="#AEN228"
->Overview of browsing</A
-></DT
-><DT
->2.2. <A
-HREF="#AEN232"
->Browsing support in samba</A
-></DT
-><DT
->2.3. <A
-HREF="#AEN241"
->Problem resolution</A
-></DT
-><DT
->2.4. <A
-HREF="#AEN248"
->Browsing across subnets</A
-></DT
-><DD
-><DL
-><DT
->2.4.1. <A
-HREF="#AEN253"
->How does cross subnet browsing work ?</A
-></DT
-></DL
-></DD
-><DT
->2.5. <A
-HREF="#AEN288"
->Setting up a WINS server</A
-></DT
-><DT
->2.6. <A
-HREF="#AEN307"
->Setting up Browsing in a WORKGROUP</A
-></DT
-><DT
->2.7. <A
-HREF="#AEN325"
->Setting up Browsing in a DOMAIN</A
-></DT
-><DT
->2.8. <A
-HREF="#AEN335"
->Forcing samba to be the master</A
-></DT
-><DT
->2.9. <A
-HREF="#AEN344"
->Making samba the domain master</A
-></DT
-><DT
->2.10. <A
-HREF="#AEN362"
->Note about broadcast addresses</A
-></DT
-><DT
->2.11. <A
-HREF="#AEN365"
->Multiple interfaces</A
-></DT
-></DL
-></DD
-><DT
->3. <A
-HREF="#OPLOCKS"
->Oplocks</A
-></DT
-><DD
-><DL
-><DT
->3.1. <A
-HREF="#AEN377"
->What are oplocks?</A
-></DT
-></DL
-></DD
-><DT
->4. <A
-HREF="#BROWSING-QUICK"
->Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</A
-></DT
-><DD
-><DL
-><DT
->4.1. <A
-HREF="#AEN392"
->Discussion</A
-></DT
-><DT
->4.2. <A
-HREF="#AEN400"
->Use of the "Remote Announce" parameter</A
-></DT
-><DT
->4.3. <A
-HREF="#AEN414"
->Use of the "Remote Browse Sync" parameter</A
-></DT
-><DT
->4.4. <A
-HREF="#AEN419"
->Use of WINS</A
-></DT
-><DT
->4.5. <A
-HREF="#AEN430"
->Do NOT use more than one (1) protocol on MS Windows machines</A
-></DT
-><DT
->4.6. <A
-HREF="#AEN436"
->Name Resolution Order</A
-></DT
-></DL
-></DD
-><DT
->5. <A
-HREF="#PWENCRYPT"
->LanMan and NT Password Encryption in Samba</A
-></DT
-><DD
-><DL
-><DT
->5.1. <A
-HREF="#AEN472"
->Introduction</A
-></DT
-><DT
->5.2. <A
-HREF="#AEN477"
->Important Notes About Security</A
-></DT
-><DD
-><DL
-><DT
->5.2.1. <A
-HREF="#AEN496"
->Advantages of SMB Encryption</A
-></DT
-><DT
->5.2.2. <A
-HREF="#AEN503"
->Advantages of non-encrypted passwords</A
-></DT
-></DL
-></DD
-><DT
->5.3. <A
-HREF="#AEN512"
->The smbpasswd Command</A
-></DT
-></DL
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="INSTALL"
-></A
->Chapter 1. How to Install and Test SAMBA</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN25"
-></A
->1.1. Read the man pages</H2
-><P
->The man pages distributed with SAMBA contain
- lots of useful info that will help to get you started.
- If you don't know how to read man pages then try
- something like:</P
-><P
-><TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->man smbd.8</B
-></TT
->
- or
- <TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->nroff -man smbd.8 | more
- </B
-></TT
-> on older unixes.</P
-><P
->Other sources of information are pointed to
- by the Samba web site,<A
-HREF="http://www.samba.org/"
-TARGET="_top"
-> http://www.samba.org</A
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN35"
-></A
->1.2. Building the Binaries</H2
-><P
->To do this, first run the program <B
-CLASS="COMMAND"
->./configure
- </B
-> in the source directory. This should automatically
- configure Samba for your operating system. If you have unusual
- needs then you may wish to run</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->./configure --help
- </B
-></TT
-></P
-><P
->first to see what special options you can enable.
- Then executing</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->make</B
-></TT
-></P
-><P
->will create the binaries. Once it's successfully
- compiled you can use </P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->make install</B
-></TT
-></P
-><P
->to install the binaries and manual pages. You can
- separately install the binaries and/or man pages using</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->make installbin
- </B
-></TT
-></P
-><P
->and</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->make installman
- </B
-></TT
-></P
-><P
->Note that if you are upgrading for a previous version
- of Samba you might like to know that the old versions of
- the binaries will be renamed with a ".old" extension. You
- can go back to the previous version with</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->make revert
- </B
-></TT
-></P
-><P
->if you find this version a disaster!</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN63"
-></A
->1.3. The all important step</H2
-><P
->At this stage you must fetch yourself a
- coffee or other drink you find stimulating. Getting the rest
- of the install right can sometimes be tricky, so you will
- probably need it.</P
-><P
->If you have installed samba before then you can skip
- this step.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN67"
-></A
->1.4. Create the smb configuration file.</H2
-><P
->There are sample configuration files in the examples
- subdirectory in the distribution. I suggest you read them
- carefully so you can see how the options go together in
- practice. See the man page for all the options.</P
-><P
->The simplest useful configuration file would be
- something like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> [global]
- workgroup = MYGROUP
-
- [homes]
- guest ok = no
- read only = no
- </PRE
-></P
-><P
->which would allow connections by anyone with an
- account on the server, using either their login name or
- "homes" as the service name. (Note that I also set the
- workgroup that Samba is part of. See BROWSING.txt for details)</P
-><P
->Note that <B
-CLASS="COMMAND"
->make install</B
-> will not install
- a <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file. You need to create it
- yourself. </P
-><P
->Make sure you put the smb.conf file in the same place
- you specified in the<TT
-CLASS="FILENAME"
->Makefile</TT
-> (the default is to
- look for it in <TT
-CLASS="FILENAME"
->/usr/local/samba/lib/</TT
->).</P
-><P
->For more information about security settings for the
- [homes] share please refer to the document UNIX_SECURITY.txt.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN81"
-></A
->1.5. Test your config file with
- <B
-CLASS="COMMAND"
->testparm</B
-></H2
-><P
->It's important that you test the validity of your
- <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file using the testparm program.
- If testparm runs OK then it will list the loaded services. If
- not it will give an error message.</P
-><P
->Make sure it runs OK and that the services look
- reasonable before proceeding. </P
-><P
->Always run testparm again when you change
- <TT
-CLASS="FILENAME"
->smb.conf</TT
->!</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN89"
-></A
->1.6. Starting the smbd and nmbd</H2
-><P
->You must choose to start smbd and nmbd either
- as daemons or from <B
-CLASS="COMMAND"
->inetd</B
->. Don't try
- to do both! Either you can put them in <TT
-CLASS="FILENAME"
-> inetd.conf</TT
-> and have them started on demand
- by <B
-CLASS="COMMAND"
->inetd</B
->, or you can start them as
- daemons either from the command line or in <TT
-CLASS="FILENAME"
-> /etc/rc.local</TT
->. See the man pages for details
- on the command line options. Take particular care to read
- the bit about what user you need to be in order to start
- Samba. In many cases you must be root.</P
-><P
->The main advantage of starting <B
-CLASS="COMMAND"
->smbd</B
->
- and <B
-CLASS="COMMAND"
->nmbd</B
-> using the recommended daemon method
- is that they will respond slightly more quickly to an initial connection
- request.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN99"
-></A
->1.6.1. Starting from inetd.conf</H3
-><P
->NOTE; The following will be different if
- you use NIS or NIS+ to distributed services maps.</P
-><P
->Look at your <TT
-CLASS="FILENAME"
->/etc/services</TT
->.
- What is defined at port 139/tcp. If nothing is defined
- then add a line like this:</P
-><P
-><TT
-CLASS="USERINPUT"
-><B
->netbios-ssn 139/tcp</B
-></TT
-></P
-><P
->similarly for 137/udp you should have an entry like:</P
-><P
-><TT
-CLASS="USERINPUT"
-><B
->netbios-ns 137/udp</B
-></TT
-></P
-><P
->Next edit your <TT
-CLASS="FILENAME"
->/etc/inetd.conf</TT
->
- and add two lines something like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd
- netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd
- </PRE
-></P
-><P
->The exact syntax of <TT
-CLASS="FILENAME"
->/etc/inetd.conf</TT
->
- varies between unixes. Look at the other entries in inetd.conf
- for a guide.</P
-><P
->NOTE: Some unixes already have entries like netbios_ns
- (note the underscore) in <TT
-CLASS="FILENAME"
->/etc/services</TT
->.
- You must either edit <TT
-CLASS="FILENAME"
->/etc/services</TT
-> or
- <TT
-CLASS="FILENAME"
->/etc/inetd.conf</TT
-> to make them consistent.</P
-><P
->NOTE: On many systems you may need to use the
- "interfaces" option in smb.conf to specify the IP address
- and netmask of your interfaces. Run <B
-CLASS="COMMAND"
->ifconfig</B
->
- as root if you don't know what the broadcast is for your
- net. <B
-CLASS="COMMAND"
->nmbd</B
-> tries to determine it at run
- time, but fails on some unixes. See the section on "testing nmbd"
- for a method of finding if you need to do this.</P
-><P
->!!!WARNING!!! Many unixes only accept around 5
- parameters on the command line in <TT
-CLASS="FILENAME"
->inetd.conf</TT
->.
- This means you shouldn't use spaces between the options and
- arguments, or you should use a script, and start the script
- from <B
-CLASS="COMMAND"
->inetd</B
->.</P
-><P
->Restart <B
-CLASS="COMMAND"
->inetd</B
->, perhaps just send
- it a HUP. If you have installed an earlier version of <B
-CLASS="COMMAND"
-> nmbd</B
-> then you may need to kill nmbd as well.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN128"
-></A
->1.6.2. Alternative: starting it as a daemon</H3
-><P
->To start the server as a daemon you should create
- a script something like this one, perhaps calling
- it <TT
-CLASS="FILENAME"
->startsmb</TT
->.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> #!/bin/sh
- /usr/local/samba/bin/smbd -D
- /usr/local/samba/bin/nmbd -D
- </PRE
-></P
-><P
->then make it executable with <B
-CLASS="COMMAND"
->chmod
- +x startsmb</B
-></P
-><P
->You can then run <B
-CLASS="COMMAND"
->startsmb</B
-> by
- hand or execute it from <TT
-CLASS="FILENAME"
->/etc/rc.local</TT
->
- </P
-><P
->To kill it send a kill signal to the processes
- <B
-CLASS="COMMAND"
->nmbd</B
-> and <B
-CLASS="COMMAND"
->smbd</B
->.</P
-><P
->NOTE: If you use the SVR4 style init system then
- you may like to look at the <TT
-CLASS="FILENAME"
->examples/svr4-startup</TT
->
- script to make Samba fit into that system.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN144"
-></A
->1.7. Try listing the shares available on your
- server</H2
-><P
-><TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->smbclient -L
- <TT
-CLASS="REPLACEABLE"
-><I
->yourhostname</I
-></TT
-></B
-></TT
-></P
-><P
->You should get back a list of shares available on
- your server. If you don't then something is incorrectly setup.
- Note that this method can also be used to see what shares
- are available on other LanManager clients (such as WfWg).</P
-><P
->If you choose user level security then you may find
- that Samba requests a password before it will list the shares.
- See the <B
-CLASS="COMMAND"
->smbclient</B
-> man page for details. (you
- can force it to list the shares without a password by
- adding the option -U% to the command line. This will not work
- with non-Samba servers)</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN153"
-></A
->1.8. Try connecting with the unix client</H2
-><P
-><TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->smbclient <TT
-CLASS="REPLACEABLE"
-><I
-> //yourhostname/aservice</I
-></TT
-></B
-></TT
-></P
-><P
->Typically the <TT
-CLASS="REPLACEABLE"
-><I
->yourhostname</I
-></TT
->
- would be the name of the host where you installed <B
-CLASS="COMMAND"
-> smbd</B
->. The <TT
-CLASS="REPLACEABLE"
-><I
->aservice</I
-></TT
-> is
- any service you have defined in the <TT
-CLASS="FILENAME"
->smb.conf</TT
->
- file. Try your user name if you just have a [homes] section
- in <TT
-CLASS="FILENAME"
->smb.conf</TT
->.</P
-><P
->For example if your unix host is bambi and your login
- name is fred you would type:</P
-><P
-><TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->smbclient //bambi/fred
- </B
-></TT
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN169"
-></A
->1.9. Try connecting from a DOS, WfWg, Win9x, WinNT,
- Win2k, OS/2, etc... client</H2
-><P
->Try mounting disks. eg:</P
-><P
-><TT
-CLASS="PROMPT"
->C:\WINDOWS\&#62; </TT
-><TT
-CLASS="USERINPUT"
-><B
->net use d: \\servername\service
- </B
-></TT
-></P
-><P
->Try printing. eg:</P
-><P
-><TT
-CLASS="PROMPT"
->C:\WINDOWS\&#62; </TT
-><TT
-CLASS="USERINPUT"
-><B
->net use lpt1:
- \\servername\spoolservice</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->C:\WINDOWS\&#62; </TT
-><TT
-CLASS="USERINPUT"
-><B
->print filename
- </B
-></TT
-></P
-><P
->Celebrate, or send me a bug report!</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN183"
-></A
->1.10. What If Things Don't Work?</H2
-><P
->If nothing works and you start to think "who wrote
- this pile of trash" then I suggest you do step 2 again (and
- again) till you calm down.</P
-><P
->Then you might read the file DIAGNOSIS.txt and the
- FAQ. If you are still stuck then try the mailing list or
- newsgroup (look in the README for details). Samba has been
- successfully installed at thousands of sites worldwide, so maybe
- someone else has hit your problem and has overcome it. You could
- also use the WWW site to scan back issues of the samba-digest.</P
-><P
->When you fix the problem PLEASE send me some updates to the
- documentation (or source code) so that the next person will find it
- easier. </P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN188"
-></A
->1.10.1. Diagnosing Problems</H3
-><P
->If you have installation problems then go to the
- <A
-HREF="Diagnosis.html"
-TARGET="_top"
->Diagnosis</A
-> chapter to try to find the
- problem.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN192"
-></A
->1.10.2. Scope IDs</H3
-><P
->By default Samba uses a blank scope ID. This means
- all your windows boxes must also have a blank scope ID.
- If you really want to use a non-blank scope ID then you will
- need to use the 'netbios scope' smb.conf option.
- All your PCs will need to have the same setting for
- this to work. I do not recommend scope IDs.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN195"
-></A
->1.10.3. Choosing the Protocol Level</H3
-><P
->The SMB protocol has many dialects. Currently
- Samba supports 5, called CORE, COREPLUS, LANMAN1,
- LANMAN2 and NT1.</P
-><P
->You can choose what maximum protocol to support
- in the <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file. The default is
- NT1 and that is the best for the vast majority of sites.</P
-><P
->In older versions of Samba you may have found it
- necessary to use COREPLUS. The limitations that led to
- this have mostly been fixed. It is now less likely that you
- will want to use less than LANMAN1. The only remaining advantage
- of COREPLUS is that for some obscure reason WfWg preserves
- the case of passwords in this protocol, whereas under LANMAN1,
- LANMAN2 or NT1 it uppercases all passwords before sending them,
- forcing you to use the "password level=" option in some cases.</P
-><P
->The main advantage of LANMAN2 and NT1 is support for
- long filenames with some clients (eg: smbclient, Windows NT
- or Win95). </P
-><P
->See the smb.conf(5) manual page for more details.</P
-><P
->Note: To support print queue reporting you may find
- that you have to use TCP/IP as the default protocol under
- WfWg. For some reason if you leave Netbeui as the default
- it may break the print queue reporting on some systems.
- It is presumably a WfWg bug.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN204"
-></A
->1.10.4. Printing from UNIX to a Client PC</H3
-><P
->To use a printer that is available via a smb-based
- server from a unix host with LPR you will need to compile the
- smbclient program. You then need to install the script
- "smbprint". Read the instruction in smbprint for more details.
- </P
-><P
->There is also a SYSV style script that does much
- the same thing called smbprint.sysv. It contains instructions.</P
-><P
->See the CUPS manual for information about setting up
- printing from a unix host with CUPS to a smb-based server. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN209"
-></A
->1.10.5. Locking</H3
-><P
->One area which sometimes causes trouble is locking.</P
-><P
->There are two types of locking which need to be
- performed by a SMB server. The first is "record locking"
- which allows a client to lock a range of bytes in a open file.
- The second is the "deny modes" that are specified when a file
- is open.</P
-><P
->Record locking semantics under Unix is very
- different from record locking under Windows. Versions
- of Samba before 2.2 have tried to use the native
- fcntl() unix system call to implement proper record
- locking between different Samba clients. This can not
- be fully correct due to several reasons. The simplest
- is the fact that a Windows client is allowed to lock a
- byte range up to 2^32 or 2^64, depending on the client
- OS. The unix locking only supports byte ranges up to
- 2^31. So it is not possible to correctly satisfy a
- lock request above 2^31. There are many more
- differences, too many to be listed here.</P
-><P
->Samba 2.2 and above implements record locking
- completely independent of the underlying unix
- system. If a byte range lock that the client requests
- happens to fall into the range 0-2^31, Samba hands
- this request down to the Unix system. All other locks
- can not be seen by unix anyway.</P
-><P
->Strictly a SMB server should check for locks before
- every read and write call on a file. Unfortunately with the
- way fcntl() works this can be slow and may overstress the
- rpc.lockd. It is also almost always unnecessary as clients
- are supposed to independently make locking calls before reads
- and writes anyway if locking is important to them. By default
- Samba only makes locking calls when explicitly asked
- to by a client, but if you set "strict locking = yes" then it will
- make lock checking calls on every read and write. </P
-><P
->You can also disable by range locking completely
- using "locking = no". This is useful for those shares that
- don't support locking or don't need it (such as cdroms). In
- this case Samba fakes the return codes of locking calls to
- tell clients that everything is OK.</P
-><P
->The second class of locking is the "deny modes". These
- are set by an application when it opens a file to determine
- what types of access should be allowed simultaneously with
- its open. A client may ask for DENY_NONE, DENY_READ, DENY_WRITE
- or DENY_ALL. There are also special compatibility modes called
- DENY_FCB and DENY_DOS.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN218"
-></A
->1.10.6. Mapping Usernames</H3
-><P
->If you have different usernames on the PCs and
- the unix server then take a look at the "username map" option.
- See the smb.conf man page for details.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="IMPROVED-BROWSING"
-></A
->Chapter 2. Improved browsing in samba</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN228"
-></A
->2.1. Overview of browsing</H2
-><P
->SMB networking provides a mechanism by which clients can access a list
-of machines in a network, a so-called "browse list". This list
-contains machines that are ready to offer file and/or print services
-to other machines within the network. Thus it does not include
-machines which aren't currently able to do server tasks. The browse
-list is heavily used by all SMB clients. Configuration of SMB
-browsing has been problematic for some Samba users, hence this
-document.</P
-><P
->Browsing will NOT work if name resolution from NetBIOS names to IP
-addresses does not function correctly. Use of a WINS server is highly
-recommended to aid the resolution of NetBIOS (SMB) names to IP addresses.
-WINS allows remote segment clients to obtain NetBIOS name_type information
-that can NOT be provided by any other means of name resolution.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN232"
-></A
->2.2. Browsing support in samba</H2
-><P
->Samba now fully supports browsing. The browsing is supported by nmbd
-and is also controlled by options in the smb.conf file (see smb.conf(5)).</P
-><P
->Samba can act as a local browse master for a workgroup and the ability
-for samba to support domain logons and scripts is now available. See
-DOMAIN.txt for more information on domain logons.</P
-><P
->Samba can also act as a domain master browser for a workgroup. This
-means that it will collate lists from local browse masters into a
-wide area network server list. In order for browse clients to
-resolve the names they may find in this list, it is recommended that
-both samba and your clients use a WINS server.</P
-><P
->Note that you should NOT set Samba to be the domain master for a
-workgroup that has the same name as an NT Domain: on each wide area
-network, you must only ever have one domain master browser per workgroup,
-regardless of whether it is NT, Samba or any other type of domain master
-that is providing this service.</P
-><P
->[Note that nmbd can be configured as a WINS server, but it is not
-necessary to specifically use samba as your WINS server. NTAS can
-be configured as your WINS server. In a mixed NT server and
-samba environment on a Wide Area Network, it is recommended that
-you use the NT server's WINS server capabilities. In a samba-only
-environment, it is recommended that you use one and only one nmbd
-as your WINS server].</P
-><P
->To get browsing to work you need to run nmbd as usual, but will need
-to use the "workgroup" option in smb.conf to control what workgroup
-Samba becomes a part of.</P
-><P
->Samba also has a useful option for a Samba server to offer itself for
-browsing on another subnet. It is recommended that this option is only
-used for 'unusual' purposes: announcements over the internet, for
-example. See "remote announce" in the smb.conf man page. </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN241"
-></A
->2.3. Problem resolution</H2
-><P
->If something doesn't work then hopefully the log.nmb file will help
-you track down the problem. Try a debug level of 2 or 3 for finding
-problems. Also note that the current browse list usually gets stored
-in text form in a file called browse.dat.</P
-><P
->Note that if it doesn't work for you, then you should still be able to
-type the server name as \\SERVER in filemanager then hit enter and
-filemanager should display the list of available shares.</P
-><P
->Some people find browsing fails because they don't have the global
-"guest account" set to a valid account. Remember that the IPC$
-connection that lists the shares is done as guest, and thus you must
-have a valid guest account.</P
-><P
->Also, a lot of people are getting bitten by the problem of too many
-parameters on the command line of nmbd in inetd.conf. This trick is to
-not use spaces between the option and the parameter (eg: -d2 instead
-of -d 2), and to not use the -B and -N options. New versions of nmbd
-are now far more likely to correctly find your broadcast and network
-address, so in most cases these aren't needed.</P
-><P
->The other big problem people have is that their broadcast address,
-netmask or IP address is wrong (specified with the "interfaces" option
-in smb.conf)</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN248"
-></A
->2.4. Browsing across subnets</H2
-><P
->With the release of Samba 1.9.17(alpha1 and above) Samba has been
-updated to enable it to support the replication of browse lists
-across subnet boundaries. New code and options have been added to
-achieve this. This section describes how to set this feature up
-in different settings.</P
-><P
->To see browse lists that span TCP/IP subnets (ie. networks separated
-by routers that don't pass broadcast traffic) you must set up at least
-one WINS server. The WINS server acts as a DNS for NetBIOS names, allowing
-NetBIOS name to IP address translation to be done by doing a direct
-query of the WINS server. This is done via a directed UDP packet on
-port 137 to the WINS server machine. The reason for a WINS server is
-that by default, all NetBIOS name to IP address translation is done
-by broadcasts from the querying machine. This means that machines
-on one subnet will not be able to resolve the names of machines on
-another subnet without using a WINS server.</P
-><P
->Remember, for browsing across subnets to work correctly, all machines,
-be they Windows 95, Windows NT, or Samba servers must have the IP address
-of a WINS server given to them by a DHCP server, or by manual configuration
-(for Win95 and WinNT, this is in the TCP/IP Properties, under Network
-settings) for Samba this is in the smb.conf file.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN253"
-></A
->2.4.1. How does cross subnet browsing work ?</H3
-><P
->Cross subnet browsing is a complicated dance, containing multiple
-moving parts. It has taken Microsoft several years to get the code
-that achieves this correct, and Samba lags behind in some areas.
-However, with the 1.9.17 release, Samba is capable of cross subnet
-browsing when configured correctly.</P
-><P
->Consider a network set up as follows :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> (DMB)
- N1_A N1_B N1_C N1_D N1_E
- | | | | |
- -------------------------------------------------------
- | subnet 1 |
- +---+ +---+
- |R1 | Router 1 Router 2 |R2 |
- +---+ +---+
- | |
- | subnet 2 subnet 3 |
- -------------------------- ------------------------------------
- | | | | | | | |
- N2_A N2_B N2_C N2_D N3_A N3_B N3_C N3_D
- (WINS)</PRE
-></P
-><P
->Consisting of 3 subnets (1, 2, 3) connected by two routers
-(R1, R2) - these do not pass broadcasts. Subnet 1 has 5 machines
-on it, subnet 2 has 4 machines, subnet 3 has 4 machines. Assume
-for the moment that all these machines are configured to be in the
-same workgroup (for simplicities sake). Machine N1_C on subnet 1
-is configured as Domain Master Browser (ie. it will collate the
-browse lists for the workgroup). Machine N2_D is configured as
-WINS server and all the other machines are configured to register
-their NetBIOS names with it.</P
-><P
->As all these machines are booted up, elections for master browsers
-will take place on each of the three subnets. Assume that machine
-N1_C wins on subnet 1, N2_B wins on subnet 2, and N3_D wins on
-subnet 3 - these machines are known as local master browsers for
-their particular subnet. N1_C has an advantage in winning as the
-local master browser on subnet 1 as it is set up as Domain Master
-Browser.</P
-><P
->On each of the three networks, machines that are configured to
-offer sharing services will broadcast that they are offering
-these services. The local master browser on each subnet will
-receive these broadcasts and keep a record of the fact that
-the machine is offering a service. This list of records is
-the basis of the browse list. For this case, assume that
-all the machines are configured to offer services so all machines
-will be on the browse list.</P
-><P
->For each network, the local master browser on that network is
-considered 'authoritative' for all the names it receives via
-local broadcast. This is because a machine seen by the local
-master browser via a local broadcast must be on the same
-network as the local master browser and thus is a 'trusted'
-and 'verifiable' resource. Machines on other networks that
-the local master browsers learn about when collating their
-browse lists have not been directly seen - these records are
-called 'non-authoritative'.</P
-><P
->At this point the browse lists look as follows (these are
-the machines you would see in your network neighborhood if
-you looked in it on a particular network right now).</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->Subnet Browse Master List
------- ------------- ----
-Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E
-
-Subnet2 N2_B N2_A, N2_B, N2_C, N2_D
-
-Subnet3 N3_D N3_A, N3_B, N3_C, N3_D</PRE
-></P
-><P
->Note that at this point all the subnets are separate, no
-machine is seen across any of the subnets.</P
-><P
->Now examine subnet 2. As soon as N2_B has become the local
-master browser it looks for a Domain master browser to synchronize
-its browse list with. It does this by querying the WINS server
-(N2_D) for the IP address associated with the NetBIOS name
-WORKGROUP&gt;1B&lt;. This name was registerd by the Domain master
-browser (N1_C) with the WINS server as soon as it was booted.</P
-><P
->Once N2_B knows the address of the Domain master browser it
-tells it that is the local master browser for subnet 2 by
-sending a MasterAnnouncement packet as a UDP port 138 packet.
-It then synchronizes with it by doing a NetServerEnum2 call. This
-tells the Domain Master Browser to send it all the server
-names it knows about. Once the domain master browser receives
-the MasterAnnouncement packet it schedules a synchronization
-request to the sender of that packet. After both synchronizations
-are done the browse lists look like :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->Subnet Browse Master List
------- ------------- ----
-Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E,
- N2_A(*), N2_B(*), N2_C(*), N2_D(*)
-
-Subnet2 N2_B N2_A, N2_B, N2_C, N2_D
- N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*)
-
-Subnet3 N3_D N3_A, N3_B, N3_C, N3_D
-
-Servers with a (*) after them are non-authoritative names.</PRE
-></P
-><P
->At this point users looking in their network neighborhood on
-subnets 1 or 2 will see all the servers on both, users on
-subnet 3 will still only see the servers on their own subnet.</P
-><P
->The same sequence of events that occured for N2_B now occurs
-for the local master browser on subnet 3 (N3_D). When it
-synchronizes browse lists with the domain master browser (N1_A)
-it gets both the server entries on subnet 1, and those on
-subnet 2. After N3_D has synchronized with N1_C and vica-versa
-the browse lists look like.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->Subnet Browse Master List
------- ------------- ----
-Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E,
- N2_A(*), N2_B(*), N2_C(*), N2_D(*),
- N3_A(*), N3_B(*), N3_C(*), N3_D(*)
-
-Subnet2 N2_B N2_A, N2_B, N2_C, N2_D
- N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*)
-
-Subnet3 N3_D N3_A, N3_B, N3_C, N3_D
- N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*),
- N2_A(*), N2_B(*), N2_C(*), N2_D(*)
-
-Servers with a (*) after them are non-authoritative names.</PRE
-></P
-><P
->At this point users looking in their network neighborhood on
-subnets 1 or 3 will see all the servers on all sunbets, users on
-subnet 2 will still only see the servers on subnets 1 and 2, but not 3.</P
-><P
->Finally, the local master browser for subnet 2 (N2_B) will sync again
-with the domain master browser (N1_C) and will recieve the missing
-server entries. Finally - and as a steady state (if no machines
-are removed or shut off) the browse lists will look like :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->Subnet Browse Master List
------- ------------- ----
-Subnet1 N1_C N1_A, N1_B, N1_C, N1_D, N1_E,
- N2_A(*), N2_B(*), N2_C(*), N2_D(*),
- N3_A(*), N3_B(*), N3_C(*), N3_D(*)
-
-Subnet2 N2_B N2_A, N2_B, N2_C, N2_D
- N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*)
- N3_A(*), N3_B(*), N3_C(*), N3_D(*)
-
-Subnet3 N3_D N3_A, N3_B, N3_C, N3_D
- N1_A(*), N1_B(*), N1_C(*), N1_D(*), N1_E(*),
- N2_A(*), N2_B(*), N2_C(*), N2_D(*)
-
-Servers with a (*) after them are non-authoritative names.</PRE
-></P
-><P
->Synchronizations between the domain master browser and local
-master browsers will continue to occur, but this should be a
-steady state situation.</P
-><P
->If either router R1 or R2 fails the following will occur:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> Names of computers on each side of the inaccessible network fragments
- will be maintained for as long as 36 minutes, in the network neighbourhood
- lists.
- </P
-></LI
-><LI
-><P
-> Attempts to connect to these inaccessible computers will fail, but the
- names will not be removed from the network neighbourhood lists.
- </P
-></LI
-><LI
-><P
-> If one of the fragments is cut off from the WINS server, it will only
- be able to access servers on its local subnet, by using subnet-isolated
- broadcast NetBIOS name resolution. The effects are similar to that of
- losing access to a DNS server.
- </P
-></LI
-></OL
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN288"
-></A
->2.5. Setting up a WINS server</H2
-><P
->Either a Samba machine or a Windows NT Server machine may be set up
-as a WINS server. To set a Samba machine to be a WINS server you must
-add the following option to the smb.conf file on the selected machine :
-in the [globals] section add the line </P
-><P
-><B
-CLASS="COMMAND"
-> wins support = yes</B
-></P
-><P
->Versions of Samba previous to 1.9.17 had this parameter default to
-yes. If you have any older versions of Samba on your network it is
-strongly suggested you upgrade to 1.9.17 or above, or at the very
-least set the parameter to 'no' on all these machines.</P
-><P
->Machines with "<B
-CLASS="COMMAND"
->wins support = yes</B
->" will keep a list of
-all NetBIOS names registered with them, acting as a DNS for NetBIOS names.</P
-><P
->You should set up only ONE wins server. Do NOT set the
-"<B
-CLASS="COMMAND"
->wins support = yes</B
->" option on more than one Samba
-server.</P
-><P
->To set up a Windows NT Server as a WINS server you need to set up
-the WINS service - see your NT documentation for details. Note that
-Windows NT WINS Servers can replicate to each other, allowing more
-than one to be set up in a complex subnet environment. As Microsoft
-refuse to document these replication protocols Samba cannot currently
-participate in these replications. It is possible in the future that
-a Samba-&#62;Samba WINS replication protocol may be defined, in which
-case more than one Samba machine could be set up as a WINS server
-but currently only one Samba server should have the "wins support = yes"
-parameter set.</P
-><P
->After the WINS server has been configured you must ensure that all
-machines participating on the network are configured with the address
-of this WINS server. If your WINS server is a Samba machine, fill in
-the Samba machine IP address in the "Primary WINS Server" field of
-the "Control Panel-&#62;Network-&#62;Protocols-&#62;TCP-&#62;WINS Server" dialogs
-in Windows 95 or Windows NT. To tell a Samba server the IP address
-of the WINS server add the following line to the [global] section of
-all smb.conf files :</P
-><P
-><B
-CLASS="COMMAND"
->wins server = &gt;name or IP address&lt;</B
-></P
-><P
->where &gt;name or IP address&lt; is either the DNS name of the WINS server
-machine or its IP address.</P
-><P
->Note that this line MUST NOT BE SET in the smb.conf file of the Samba
-server acting as the WINS server itself. If you set both the
-"<B
-CLASS="COMMAND"
->wins support = yes</B
->" option and the
-"<B
-CLASS="COMMAND"
->wins server = &gt;name&lt;</B
->" option then
-nmbd will fail to start.</P
-><P
->There are two possible scenarios for setting up cross subnet browsing.
-The first details setting up cross subnet browsing on a network containing
-Windows 95, Samba and Windows NT machines that are not configured as
-part of a Windows NT Domain. The second details setting up cross subnet
-browsing on networks that contain NT Domains.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN307"
-></A
->2.6. Setting up Browsing in a WORKGROUP</H2
-><P
->To set up cross subnet browsing on a network containing machines
-in up to be in a WORKGROUP, not an NT Domain you need to set up one
-Samba server to be the Domain Master Browser (note that this is *NOT*
-the same as a Primary Domain Controller, although in an NT Domain the
-same machine plays both roles). The role of a Domain master browser is
-to collate the browse lists from local master browsers on all the
-subnets that have a machine participating in the workgroup. Without
-one machine configured as a domain master browser each subnet would
-be an isolated workgroup, unable to see any machines on any other
-subnet. It is the presense of a domain master browser that makes
-cross subnet browsing possible for a workgroup.</P
-><P
->In an WORKGROUP environment the domain master browser must be a
-Samba server, and there must only be one domain master browser per
-workgroup name. To set up a Samba server as a domain master browser,
-set the following option in the [global] section of the smb.conf file :</P
-><P
-><B
-CLASS="COMMAND"
->domain master = yes</B
-></P
-><P
->The domain master browser should also preferrably be the local master
-browser for its own subnet. In order to achieve this set the following
-options in the [global] section of the smb.conf file :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> domain master = yes
- local master = yes
- preferred master = yes
- os level = 65</PRE
-></P
-><P
->The domain master browser may be the same machine as the WINS
-server, if you require.</P
-><P
->Next, you should ensure that each of the subnets contains a
-machine that can act as a local master browser for the
-workgroup. Any NT machine should be able to do this, as will
-Windows 95 machines (although these tend to get rebooted more
-often, so it's not such a good idea to use these). To make a
-Samba server a local master browser set the following
-options in the [global] section of the smb.conf file :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> domain master = no
- local master = yes
- preferred master = yes
- os level = 65</PRE
-></P
-><P
->Do not do this for more than one Samba server on each subnet,
-or they will war with each other over which is to be the local
-master browser.</P
-><P
->The "local master" parameter allows Samba to act as a local master
-browser. The "preferred master" causes nmbd to force a browser
-election on startup and the "os level" parameter sets Samba high
-enough so that it should win any browser elections.</P
-><P
->If you have an NT machine on the subnet that you wish to
-be the local master browser then you can disable Samba from
-becoming a local master browser by setting the following
-options in the [global] section of the smb.conf file :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> domain master = no
- local master = no
- preferred master = no
- os level = 0</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN325"
-></A
->2.7. Setting up Browsing in a DOMAIN</H2
-><P
->If you are adding Samba servers to a Windows NT Domain then
-you must not set up a Samba server as a domain master browser.
-By default, a Windows NT Primary Domain Controller for a Domain
-name is also the Domain master browser for that name, and many
-things will break if a Samba server registers the Domain master
-browser NetBIOS name (DOMAIN&gt;1B&lt;) with WINS instead of the PDC.</P
-><P
->For subnets other than the one containing the Windows NT PDC
-you may set up Samba servers as local master browsers as
-described. To make a Samba server a local master browser set
-the following options in the [global] section of the smb.conf
-file :</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> domain master = no
- local master = yes
- preferred master = yes
- os level = 65</PRE
-></P
-><P
->If you wish to have a Samba server fight the election with machines
-on the same subnet you may set the "os level" parameter to lower
-levels. By doing this you can tune the order of machines that
-will become local master browsers if they are running. For
-more details on this see the section "FORCING SAMBA TO BE THE MASTER"
-below.</P
-><P
->If you have Windows NT machines that are members of the domain
-on all subnets, and you are sure they will always be running then
-you can disable Samba from taking part in browser elections and
-ever becoming a local master browser by setting following options
-in the [global] section of the smb.conf file :</P
-><P
-><B
-CLASS="COMMAND"
-> domain master = no
- local master = no
- preferred master = no
- os level = 0</B
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN335"
-></A
->2.8. Forcing samba to be the master</H2
-><P
->Who becomes the "master browser" is determined by an election process
-using broadcasts. Each election packet contains a number of parameters
-which determine what precedence (bias) a host should have in the
-election. By default Samba uses a very low precedence and thus loses
-elections to just about anyone else.</P
-><P
->If you want Samba to win elections then just set the "os level" global
-option in smb.conf to a higher number. It defaults to 0. Using 34
-would make it win all elections over every other system (except other
-samba systems!)</P
-><P
->A "os level" of 2 would make it beat WfWg and Win95, but not NTAS. A
-NTAS domain controller uses level 32.</P
-><P
->The maximum os level is 255</P
-><P
->If you want samba to force an election on startup, then set the
-"preferred master" global option in smb.conf to "yes". Samba will
-then have a slight advantage over other potential master browsers
-that are not preferred master browsers. Use this parameter with
-care, as if you have two hosts (whether they are windows 95 or NT or
-samba) on the same local subnet both set with "preferred master" to
-"yes", then periodically and continually they will force an election
-in order to become the local master browser.</P
-><P
->If you want samba to be a "domain master browser", then it is
-recommended that you also set "preferred master" to "yes", because
-samba will not become a domain master browser for the whole of your
-LAN or WAN if it is not also a local master browser on its own
-broadcast isolated subnet.</P
-><P
->It is possible to configure two samba servers to attempt to become
-the domain master browser for a domain. The first server that comes
-up will be the domain master browser. All other samba servers will
-attempt to become the domain master browser every 5 minutes. They
-will find that another samba server is already the domain master
-browser and will fail. This provides automatic redundancy, should
-the current domain master browser fail.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN344"
-></A
->2.9. Making samba the domain master</H2
-><P
->The domain master is responsible for collating the browse lists of
-multiple subnets so that browsing can occur between subnets. You can
-make samba act as the domain master by setting "domain master = yes"
-in smb.conf. By default it will not be a domain master.</P
-><P
->Note that you should NOT set Samba to be the domain master for a
-workgroup that has the same name as an NT Domain.</P
-><P
->When samba is the domain master and the master browser it will listen
-for master announcements (made roughly every twelve minutes) from local
-master browsers on other subnets and then contact them to synchronise
-browse lists.</P
-><P
->If you want samba to be the domain master then I suggest you also set
-the "os level" high enough to make sure it wins elections, and set
-"preferred master" to "yes", to get samba to force an election on
-startup.</P
-><P
->Note that all your servers (including samba) and clients should be
-using a WINS server to resolve NetBIOS names. If your clients are only
-using broadcasting to resolve NetBIOS names, then two things will occur:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> your local master browsers will be unable to find a domain master
- browser, as it will only be looking on the local subnet.
- </P
-></LI
-><LI
-><P
-> if a client happens to get hold of a domain-wide browse list, and
- a user attempts to access a host in that list, it will be unable to
- resolve the NetBIOS name of that host.
- </P
-></LI
-></OL
-><P
->If, however, both samba and your clients are using a WINS server, then:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> your local master browsers will contact the WINS server and, as long as
- samba has registered that it is a domain master browser with the WINS
- server, your local master browser will receive samba's ip address
- as its domain master browser.
- </P
-></LI
-><LI
-><P
-> when a client receives a domain-wide browse list, and a user attempts
- to access a host in that list, it will contact the WINS server to
- resolve the NetBIOS name of that host. as long as that host has
- registered its NetBIOS name with the same WINS server, the user will
- be able to see that host.
- </P
-></LI
-></OL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN362"
-></A
->2.10. Note about broadcast addresses</H2
-><P
->If your network uses a "0" based broadcast address (for example if it
-ends in a 0) then you will strike problems. Windows for Workgroups
-does not seem to support a 0's broadcast and you will probably find
-that browsing and name lookups won't work.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN365"
-></A
->2.11. Multiple interfaces</H2
-><P
->Samba now supports machines with multiple network interfaces. If you
-have multiple interfaces then you will need to use the "interfaces"
-option in smb.conf to configure them. See smb.conf(5) for details.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="OPLOCKS"
-></A
->Chapter 3. Oplocks</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN377"
-></A
->3.1. What are oplocks?</H2
-><P
->When a client opens a file it can request an "oplock" or file
-lease. This is (to simplify a bit) a guarentee that no one else
-has the file open simultaneously. It allows the client to not
-send any updates on the file to the server, thus reducing a
-network file access to local access (once the file is in
-client cache). An "oplock break" is when the server sends
-a request to the client to flush all its changes back to
-the server, so the file is in a consistent state for other
-opens to succeed. If a client fails to respond to this
-asynchronous request then the file can be corrupted. Hence
-the "turn off oplocks" answer if people are having multi-user
-file access problems.</P
-><P
->Unless the kernel is "oplock aware" (SGI IRIX and Linux are
-the only two UNIXes that are at the moment) then if a local
-UNIX process accesses the file simultaneously then Samba
-has no way of telling this is occuring, so the guarentee
-to the client is broken. This can corrupt the file. Short
-answer - it you have UNIX clients accessing the same file
-as smbd locally or via NFS and you're not running Linux or
-IRIX then turn off oplocks for that file or share.</P
-><P
->"Share modes". These are modes of opening a file, that
-guarentee an invarient - such as DENY_WRITE - which means
-that if any other opens are requested with write access after
-this current open has succeeded then they should be denied
-with a "sharing violation" error message. Samba handles these
-internally inside smbd. UNIX clients accessing the same file
-ignore these invarients. Just proving that if you need simultaneous
-file access from a Windows and UNIX client you *must* have an
-application that is written to lock records correctly on both
-sides. Few applications are written like this, and even fewer
-are cross platform (UNIX and Windows) so in practice this isn't
-much of a problem.</P
-><P
->"Locking". This really means "byte range locking" - such as
-lock 10 bytes at file offset 24 for write access. This is the
-area in which well written UNIX and Windows apps will cooperate.
-Windows locks (at least from NT or above) are 64-bit unsigned
-offsets. UNIX locks are either 31 bit or 63 bit and are signed
-(the top bit is used for the sign). Samba handles these by
-first ensuring that all the Windows locks don't conflict (ie.
-if other Windows clients have competing locks then just reject
-immediately) - this allows us to support 64-bit Windows locks
-on 32-bit filesystems. Secondly any locks that are valid are
-then mapped onto UNIX fcntl byte range locks. These are the
-locks that will be seen by UNIX processes. If there is a conflict
-here the lock is rejected.</P
-><P
->Note that if a client has an oplock then it "knows" that no
-other client can have the file open so usually doesn't bother
-to send to lock request to the server - this means once again
-if you need to share files between UNIX and Windows processes
-either use IRIX or Linux, or turn off oplocks for these
-files/shares.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="BROWSING-QUICK"
-></A
->Chapter 4. Quick Cross Subnet Browsing / Cross Workgroup Browsing guide</H1
-><P
->This document should be read in conjunction with Browsing and may
-be taken as the fast track guide to implementing browsing across subnets
-and / or across workgroups (or domains). WINS is the best tool for resolution
-of NetBIOS names to IP addesses. WINS is NOT involved in browse list handling
-except by way of name to address mapping.</P
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN392"
-></A
->4.1. Discussion</H2
-><P
->Firstly, all MS Windows networking is based on SMB (Server Message
-Block) based messaging. SMB messaging is implemented using NetBIOS. Samba
-implements NetBIOS by encapsulating it over TCP/IP. MS Windows products can
-do likewise. NetBIOS based networking uses broadcast messaging to affect
-browse list management. When running NetBIOS over TCP/IP this uses UDP
-based messaging. UDP messages can be broadcast or unicast.</P
-><P
->Normally, only unicast UDP messaging can be forwarded by routers. The
-"remote announce" parameter to smb.conf helps to project browse announcements
-to remote network segments via unicast UDP. Similarly, the "remote browse sync"
-parameter of smb.conf implements browse list collation using unicast UDP.</P
-><P
->Secondly, in those networks where Samba is the only SMB server technology
-wherever possible nmbd should be configured on one (1) machine as the WINS
-server. This makes it easy to manage the browsing environment. If each network
-segment is configured with it's own Samba WINS server, then the only way to
-get cross segment browsing to work is by using the "remote announce" and
-the "remote browse sync" parameters to your smb.conf file.</P
-><P
->If only one WINS server is used then the use of the "remote announce" and the
-"remote browse sync" parameters should NOT be necessary.</P
-><P
->Samba WINS does not support MS-WINS replication. This means that when setting up
-Samba as a WINS server there must only be one nmbd configured as a WINS server
-on the network. Some sites have used multiple Samba WINS servers for redundancy
-(one server per subnet) and then used "remote browse sync" and "remote announce"
-to affect browse list collation across all segments. Note that this means
-clients will only resolve local names, and must be configured to use DNS to
-resolve names on other subnets in order to resolve the IP addresses of the
-servers they can see on other subnets. This setup is not recommended, but is
-mentioned as a practical consideration (ie: an 'if all else fails' scenario).</P
-><P
->Lastly, take note that browse lists are a collection of unreliable broadcast
-messages that are repeated at intervals of not more than 15 minutes. This means
-that it will take time to establish a browse list and it can take up to 45
-minutes to stabilise, particularly across network segments.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN400"
-></A
->4.2. Use of the "Remote Announce" parameter</H2
-><P
->The "remote announce" parameter of smb.conf can be used to forcibly ensure
-that all the NetBIOS names on a network get announced to a remote network.
-The syntax of the "remote announce" parameter is:
-<PRE
-CLASS="PROGRAMLISTING"
-> remote announce = a.b.c.d [e.f.g.h] ...</PRE
->
-_or_
-<PRE
-CLASS="PROGRAMLISTING"
-> remote announce = a.b.c.d/WORKGROUP [e.f.g.h/WORKGROUP] ...</PRE
->
-
-where:
-<P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->a.b.c.d and e.f.g.h</DT
-><DD
-><P
->is either the LMB (Local Master Browser) IP address
-or the broadcst address of the remote network.
-ie: the LMB is at 192.168.1.10, or the address
-could be given as 192.168.1.255 where the netmask
-is assumed to be 24 bits (255.255.255.0).
-When the remote announcement is made to the broadcast
-address of the remote network every host will receive
-our announcements. This is noisy and therefore
-undesirable but may be necessary if we do NOT know
-the IP address of the remote LMB.</P
-></DD
-><DT
->WORKGROUP</DT
-><DD
-><P
->is optional and can be either our own workgroup
-or that of the remote network. If you use the
-workgroup name of the remote network then our
-NetBIOS machine names will end up looking like
-they belong to that workgroup, this may cause
-name resolution problems and should be avoided.</P
-></DD
-></DL
-></DIV
->&#13;</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN414"
-></A
->4.3. Use of the "Remote Browse Sync" parameter</H2
-><P
->The "remote browse sync" parameter of smb.conf is used to announce to
-another LMB that it must synchronise it's NetBIOS name list with our
-Samba LMB. It works ONLY if the Samba server that has this option is
-simultaneously the LMB on it's network segment.</P
-><P
->The syntax of the "remote browse sync" parameter is:
-<PRE
-CLASS="PROGRAMLISTING"
-> remote browse sync = a.b.c.d</PRE
->
-
-where a.b.c.d is either the IP address of the remote LMB or else is the network broadcast address of the remote segment.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN419"
-></A
->4.4. Use of WINS</H2
-><P
->Use of WINS (either Samba WINS _or_ MS Windows NT Server WINS) is highly
-recommended. Every NetBIOS machine registers it's name together with a
-name_type value for each of of several types of service it has available.
-eg: It registers it's name directly as a unique (the type 0x03) name.
-It also registers it's name if it is running the lanmanager compatible
-server service (used to make shares and printers available to other users)
-by registering the server (the type 0x20) name.</P
-><P
->All NetBIOS names are up to 15 characters in length. The name_type variable
-is added to the end of the name - thus creating a 16 character name. Any
-name that is shorter than 15 characters is padded with spaces to the 15th
-character. ie: All NetBIOS names are 16 characters long (including the
-name_type information).</P
-><P
->WINS can store these 16 character names as they get registered. A client
-that wants to log onto the network can ask the WINS server for a list
-of all names that have registered the NetLogon service name_type. This saves
-broadcast traffic and greatly expedites logon processing. Since broadcast
-name resolution can not be used across network segments this type of
-information can only be provided via WINS _or_ via statically configured
-"lmhosts" files that must reside on all clients in the absence of WINS.</P
-><P
->WINS also serves the purpose of forcing browse list synchronisation by all
-LMB's. LMB's must synchronise their browse list with the DMB (domain master
-browser) and WINS helps the LMB to identify it's DMB. By definition this
-will work only within a single workgroup. Note that the domain master browser
-has NOTHING to do with what is referred to as an MS Windows NT Domain. The
-later is a reference to a security environment while the DMB refers to the
-master controller for browse list information only.</P
-><P
->Use of WINS will work correctly only if EVERY client TCP/IP protocol stack
-has been configured to use the WINS server/s. Any client that has not been
-configured to use the WINS server will continue to use only broadcast based
-name registration so that WINS may NEVER get to know about it. In any case,
-machines that have not registered with a WINS server will fail name to address
-lookup attempts by other clients and will therefore cause workstation access
-errors.</P
-><P
->To configure Samba as a WINS server just add "wins support = yes" to the
-smb.conf file [globals] section.</P
-><P
->To configure Samba to register with a WINS server just add
-"wins server = a.b.c.d" to your smb.conf file [globals] section.</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->DO NOT EVER</I
-></SPAN
-> use both "wins support = yes" together with "wins server = a.b.c.d"
-particularly not using it's own IP address.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN430"
-></A
->4.5. Do NOT use more than one (1) protocol on MS Windows machines</H2
-><P
->A very common cause of browsing problems results from installing more than
-one protocol on an MS Windows machine.</P
-><P
->Every NetBIOS machine take part in a process of electing the LMB (and DMB)
-every 15 minutes. A set of election criteria is used to determine the order
-of precidence for winning this election process. A machine running Samba or
-Windows NT will be biased so that the most suitable machine will predictably
-win and thus retain it's role.</P
-><P
->The election process is "fought out" so to speak over every NetBIOS network
-interface. In the case of a Windows 9x machine that has both TCP/IP and IPX
-installed and has NetBIOS enabled over both protocols the election will be
-decided over both protocols. As often happens, if the Windows 9x machine is
-the only one with both protocols then the LMB may be won on the NetBIOS
-interface over the IPX protocol. Samba will then lose the LMB role as Windows
-9x will insist it knows who the LMB is. Samba will then cease to function
-as an LMB and thus browse list operation on all TCP/IP only machines will
-fail.</P
-><P
->The safest rule of all to follow it this - USE ONLY ONE PROTOCOL!</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN436"
-></A
->4.6. Name Resolution Order</H2
-><P
->Resolution of NetBIOS names to IP addresses can take place using a number
-of methods. The only ones that can provide NetBIOS name_type information
-are:
-<P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->WINS: the best tool!</TD
-></TR
-><TR
-><TD
->LMHOSTS: is static and hard to maintain.</TD
-></TR
-><TR
-><TD
->Broadcast: uses UDP and can not resolve names across remote segments.</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></P
-><P
->Alternative means of name resolution includes:
-<P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->/etc/hosts: is static, hard to maintain, and lacks name_type info</TD
-></TR
-><TR
-><TD
->DNS: is a good choice but lacks essential name_type info.</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></P
-><P
->Many sites want to restrict DNS lookups and want to avoid broadcast name
-resolution traffic. The "name resolve order" parameter is of great help here.
-The syntax of the "name resolve order" parameter is:
-<PRE
-CLASS="PROGRAMLISTING"
-> name resolve order = wins lmhosts bcast host</PRE
->
-_or_
-<PRE
-CLASS="PROGRAMLISTING"
-> name resolve order = wins lmhosts (eliminates bcast and host)</PRE
->
-The default is:
-<PRE
-CLASS="PROGRAMLISTING"
-> name resolve order = host lmhost wins bcast</PRE
->.
-where "host" refers the the native methods used by the Unix system
-to implement the gethostbyname() function call. This is normally
-controlled by <TT
-CLASS="FILENAME"
->/etc/host.conf</TT
->, <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-> and <TT
-CLASS="FILENAME"
->/etc/resolv.conf</TT
->.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="PWENCRYPT"
-></A
->Chapter 5. LanMan and NT Password Encryption in Samba</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN472"
-></A
->5.1. Introduction</H2
-><P
->Newer windows clients send encrypted passwords over
- the wire, instead of plain text passwords. The newest clients
- will only send encrypted passwords and refuse to send plain text
- passwords, unless their registry is tweaked.</P
-><P
->These passwords can't be converted to unix style encrypted
- passwords. Because of that you can't use the standard unix
- user database, and you have to store the Lanman and NT hashes
- somewhere else. For more information, see the documentation
- about the <B
-CLASS="COMMAND"
->passdb backend = </B
-> parameter.
- </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN477"
-></A
->5.2. Important Notes About Security</H2
-><P
->The unix and SMB password encryption techniques seem similar
- on the surface. This similarity is, however, only skin deep. The unix
- scheme typically sends clear text passwords over the network when
- logging in. This is bad. The SMB encryption scheme never sends the
- cleartext password over the network but it does store the 16 byte
- hashed values on disk. This is also bad. Why? Because the 16 byte hashed
- values are a "password equivalent". You cannot derive the user's
- password from them, but they could potentially be used in a modified
- client to gain access to a server. This would require considerable
- technical knowledge on behalf of the attacker but is perfectly possible.
- You should thus treat the smbpasswd file as though it contained the
- cleartext passwords of all your users. Its contents must be kept
- secret, and the file should be protected accordingly.</P
-><P
->Ideally we would like a password scheme which neither requires
- plain text passwords on the net or on disk. Unfortunately this
- is not available as Samba is stuck with being compatible with
- other SMB systems (WinNT, WfWg, Win95 etc). </P
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->Note that Windows NT 4.0 Service pack 3 changed the
- default for permissible authentication so that plaintext
- passwords are <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->never</I
-></SPAN
-> sent over the wire.
- The solution to this is either to switch to encrypted passwords
- with Samba or edit the Windows NT registry to re-enable plaintext
- passwords. See the document WinNT.txt for details on how to do
- this.</P
-><P
->Other Microsoft operating systems which also exhibit
- this behavior includes</P
-><P
-></P
-><UL
-><LI
-><P
->MS DOS Network client 3.0 with
- the basic network redirector installed</P
-></LI
-><LI
-><P
->Windows 95 with the network redirector
- update installed</P
-></LI
-><LI
-><P
->Windows 98 [se]</P
-></LI
-><LI
-><P
->Windows 2000</P
-></LI
-></UL
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Note :</I
-></SPAN
->All current release of
- Microsoft SMB/CIFS clients support authentication via the
- SMB Challenge/Response mechanism described here. Enabling
- clear text authentication does not disable the ability
- of the client to participate in encrypted authentication.</P
-></TD
-></TR
-></TABLE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN496"
-></A
->5.2.1. Advantages of SMB Encryption</H3
-><P
-></P
-><UL
-><LI
-><P
->plain text passwords are not passed across
- the network. Someone using a network sniffer cannot just
- record passwords going to the SMB server.</P
-></LI
-><LI
-><P
->WinNT doesn't like talking to a server
- that isn't using SMB encrypted passwords. It will refuse
- to browse the server if the server is also in user level
- security mode. It will insist on prompting the user for the
- password on each connection, which is very annoying. The
- only things you can do to stop this is to use SMB encryption.
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN503"
-></A
->5.2.2. Advantages of non-encrypted passwords</H3
-><P
-></P
-><UL
-><LI
-><P
->plain text passwords are not kept
- on disk. </P
-></LI
-><LI
-><P
->uses same password file as other unix
- services such as login and ftp</P
-></LI
-><LI
-><P
->you are probably already using other
- services (such as telnet and ftp) which send plain text
- passwords over the net, so sending them for SMB isn't
- such a big deal.</P
-></LI
-></UL
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN512"
-></A
->5.3. The smbpasswd Command</H2
-><P
->The smbpasswd command maintains the two 32 byte password fields
- in the smbpasswd file. If you wish to make it similar to the unix
- <B
-CLASS="COMMAND"
->passwd</B
-> or <B
-CLASS="COMMAND"
->yppasswd</B
-> programs,
- install it in <TT
-CLASS="FILENAME"
->/usr/local/samba/bin/</TT
-> (or your
- main Samba binary directory).</P
-><P
-><B
-CLASS="COMMAND"
->smbpasswd</B
-> now works in a client-server mode
- where it contacts the local smbd to change the user's password on its
- behalf. This has enormous benefits - as follows.</P
-><P
-><B
-CLASS="COMMAND"
->smbpasswd</B
-> now has the capability
- to change passwords on Windows NT servers (this only works when
- the request is sent to the NT Primary Domain Controller if you
- are changing an NT Domain user's password).</P
-><P
->To run smbpasswd as a normal user just type :</P
-><P
-><TT
-CLASS="PROMPT"
->$ </TT
-><TT
-CLASS="USERINPUT"
-><B
->smbpasswd</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->Old SMB password: </TT
-><TT
-CLASS="USERINPUT"
-><B
->&lt;type old value here -
- or hit return if there was no old password&gt;</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->New SMB Password: </TT
-><TT
-CLASS="USERINPUT"
-><B
->&lt;type new value&gt;
- </B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->Repeat New SMB Password: </TT
-><TT
-CLASS="USERINPUT"
-><B
->&lt;re-type new value
- </B
-></TT
-></P
-><P
->If the old value does not match the current value stored for
- that user, or the two new values do not match each other, then the
- password will not be changed.</P
-><P
->If invoked by an ordinary user it will only allow the user
- to change his or her own Samba password.</P
-><P
->If run by the root user smbpasswd may take an optional
- argument, specifying the user name whose SMB password you wish to
- change. Note that when run as root smbpasswd does not prompt for
- or check the old password value, thus allowing root to set passwords
- for users who have forgotten their passwords.</P
-><P
-><B
-CLASS="COMMAND"
->smbpasswd</B
-> is designed to work in the same way
- and be familiar to UNIX users who use the <B
-CLASS="COMMAND"
->passwd</B
-> or
- <B
-CLASS="COMMAND"
->yppasswd</B
-> commands.</P
-><P
->For more details on using <B
-CLASS="COMMAND"
->smbpasswd</B
-> refer
- to the man page which will always be the definitive reference.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="PART"
-><A
-NAME="AEN544"
-></A
-><DIV
-CLASS="TITLEPAGE"
-><H1
-CLASS="TITLE"
->II. Type of installation</H1
-><DIV
-CLASS="PARTINTRO"
-><A
-NAME="AEN546"
-></A
-><H1
->Introduction</H1
-><P
->This part contains information on using samba in a (NT 4 or ADS) domain.
-If you wish to run samba as a domain member or DC, read the appropriate chapter in
-this part.</P
-></DIV
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->6. <A
-HREF="#SAMBA-PDC"
->How to Configure Samba as a NT4 Primary Domain Controller</A
-></DT
-><DD
-><DL
-><DT
->6.1. <A
-HREF="#AEN566"
->Prerequisite Reading</A
-></DT
-><DT
->6.2. <A
-HREF="#AEN572"
->Background</A
-></DT
-><DT
->6.3. <A
-HREF="#AEN611"
->Configuring the Samba Domain Controller</A
-></DT
-><DT
->6.4. <A
-HREF="#AEN654"
->Creating Machine Trust Accounts and Joining Clients to the
-Domain</A
-></DT
-><DD
-><DL
-><DT
->6.4.1. <A
-HREF="#AEN673"
->Manual Creation of Machine Trust Accounts</A
-></DT
-><DT
->6.4.2. <A
-HREF="#AEN714"
->"On-the-Fly" Creation of Machine Trust Accounts</A
-></DT
-><DT
->6.4.3. <A
-HREF="#AEN723"
->Joining the Client to the Domain</A
-></DT
-></DL
-></DD
-><DT
->6.5. <A
-HREF="#AEN738"
->Common Problems and Errors</A
-></DT
-><DT
->6.6. <A
-HREF="#AEN786"
->System Policies and Profiles</A
-></DT
-><DT
->6.7. <A
-HREF="#AEN830"
->What other help can I get?</A
-></DT
-><DT
->6.8. <A
-HREF="#AEN944"
->Domain Control for Windows 9x/ME</A
-></DT
-><DD
-><DL
-><DT
->6.8.1. <A
-HREF="#AEN970"
->Configuration Instructions: Network Logons</A
-></DT
-><DT
->6.8.2. <A
-HREF="#AEN989"
->Configuration Instructions: Setting up Roaming User Profiles</A
-></DT
-></DL
-></DD
-><DT
->6.9. <A
-HREF="#AEN1082"
->DOMAIN_CONTROL.txt : Windows NT Domain Control &#38; Samba</A
-></DT
-></DL
-></DD
-><DT
->7. <A
-HREF="#SAMBA-BDC"
->How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</A
-></DT
-><DD
-><DL
-><DT
->7.1. <A
-HREF="#AEN1118"
->Prerequisite Reading</A
-></DT
-><DT
->7.2. <A
-HREF="#AEN1122"
->Background</A
-></DT
-><DT
->7.3. <A
-HREF="#AEN1130"
->What qualifies a Domain Controller on the network?</A
-></DT
-><DD
-><DL
-><DT
->7.3.1. <A
-HREF="#AEN1133"
->How does a Workstation find its domain controller?</A
-></DT
-><DT
->7.3.2. <A
-HREF="#AEN1136"
->When is the PDC needed?</A
-></DT
-></DL
-></DD
-><DT
->7.4. <A
-HREF="#AEN1139"
->Can Samba be a Backup Domain Controller?</A
-></DT
-><DT
->7.5. <A
-HREF="#AEN1143"
->How do I set up a Samba BDC?</A
-></DT
-><DD
-><DL
-><DT
->7.5.1. <A
-HREF="#AEN1160"
->How do I replicate the smbpasswd file?</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->8. <A
-HREF="#ADS"
->Samba as a ADS domain member</A
-></DT
-><DD
-><DL
-><DT
->8.1. <A
-HREF="#AEN1178"
->Installing the required packages for Debian</A
-></DT
-><DT
->8.2. <A
-HREF="#AEN1184"
->Installing the required packages for RedHat</A
-></DT
-><DT
->8.3. <A
-HREF="#AEN1193"
->Compile Samba</A
-></DT
-><DT
->8.4. <A
-HREF="#AEN1205"
->Setup your /etc/krb5.conf</A
-></DT
-><DT
->8.5. <A
-HREF="#AEN1215"
->Create the computer account</A
-></DT
-><DD
-><DL
-><DT
->8.5.1. <A
-HREF="#AEN1219"
->Possible errors</A
-></DT
-></DL
-></DD
-><DT
->8.6. <A
-HREF="#AEN1231"
->Test your server setup</A
-></DT
-><DT
->8.7. <A
-HREF="#AEN1236"
->Testing with smbclient</A
-></DT
-><DT
->8.8. <A
-HREF="#AEN1239"
->Notes</A
-></DT
-></DL
-></DD
-><DT
->9. <A
-HREF="#DOMAIN-SECURITY"
->Samba as a NT4 domain member</A
-></DT
-><DD
-><DL
-><DT
->9.1. <A
-HREF="#AEN1261"
->Joining an NT Domain with Samba 2.2</A
-></DT
-><DT
->9.2. <A
-HREF="#AEN1325"
->Samba and Windows 2000 Domains</A
-></DT
-><DT
->9.3. <A
-HREF="#AEN1330"
->Why is this better than security = server?</A
-></DT
-></DL
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="SAMBA-PDC"
-></A
->Chapter 6. How to Configure Samba as a NT4 Primary Domain Controller</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN566"
-></A
->6.1. Prerequisite Reading</H2
-><P
->Before you continue reading in this chapter, please make sure
-that you are comfortable with configuring basic files services
-in smb.conf and how to enable and administer password
-encryption in Samba. Theses two topics are covered in the
-<A
-HREF="smb.conf.5.html"
-TARGET="_top"
-><TT
-CLASS="FILENAME"
->smb.conf(5)</TT
-></A
->
-manpage and the <A
-HREF="ENCRYPTION.html"
-TARGET="_top"
->Encryption chapter</A
->
-of this HOWTO Collection.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN572"
-></A
->6.2. Background</H2
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Author's Note:</I
-></SPAN
-> This document is a combination
-of David Bannon's "Samba 2.2 PDC HOWTO" and "Samba NT Domain FAQ".
-Both documents are superseded by this one.</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->Versions of Samba prior to release 2.2 had marginal capabilities to act
-as a Windows NT 4.0 Primary Domain Controller
-
-(PDC). With Samba 2.2.0, we are proud to announce official support for
-Windows NT 4.0-style domain logons from Windows NT 4.0 and Windows
-2000 clients. This article outlines the steps
-necessary for configuring Samba as a PDC. It is necessary to have a
-working Samba server prior to implementing the PDC functionality. If
-you have not followed the steps outlined in <A
-HREF="UNIX_INSTALL.html"
-TARGET="_top"
-> UNIX_INSTALL.html</A
->, please make sure
-that your server is configured correctly before proceeding. Another
-good resource in the <A
-HREF="smb.conf.5.html"
-TARGET="_top"
->smb.conf(5) man
-page</A
->. The following functionality should work in 2.2:</P
-><P
-></P
-><UL
-><LI
-><P
-> domain logons for Windows NT 4.0/2000 clients.
- </P
-></LI
-><LI
-><P
-> placing a Windows 9x client in user level security
- </P
-></LI
-><LI
-><P
-> retrieving a list of users and groups from a Samba PDC to
- Windows 9x/NT/2000 clients
- </P
-></LI
-><LI
-><P
-> roving (roaming) user profiles
- </P
-></LI
-><LI
-><P
-> Windows NT 4.0-style system policies
- </P
-></LI
-></UL
-><P
->The following pieces of functionality are not included in the 2.2 release:</P
-><P
-></P
-><UL
-><LI
-><P
-> Windows NT 4 domain trusts
- </P
-></LI
-><LI
-><P
-> SAM replication with Windows NT 4.0 Domain Controllers
- (i.e. a Samba PDC and a Windows NT BDC or vice versa)
- </P
-></LI
-><LI
-><P
-> Adding users via the User Manager for Domains
- </P
-></LI
-><LI
-><P
-> Acting as a Windows 2000 Domain Controller (i.e. Kerberos and
- Active Directory)
- </P
-></LI
-></UL
-><P
->Please note that Windows 9x clients are not true members of a domain
-for reasons outlined in this article. Therefore the protocol for
-support Windows 9x-style domain logons is completely different
-from NT4 domain logons and has been officially supported for some
-time.</P
-><P
->Implementing a Samba PDC can basically be divided into 2 broad
-steps.</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> Configuring the Samba PDC
- </P
-></LI
-><LI
-><P
-> Creating machine trust accounts and joining clients
- to the domain
- </P
-></LI
-></OL
-><P
->There are other minor details such as user profiles, system
-policies, etc... However, these are not necessarily specific
-to a Samba PDC as much as they are related to Windows NT networking
-concepts. They will be mentioned only briefly here.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN611"
-></A
->6.3. Configuring the Samba Domain Controller</H2
-><P
->The first step in creating a working Samba PDC is to
-understand the parameters necessary in smb.conf. I will not
-attempt to re-explain the parameters here as they are more that
-adequately covered in <A
-HREF="smb.conf.5.html"
-TARGET="_top"
-> the smb.conf
-man page</A
->. For convenience, the parameters have been
-linked with the actual smb.conf description.</P
-><P
->Here is an example <TT
-CLASS="FILENAME"
->smb.conf</TT
-> for acting as a PDC:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[global]
- ; Basic server settings
- <A
-HREF="smb.conf.5.html#NETBIOSNAME"
-TARGET="_top"
->netbios name</A
-> = <TT
-CLASS="REPLACEABLE"
-><I
->POGO</I
-></TT
->
- <A
-HREF="smb.conf.5.html#WORKGROUP"
-TARGET="_top"
->workgroup</A
-> = <TT
-CLASS="REPLACEABLE"
-><I
->NARNIA</I
-></TT
->
-
- ; we should act as the domain and local master browser
- <A
-HREF="smb.conf.5.html#OSLEVEL"
-TARGET="_top"
->os level</A
-> = 64
- <A
-HREF="smb.conf.5.html#PERFERREDMASTER"
-TARGET="_top"
->preferred master</A
-> = yes
- <A
-HREF="smb.conf.5.html#DOMAINMASTER"
-TARGET="_top"
->domain master</A
-> = yes
- <A
-HREF="smb.conf.5.html#LOCALMASTER"
-TARGET="_top"
->local master</A
-> = yes
-
- ; security settings (must user security = user)
- <A
-HREF="smb.conf.5.html#SECURITYEQUALSUSER"
-TARGET="_top"
->security</A
-> = user
-
- ; encrypted passwords are a requirement for a PDC
- <A
-HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
-TARGET="_top"
->encrypt passwords</A
-> = yes
-
- ; support domain logons
- <A
-HREF="smb.conf.5.html#DOMAINLOGONS"
-TARGET="_top"
->domain logons</A
-> = yes
-
- ; where to store user profiles?
- <A
-HREF="smb.conf.5.html#LOGONPATH"
-TARGET="_top"
->logon path</A
-> = \\%N\profiles\%u
-
- ; where is a user's home directory and where should it
- ; be mounted at?
- <A
-HREF="smb.conf.5.html#LOGONDRIVE"
-TARGET="_top"
->logon drive</A
-> = H:
- <A
-HREF="smb.conf.5.html#LOGONHOME"
-TARGET="_top"
->logon home</A
-> = \\homeserver\%u
-
- ; specify a generic logon script for all users
- ; this is a relative **DOS** path to the [netlogon] share
- <A
-HREF="smb.conf.5.html#LOGONSCRIPT"
-TARGET="_top"
->logon script</A
-> = logon.cmd
-
-; necessary share for domain controller
-[netlogon]
- <A
-HREF="smb.conf.5.html#PATH"
-TARGET="_top"
->path</A
-> = /usr/local/samba/lib/netlogon
- <A
-HREF="smb.conf.5.html#READONLY"
-TARGET="_top"
->read only</A
-> = yes
- <A
-HREF="smb.conf.5.html#WRITELIST"
-TARGET="_top"
->write list</A
-> = <TT
-CLASS="REPLACEABLE"
-><I
->ntadmin</I
-></TT
->
-
-; share for storing user profiles
-[profiles]
- <A
-HREF="smb.conf.5.html#PATH"
-TARGET="_top"
->path</A
-> = /export/smb/ntprofile
- <A
-HREF="smb.conf.5.html#READONLY"
-TARGET="_top"
->read only</A
-> = no
- <A
-HREF="smb.conf.5.html#CREATEMASK"
-TARGET="_top"
->create mask</A
-> = 0600
- <A
-HREF="smb.conf.5.html#DIRECTORYMASK"
-TARGET="_top"
->directory mask</A
-> = 0700</PRE
-></P
-><P
->There are a couple of points to emphasize in the above configuration.</P
-><P
-></P
-><UL
-><LI
-><P
-> Encrypted passwords must be enabled. For more details on how
- to do this, refer to <A
-HREF="ENCRYPTION.html"
-TARGET="_top"
->ENCRYPTION.html</A
->.
- </P
-></LI
-><LI
-><P
-> The server must support domain logons and a
- <TT
-CLASS="FILENAME"
->[netlogon]</TT
-> share
- </P
-></LI
-><LI
-><P
-> The server must be the domain master browser in order for Windows
- client to locate the server as a DC. Please refer to the various
- Network Browsing documentation included with this distribution for
- details.
- </P
-></LI
-></UL
-><P
->As Samba 2.2 does not offer a complete implementation of group mapping
-between Windows NT groups and Unix groups (this is really quite
-complicated to explain in a short space), you should refer to the
-<A
-HREF="smb.conf.5.html#DOMAINADMINGROUP"
-TARGET="_top"
->domain admin
-group</A
-> smb.conf parameter for information of creating "Domain
-Admins" style accounts.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN654"
-></A
->6.4. Creating Machine Trust Accounts and Joining Clients to the
-Domain</H2
-><P
->A machine trust account is a Samba account that is used to
-authenticate a client machine (rather than a user) to the Samba
-server. In Windows terminology, this is known as a "Computer
-Account."</P
-><P
->The password of a machine trust account acts as the shared secret for
-secure communication with the Domain Controller. This is a security
-feature to prevent an unauthorized machine with the same NetBIOS name
-from joining the domain and gaining access to domain user/group
-accounts. Windows NT and 2000 clients use machine trust accounts, but
-Windows 9x clients do not. Hence, a Windows 9x client is never a true
-member of a domain because it does not possess a machine trust
-account, and thus has no shared secret with the domain controller.</P
-><P
->A Windows PDC stores each machine trust account in the Windows
-Registry. A Samba PDC, however, stores each machine trust account
-in two parts, as follows:
-
-<P
-></P
-><UL
-><LI
-><P
->A Samba account, stored in the same location as user
- LanMan and NT password hashes (currently
- <TT
-CLASS="FILENAME"
->smbpasswd</TT
->). The Samba account
- possesses and uses only the NT password hash.</P
-></LI
-><LI
-><P
->A corresponding Unix account, typically stored in
- <TT
-CLASS="FILENAME"
->/etc/passwd</TT
->. (Future releases will alleviate the need to
- create <TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entries.) </P
-></LI
-></UL
-></P
-><P
->There are two ways to create machine trust accounts:</P
-><P
-></P
-><UL
-><LI
-><P
-> Manual creation. Both the Samba and corresponding
- Unix account are created by hand.</P
-></LI
-><LI
-><P
-> "On-the-fly" creation. The Samba machine trust
- account is automatically created by Samba at the time the client
- is joined to the domain. (For security, this is the
- recommended method.) The corresponding Unix account may be
- created automatically or manually. </P
-></LI
-></UL
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN673"
-></A
->6.4.1. Manual Creation of Machine Trust Accounts</H3
-><P
->The first step in manually creating a machine trust account is to
-manually create the corresponding Unix account in
-<TT
-CLASS="FILENAME"
->/etc/passwd</TT
->. This can be done using
-<B
-CLASS="COMMAND"
->vipw</B
-> or other 'add user' command that is normally
-used to create new Unix accounts. The following is an example for a
-Linux based Samba server:</P
-><P
-> <TT
-CLASS="PROMPT"
->root# </TT
-><B
-CLASS="COMMAND"
->/usr/sbin/useradd -g 100 -d /dev/null -c <TT
-CLASS="REPLACEABLE"
-><I
->"machine
-nickname"</I
-></TT
-> -s /bin/false <TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
->$ </B
-></P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><B
-CLASS="COMMAND"
->passwd -l <TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
->$</B
-></P
-><P
->On *BSD systems, this can be done using the 'chpass' utility:</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><B
-CLASS="COMMAND"
->chpass -a "<TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
->$:*:101:100::0:0:Workstation <TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
->:/dev/null:/sbin/nologin"</B
-></P
-><P
->The <TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entry will list the machine name
-with a "$" appended, won't have a password, will have a null shell and no
-home directory. For example a machine named 'doppy' would have an
-<TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entry like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->doppy$:x:505:501:<TT
-CLASS="REPLACEABLE"
-><I
->machine_nickname</I
-></TT
->:/dev/null:/bin/false</PRE
-></P
-><P
->Above, <TT
-CLASS="REPLACEABLE"
-><I
->machine_nickname</I
-></TT
-> can be any
-descriptive name for the client, i.e., BasementComputer.
-<TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
-> absolutely must be the NetBIOS
-name of the client to be joined to the domain. The "$" must be
-appended to the NetBIOS name of the client or Samba will not recognize
-this as a machine trust account.</P
-><P
->Now that the corresponding Unix account has been created, the next step is to create
-the Samba account for the client containing the well-known initial
-machine trust account password. This can be done using the <A
-HREF="smbpasswd.8.html"
-TARGET="_top"
-><B
-CLASS="COMMAND"
->smbpasswd(8)</B
-></A
-> command
-as shown here:</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><B
-CLASS="COMMAND"
->smbpasswd -a -m <TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
-></B
-></P
-><P
->where <TT
-CLASS="REPLACEABLE"
-><I
->machine_name</I
-></TT
-> is the machine's NetBIOS
-name. The RID of the new machine account is generated from the UID of
-the corresponding Unix account.</P
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->Join the client to the domain immediately</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
-> Manually creating a machine trust account using this method is the
- equivalent of creating a machine trust account on a Windows NT PDC using
- the "Server Manager". From the time at which the account is created
- to the time which the client joins the domain and changes the password,
- your domain is vulnerable to an intruder joining your domain using a
- a machine with the same NetBIOS name. A PDC inherently trusts
- members of the domain and will serve out a large degree of user
- information to such clients. You have been warned!
- </P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN714"
-></A
->6.4.2. "On-the-Fly" Creation of Machine Trust Accounts</H3
-><P
->The second (and recommended) way of creating machine trust accounts is
-simply to allow the Samba server to create them as needed when the client
-is joined to the domain. </P
-><P
->Since each Samba machine trust account requires a corresponding
-Unix account, a method for automatically creating the
-Unix account is usually supplied; this requires configuration of the
-<A
-HREF="smb.conf.5.html#ADDUSERSCRIPT"
-TARGET="_top"
->add user script</A
->
-option in <TT
-CLASS="FILENAME"
->smb.conf</TT
->. This
-method is not required, however; corresponding Unix accounts may also
-be created manually.</P
-><P
->Below is an example for a RedHat 6.2 Linux system.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[global]
- # &#60;...remainder of parameters...&#62;
- add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u </PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN723"
-></A
->6.4.3. Joining the Client to the Domain</H3
-><P
->The procedure for joining a client to the domain varies with the
-version of Windows.</P
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Windows 2000</I
-></SPAN
-></P
-><P
-> When the user elects to join the client to a domain, Windows prompts for
- an account and password that is privileged to join the domain. A
- Samba administrative account (i.e., a Samba account that has root
- privileges on the Samba server) must be entered here; the
- operation will fail if an ordinary user account is given.
- The password for this account should be
- set to a different password than the associated
- <TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entry, for security
- reasons. </P
-><P
->The session key of the Samba administrative account acts as an
- encryption key for setting the password of the machine trust
- account. The machine trust account will be created on-the-fly, or
- updated if it already exists.</P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Windows NT</I
-></SPAN
-></P
-><P
-> If the machine trust account was created manually, on the
- Identification Changes menu enter the domain name, but do not
- check the box "Create a Computer Account in the Domain." In this case,
- the existing machine trust account is used to join the machine to
- the domain.</P
-><P
-> If the machine trust account is to be created
- on-the-fly, on the Identification Changes menu enter the domain
- name, and check the box "Create a Computer Account in the Domain." In
- this case, joining the domain proceeds as above for Windows 2000
- (i.e., you must supply a Samba administrative account when
- prompted).</P
-></LI
-></UL
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN738"
-></A
->6.5. Common Problems and Errors</H2
-><P
-></P
-><P
-></P
-><UL
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->I cannot include a '$' in a machine name.</I
-></SPAN
->
- </P
-><P
-> A 'machine name' in (typically) <TT
-CLASS="FILENAME"
->/etc/passwd</TT
->
- of the machine name with a '$' appended. FreeBSD (and other BSD
- systems?) won't create a user with a '$' in their name.
- </P
-><P
-> The problem is only in the program used to make the entry, once
- made, it works perfectly. So create a user without the '$' and
- use <B
-CLASS="COMMAND"
->vipw</B
-> to edit the entry, adding the '$'. Or create
- the whole entry with vipw if you like, make sure you use a
- unique User ID !
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->I get told "You already have a connection to the Domain...."
- or "Cannot join domain, the credentials supplied conflict with an
- existing set.." when creating a machine trust account.</I
-></SPAN
->
- </P
-><P
-> This happens if you try to create a machine trust account from the
- machine itself and already have a connection (e.g. mapped drive)
- to a share (or IPC$) on the Samba PDC. The following command
- will remove all network drive connections:
- </P
-><P
-> <TT
-CLASS="PROMPT"
->C:\WINNT\&#62;</TT
-> <B
-CLASS="COMMAND"
->net use * /d</B
->
- </P
-><P
-> Further, if the machine is a already a 'member of a workgroup' that
- is the same name as the domain you are joining (bad idea) you will
- get this message. Change the workgroup name to something else, it
- does not matter what, reboot, and try again.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->The system can not log you on (C000019B)....</I
-></SPAN
->
- </P
-><P
->I joined the domain successfully but after upgrading
- to a newer version of the Samba code I get the message, "The system
- can not log you on (C000019B), Please try a gain or consult your
- system administrator" when attempting to logon.
- </P
-><P
-> This occurs when the domain SID stored in
- <TT
-CLASS="FILENAME"
->private/WORKGROUP.SID</TT
-> is
- changed. For example, you remove the file and <B
-CLASS="COMMAND"
->smbd</B
-> automatically
- creates a new one. Or you are swapping back and forth between
- versions 2.0.7, TNG and the HEAD branch code (not recommended). The
- only way to correct the problem is to restore the original domain
- SID or remove the domain client from the domain and rejoin.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->The machine trust account for this computer either does not
- exist or is not accessible.</I
-></SPAN
->
- </P
-><P
-> When I try to join the domain I get the message "The machine account
- for this computer either does not exist or is not accessible". What's
- wrong?
- </P
-><P
-> This problem is caused by the PDC not having a suitable machine trust account.
- If you are using the <TT
-CLASS="PARAMETER"
-><I
->add user script</I
-></TT
-> method to create
- accounts then this would indicate that it has not worked. Ensure the domain
- admin user system is working.
- </P
-><P
-> Alternatively if you are creating account entries manually then they
- have not been created correctly. Make sure that you have the entry
- correct for the machine trust account in smbpasswd file on the Samba PDC.
- If you added the account using an editor rather than using the smbpasswd
- utility, make sure that the account name is the machine NetBIOS name
- with a '$' appended to it ( i.e. computer_name$ ). There must be an entry
- in both /etc/passwd and the smbpasswd file. Some people have reported
- that inconsistent subnet masks between the Samba server and the NT
- client have caused this problem. Make sure that these are consistent
- for both client and server.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->When I attempt to login to a Samba Domain from a NT4/W2K workstation,
- I get a message about my account being disabled.</I
-></SPAN
->
- </P
-><P
-> This problem is caused by a PAM related bug in Samba 2.2.0. This bug is
- fixed in 2.2.1. Other symptoms could be unaccessible shares on
- NT/W2K member servers in the domain or the following error in your smbd.log:
- passdb/pampass.c:pam_account(268) PAM: UNKNOWN ERROR for User: %user%
- </P
-><P
-> At first be ensure to enable the useraccounts with <B
-CLASS="COMMAND"
->smbpasswd -e
- %user%</B
->, this is normally done, when you create an account.
- </P
-><P
-> In order to work around this problem in 2.2.0, configure the
- <TT
-CLASS="PARAMETER"
-><I
->account</I
-></TT
-> control flag in
- <TT
-CLASS="FILENAME"
->/etc/pam.d/samba</TT
-> file as follows:
- </P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> account required pam_permit.so
- </PRE
-></P
-><P
-> If you want to remain backward compatibility to samba 2.0.x use
- <TT
-CLASS="FILENAME"
->pam_permit.so</TT
->, it's also possible to use
- <TT
-CLASS="FILENAME"
->pam_pwdb.so</TT
->. There are some bugs if you try to
- use <TT
-CLASS="FILENAME"
->pam_unix.so</TT
->, if you need this, be ensure to use
- the most recent version of this file.
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN786"
-></A
->6.6. System Policies and Profiles</H2
-><P
->Much of the information necessary to implement System Policies and
-Roving User Profiles in a Samba domain is the same as that for
-implementing these same items in a Windows NT 4.0 domain.
-You should read the white paper <A
-HREF="http://www.microsoft.com/ntserver/management/deployment/planguide/prof_policies.asp"
-TARGET="_top"
->Implementing
-Profiles and Policies in Windows NT 4.0</A
-> available from Microsoft.</P
-><P
->Here are some additional details:</P
-><P
-></P
-><UL
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->What about Windows NT Policy Editor?</I
-></SPAN
->
- </P
-><P
-> To create or edit <TT
-CLASS="FILENAME"
->ntconfig.pol</TT
-> you must use
- the NT Server Policy Editor, <B
-CLASS="COMMAND"
->poledit.exe</B
-> which
- is included with NT Server but <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not NT Workstation</I
-></SPAN
->.
- There is a Policy Editor on a NTws
- but it is not suitable for creating <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Domain Policies</I
-></SPAN
->.
- Further, although the Windows 95
- Policy Editor can be installed on an NT Workstation/Server, it will not
- work with NT policies because the registry key that are set by the policy templates.
- However, the files from the NT Server will run happily enough on an NTws.
- You need <TT
-CLASS="FILENAME"
->poledit.exe, common.adm</TT
-> and <TT
-CLASS="FILENAME"
->winnt.adm</TT
->. It is convenient
- to put the two *.adm files in <TT
-CLASS="FILENAME"
->c:\winnt\inf</TT
-> which is where
- the binary will look for them unless told otherwise. Note also that that
- directory is 'hidden'.
- </P
-><P
-> The Windows NT policy editor is also included with the Service Pack 3 (and
- later) for Windows NT 4.0. Extract the files using <B
-CLASS="COMMAND"
->servicepackname /x</B
->,
- i.e. that's <B
-CLASS="COMMAND"
->Nt4sp6ai.exe /x</B
-> for service pack 6a. The policy editor,
- <B
-CLASS="COMMAND"
->poledit.exe</B
-> and the associated template files (*.adm) should
- be extracted as well. It is also possible to downloaded the policy template
- files for Office97 and get a copy of the policy editor. Another possible
- location is with the Zero Administration Kit available for download from Microsoft.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Can Win95 do Policies?</I
-></SPAN
->
- </P
-><P
-> Install the group policy handler for Win9x to pick up group
- policies. Look on the Win98 CD in <TT
-CLASS="FILENAME"
->\tools\reskit\netadmin\poledit</TT
->.
- Install group policies on a Win9x client by double-clicking
- <TT
-CLASS="FILENAME"
->grouppol.inf</TT
->. Log off and on again a couple of
- times and see if Win98 picks up group policies. Unfortunately this needs
- to be done on every Win9x machine that uses group policies....
- </P
-><P
-> If group policies don't work one reports suggests getting the updated
- (read: working) grouppol.dll for Windows 9x. The group list is grabbed
- from /etc/group.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->How do I get 'User Manager' and 'Server Manager'</I
-></SPAN
->
- </P
-><P
-> Since I don't need to buy an NT Server CD now, how do I get
- the 'User Manager for Domains', the 'Server Manager'?
- </P
-><P
-> Microsoft distributes a version of these tools called nexus for
- installation on Windows 95 systems. The tools set includes
- </P
-><P
-></P
-><UL
-><LI
-><P
->Server Manager</P
-></LI
-><LI
-><P
->User Manager for Domains</P
-></LI
-><LI
-><P
->Event Viewer</P
-></LI
-></UL
-><P
-> Click here to download the archived file <A
-HREF="ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE"
-TARGET="_top"
->ftp://ftp.microsoft.com/Softlib/MSLFILES/NEXUS.EXE</A
->
- </P
-><P
-> The Windows NT 4.0 version of the 'User Manager for
- Domains' and 'Server Manager' are available from Microsoft via ftp
- from <A
-HREF="ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE"
-TARGET="_top"
->ftp://ftp.microsoft.com/Softlib/MSLFILES/SRVTOOLS.EXE</A
->
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN830"
-></A
->6.7. What other help can I get?</H2
-><P
->There are many sources of information available in the form
-of mailing lists, RFC's and documentation. The docs that come
-with the samba distribution contain very good explanations of
-general SMB topics such as browsing.</P
-><P
-></P
-><UL
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->What are some diagnostics tools I can use to debug the domain logon
- process and where can I find them?</I
-></SPAN
->
- </P
-><P
-> One of the best diagnostic tools for debugging problems is Samba itself.
- You can use the -d option for both smbd and nmbd to specify what
- 'debug level' at which to run. See the man pages on smbd, nmbd and
- smb.conf for more information on debugging options. The debug
- level can range from 1 (the default) to 10 (100 for debugging passwords).
- </P
-><P
-> Another helpful method of debugging is to compile samba using the
- <B
-CLASS="COMMAND"
->gcc -g </B
-> flag. This will include debug
- information in the binaries and allow you to attach gdb to the
- running smbd / nmbd process. In order to attach gdb to an smbd
- process for an NT workstation, first get the workstation to make the
- connection. Pressing ctrl-alt-delete and going down to the domain box
- is sufficient (at least, on the first time you join the domain) to
- generate a 'LsaEnumTrustedDomains'. Thereafter, the workstation
- maintains an open connection, and therefore there will be an smbd
- process running (assuming that you haven't set a really short smbd
- idle timeout) So, in between pressing ctrl alt delete, and actually
- typing in your password, you can gdb attach and continue.
- </P
-><P
-> Some useful samba commands worth investigating:
- </P
-><P
-></P
-><UL
-><LI
-><P
->testparam | more</P
-></LI
-><LI
-><P
->smbclient -L //{netbios name of server}</P
-></LI
-></UL
-><P
-> An SMB enabled version of tcpdump is available from
- <A
-HREF="http://www.tcpdump.org/"
-TARGET="_top"
->http://www.tcpdup.org/</A
->.
- Ethereal, another good packet sniffer for Unix and Win32
- hosts, can be downloaded from <A
-HREF="http://www.ethereal.com/"
-TARGET="_top"
->http://www.ethereal.com</A
->.
- </P
-><P
-> For tracing things on the Microsoft Windows NT, Network Monitor
- (aka. netmon) is available on the Microsoft Developer Network CD's,
- the Windows NT Server install CD and the SMS CD's. The version of
- netmon that ships with SMS allows for dumping packets between any two
- computers (i.e. placing the network interface in promiscuous mode).
- The version on the NT Server install CD will only allow monitoring
- of network traffic directed to the local NT box and broadcasts on the
- local subnet. Be aware that Ethereal can read and write netmon
- formatted files.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->How do I install 'Network Monitor' on an NT Workstation
- or a Windows 9x box?</I
-></SPAN
->
- </P
-><P
-> Installing netmon on an NT workstation requires a couple
- of steps. The following are for installing Netmon V4.00.349, which comes
- with Microsoft Windows NT Server 4.0, on Microsoft Windows NT
- Workstation 4.0. The process should be similar for other version of
- Windows NT / Netmon. You will need both the Microsoft Windows
- NT Server 4.0 Install CD and the Workstation 4.0 Install CD.
- </P
-><P
-> Initially you will need to install 'Network Monitor Tools and Agent'
- on the NT Server. To do this
- </P
-><P
-></P
-><UL
-><LI
-><P
->Goto Start - Settings - Control Panel -
- Network - Services - Add </P
-></LI
-><LI
-><P
->Select the 'Network Monitor Tools and Agent' and
- click on 'OK'.</P
-></LI
-><LI
-><P
->Click 'OK' on the Network Control Panel.
- </P
-></LI
-><LI
-><P
->Insert the Windows NT Server 4.0 install CD
- when prompted.</P
-></LI
-></UL
-><P
-> At this point the Netmon files should exist in
- <TT
-CLASS="FILENAME"
->%SYSTEMROOT%\System32\netmon\*.*</TT
->.
- Two subdirectories exist as well, <TT
-CLASS="FILENAME"
->parsers\</TT
->
- which contains the necessary DLL's for parsing the netmon packet
- dump, and <TT
-CLASS="FILENAME"
->captures\</TT
->.
- </P
-><P
-> In order to install the Netmon tools on an NT Workstation, you will
- first need to install the 'Network Monitor Agent' from the Workstation
- install CD.
- </P
-><P
-></P
-><UL
-><LI
-><P
->Goto Start - Settings - Control Panel -
- Network - Services - Add</P
-></LI
-><LI
-><P
->Select the 'Network Monitor Agent' and click
- on 'OK'.</P
-></LI
-><LI
-><P
->Click 'OK' on the Network Control Panel.
- </P
-></LI
-><LI
-><P
->Insert the Windows NT Workstation 4.0 install
- CD when prompted.</P
-></LI
-></UL
-><P
-> Now copy the files from the NT Server in %SYSTEMROOT%\System32\netmon\*.*
- to %SYSTEMROOT%\System32\netmon\*.* on the Workstation and set
- permissions as you deem appropriate for your site. You will need
- administrative rights on the NT box to run netmon.
- </P
-><P
-> To install Netmon on a Windows 9x box install the network monitor agent
- from the Windows 9x CD (\admin\nettools\netmon). There is a readme
- file located with the netmon driver files on the CD if you need
- information on how to do this. Copy the files from a working
- Netmon installation.
- </P
-></LI
-><LI
-><P
-> The following is a list if helpful URLs and other links:
- </P
-><P
-></P
-><UL
-><LI
-><P
->Home of Samba site <A
-HREF="http://samba.org"
-TARGET="_top"
-> http://samba.org</A
->. We have a mirror near you !</P
-></LI
-><LI
-><P
-> The <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Development</I
-></SPAN
-> document
- on the Samba mirrors might mention your problem. If so,
- it might mean that the developers are working on it.</P
-></LI
-><LI
-><P
->See how Scott Merrill simulates a BDC behavior at
- <A
-HREF="http://www.skippy.net/linux/smb-howto.html"
-TARGET="_top"
-> http://www.skippy.net/linux/smb-howto.html</A
->. </P
-></LI
-><LI
-><P
->Although 2.0.7 has almost had its day as a PDC, David Bannon will
- keep the 2.0.7 PDC pages at <A
-HREF="http://bioserve.latrobe.edu.au/samba"
-TARGET="_top"
-> http://bioserve.latrobe.edu.au/samba</A
-> going for a while yet.</P
-></LI
-><LI
-><P
->Misc links to CIFS information
- <A
-HREF="http://samba.org/cifs/"
-TARGET="_top"
->http://samba.org/cifs/</A
-></P
-></LI
-><LI
-><P
->NT Domains for Unix <A
-HREF="http://mailhost.cb1.com/~lkcl/ntdom/"
-TARGET="_top"
-> http://mailhost.cb1.com/~lkcl/ntdom/</A
-></P
-></LI
-><LI
-><P
->FTP site for older SMB specs:
- <A
-HREF="ftp://ftp.microsoft.com/developr/drg/CIFS/"
-TARGET="_top"
-> ftp://ftp.microsoft.com/developr/drg/CIFS/</A
-></P
-></LI
-></UL
-></LI
-></UL
-><P
-></P
-><UL
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->How do I get help from the mailing lists?</I
-></SPAN
->
- </P
-><P
-> There are a number of Samba related mailing lists. Go to <A
-HREF="http://samba.org"
-TARGET="_top"
->http://samba.org</A
->, click on your nearest mirror
- and then click on <B
-CLASS="COMMAND"
->Support</B
-> and then click on <B
-CLASS="COMMAND"
-> Samba related mailing lists</B
->.
- </P
-><P
-> For questions relating to Samba TNG go to
- <A
-HREF="http://www.samba-tng.org/"
-TARGET="_top"
->http://www.samba-tng.org/</A
->
- It has been requested that you don't post questions about Samba-TNG to the
- main stream Samba lists.</P
-><P
-> If you post a message to one of the lists please observe the following guide lines :
- </P
-><P
-></P
-><UL
-><LI
-><P
-> Always remember that the developers are volunteers, they are
- not paid and they never guarantee to produce a particular feature at
- a particular time. Any time lines are 'best guess' and nothing more.
- </P
-></LI
-><LI
-><P
-> Always mention what version of samba you are using and what
- operating system its running under. You should probably list the
- relevant sections of your smb.conf file, at least the options
- in [global] that affect PDC support.</P
-></LI
-><LI
-><P
->In addition to the version, if you obtained Samba via
- CVS mention the date when you last checked it out.</P
-></LI
-><LI
-><P
-> Try and make your question clear and brief, lots of long,
- convoluted questions get deleted before they are completely read !
- Don't post html encoded messages (if you can select colour or font
- size its html).</P
-></LI
-><LI
-><P
-> If you run one of those nifty 'I'm on holidays' things when
- you are away, make sure its configured to not answer mailing lists.
- </P
-></LI
-><LI
-><P
-> Don't cross post. Work out which is the best list to post to
- and see what happens, i.e. don't post to both samba-ntdom and samba-technical.
- Many people active on the lists subscribe to more
- than one list and get annoyed to see the same message two or more times.
- Often someone will see a message and thinking it would be better dealt
- with on another, will forward it on for you.</P
-></LI
-><LI
-><P
->You might include <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->partial</I
-></SPAN
->
- log files written at a debug level set to as much as 20.
- Please don't send the entire log but enough to give the context of the
- error messages.</P
-></LI
-><LI
-><P
->(Possibly) If you have a complete netmon trace ( from the opening of
- the pipe to the error ) you can send the *.CAP file as well.</P
-></LI
-><LI
-><P
->Please think carefully before attaching a document to an email.
- Consider pasting the relevant parts into the body of the message. The samba
- mailing lists go to a huge number of people, do they all need a copy of your
- smb.conf in their attach directory?</P
-></LI
-></UL
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->How do I get off the mailing lists?</I
-></SPAN
->
- </P
-><P
->To have your name removed from a samba mailing list, go to the
- same place you went to to get on it. Go to <A
-HREF="http://lists.samba.org/"
-TARGET="_top"
->http://lists.samba.org</A
->,
- click on your nearest mirror and then click on <B
-CLASS="COMMAND"
->Support</B
-> and
- then click on <B
-CLASS="COMMAND"
-> Samba related mailing lists</B
->. Or perhaps see
- <A
-HREF="http://lists.samba.org/mailman/roster/samba-ntdom"
-TARGET="_top"
->here</A
->
- </P
-><P
-> Please don't post messages to the list asking to be removed, you will just
- be referred to the above address (unless that process failed in some way...)
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN944"
-></A
->6.8. Domain Control for Windows 9x/ME</H2
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->The following section contains much of the original
-DOMAIN.txt file previously included with Samba. Much of
-the material is based on what went into the book <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Special
-Edition, Using Samba</I
-></SPAN
->, by Richard Sharpe.</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->A domain and a workgroup are exactly the same thing in terms of network
-browsing. The difference is that a distributable authentication
-database is associated with a domain, for secure login access to a
-network. Also, different access rights can be granted to users if they
-successfully authenticate against a domain logon server (NT server and
-other systems based on NT server support this, as does at least Samba TNG now).</P
-><P
->The SMB client logging on to a domain has an expectation that every other
-server in the domain should accept the same authentication information.
-Network browsing functionality of domains and workgroups is
-identical and is explained in BROWSING.txt. It should be noted, that browsing
-is totally orthogonal to logon support.</P
-><P
->Issues related to the single-logon network model are discussed in this
-section. Samba supports domain logons, network logon scripts, and user
-profiles for MS Windows for workgroups and MS Windows 9X/ME clients
-which will be the focus of this section.</P
-><P
->When an SMB client in a domain wishes to logon it broadcast requests for a
-logon server. The first one to reply gets the job, and validates its
-password using whatever mechanism the Samba administrator has installed.
-It is possible (but very stupid) to create a domain where the user
-database is not shared between servers, i.e. they are effectively workgroup
-servers advertising themselves as participating in a domain. This
-demonstrates how authentication is quite different from but closely
-involved with domains.</P
-><P
->Using these features you can make your clients verify their logon via
-the Samba server; make clients run a batch file when they logon to
-the network and download their preferences, desktop and start menu.</P
-><P
->Before launching into the configuration instructions, it is
-worthwhile lookingat how a Windows 9x/ME client performs a logon:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> The client broadcasts (to the IP broadcast address of the subnet it is in)
- a NetLogon request. This is sent to the NetBIOS name DOMAIN&#60;1c&#62; at the
- NetBIOS layer. The client chooses the first response it receives, which
- contains the NetBIOS name of the logon server to use in the format of
- \\SERVER.
- </P
-></LI
-><LI
-><P
-> The client then connects to that server, logs on (does an SMBsessetupX) and
- then connects to the IPC$ share (using an SMBtconX).
- </P
-></LI
-><LI
-><P
-> The client then does a NetWkstaUserLogon request, which retrieves the name
- of the user's logon script.
- </P
-></LI
-><LI
-><P
-> The client then connects to the NetLogon share and searches for this
- and if it is found and can be read, is retrieved and executed by the client.
- After this, the client disconnects from the NetLogon share.
- </P
-></LI
-><LI
-><P
-> The client then sends a NetUserGetInfo request to the server, to retrieve
- the user's home share, which is used to search for profiles. Since the
- response to the NetUserGetInfo request does not contain much more
- the user's home share, profiles for Win9X clients MUST reside in the user
- home directory.
- </P
-></LI
-><LI
-><P
-> The client then connects to the user's home share and searches for the
- user's profile. As it turns out, you can specify the user's home share as
- a sharename and path. For example, \\server\fred\.profile.
- If the profiles are found, they are implemented.
- </P
-></LI
-><LI
-><P
-> The client then disconnects from the user's home share, and reconnects to
- the NetLogon share and looks for CONFIG.POL, the policies file. If this is
- found, it is read and implemented.
- </P
-></LI
-></OL
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN970"
-></A
->6.8.1. Configuration Instructions: Network Logons</H3
-><P
->The main difference between a PDC and a Windows 9x logon
-server configuration is that</P
-><P
-></P
-><UL
-><LI
-><P
->Password encryption is not required for a Windows 9x logon server.</P
-></LI
-><LI
-><P
->Windows 9x/ME clients do not possess machine trust accounts.</P
-></LI
-></UL
-><P
->Therefore, a Samba PDC will also act as a Windows 9x logon
-server.</P
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->security mode and master browsers</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->There are a few comments to make in order to tie up some
-loose ends. There has been much debate over the issue of whether
-or not it is ok to configure Samba as a Domain Controller in security
-modes other than <TT
-CLASS="CONSTANT"
->USER</TT
->. The only security mode
-which will not work due to technical reasons is <TT
-CLASS="CONSTANT"
->SHARE</TT
->
-mode security. <TT
-CLASS="CONSTANT"
->DOMAIN</TT
-> and <TT
-CLASS="CONSTANT"
->SERVER</TT
->
-mode security is really just a variation on SMB user level security.</P
-><P
->Actually, this issue is also closely tied to the debate on whether
-or not Samba must be the domain master browser for its workgroup
-when operating as a DC. While it may technically be possible
-to configure a server as such (after all, browsing and domain logons
-are two distinctly different functions), it is not a good idea to
-so. You should remember that the DC must register the DOMAIN#1b NetBIOS
-name. This is the name used by Windows clients to locate the DC.
-Windows clients do not distinguish between the DC and the DMB.
-For this reason, it is very wise to configure the Samba DC as the DMB.</P
-><P
->Now back to the issue of configuring a Samba DC to use a mode other
-than "security = user". If a Samba host is configured to use
-another SMB server or DC in order to validate user connection
-requests, then it is a fact that some other machine on the network
-(the "password server") knows more about user than the Samba host.
-99% of the time, this other host is a domain controller. Now
-in order to operate in domain mode security, the "workgroup" parameter
-must be set to the name of the Windows NT domain (which already
-has a domain controller, right?)</P
-><P
->Therefore configuring a Samba box as a DC for a domain that
-already by definition has a PDC is asking for trouble.
-Therefore, you should always configure the Samba DC to be the DMB
-for its domain.</P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN989"
-></A
->6.8.2. Configuration Instructions: Setting up Roaming User Profiles</H3
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE!</I
-></SPAN
-> Roaming profiles support is different
-for Win9X and WinNT.</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->Before discussing how to configure roaming profiles, it is useful to see how
-Win9X and WinNT clients implement these features.</P
-><P
->Win9X clients send a NetUserGetInfo request to the server to get the user's
-profiles location. However, the response does not have room for a separate
-profiles location field, only the user's home share. This means that Win9X
-profiles are restricted to being in the user's home directory.</P
-><P
->WinNT clients send a NetSAMLogon RPC request, which contains many fields,
-including a separate field for the location of the user's profiles.
-This means that support for profiles is different for Win9X and WinNT.</P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN997"
-></A
->6.8.2.1. Windows NT Configuration</H4
-><P
->To support WinNT clients, in the [global] section of smb.conf set the
-following (for example):</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->logon path = \\profileserver\profileshare\profilepath\%U\moreprofilepath</PRE
-></P
-><P
->The default for this option is \\%N\%U\profile, namely
-\\sambaserver\username\profile. The \\N%\%U service is created
-automatically by the [homes] service.
-If you are using a samba server for the profiles, you _must_ make the
-share specified in the logon path browseable. </P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->[lkcl 26aug96 - we have discovered a problem where Windows clients can
-maintain a connection to the [homes] share in between logins. The
-[homes] share must NOT therefore be used in a profile path.]</P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1005"
-></A
->6.8.2.2. Windows 9X Configuration</H4
-><P
->To support Win9X clients, you must use the "logon home" parameter. Samba has
-now been fixed so that "net use/home" now works as well, and it, too, relies
-on the "logon home" parameter.</P
-><P
->By using the logon home parameter, you are restricted to putting Win9X
-profiles in the user's home directory. But wait! There is a trick you
-can use. If you set the following in the [global] section of your
-smb.conf file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->logon home = \\%L\%U\.profiles</PRE
-></P
-><P
->then your Win9X clients will dutifully put their clients in a subdirectory
-of your home directory called .profiles (thus making them hidden).</P
-><P
->Not only that, but 'net use/home' will also work, because of a feature in
-Win9X. It removes any directory stuff off the end of the home directory area
-and only uses the server and share portion. That is, it looks like you
-specified \\%L\%U for "logon home".</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1013"
-></A
->6.8.2.3. Win9X and WinNT Configuration</H4
-><P
->You can support profiles for both Win9X and WinNT clients by setting both the
-"logon home" and "logon path" parameters. For example:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->logon home = \\%L\%U\.profiles
-logon path = \\%L\profiles\%U</PRE
-></P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->I have not checked what 'net use /home' does on NT when "logon home" is
-set as above.</P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1020"
-></A
->6.8.2.4. Windows 9X Profile Setup</H4
-><P
->When a user first logs in on Windows 9X, the file user.DAT is created,
-as are folders "Start Menu", "Desktop", "Programs" and "Nethood".
-These directories and their contents will be merged with the local
-versions stored in c:\windows\profiles\username on subsequent logins,
-taking the most recent from each. You will need to use the [global]
-options "preserve case = yes", "short preserve case = yes" and
-"case sensitive = no" in order to maintain capital letters in shortcuts
-in any of the profile folders.</P
-><P
->The user.DAT file contains all the user's preferences. If you wish to
-enforce a set of preferences, rename their user.DAT file to user.MAN,
-and deny them write access to this file.</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> On the Windows 95 machine, go to Control Panel | Passwords and
- select the User Profiles tab. Select the required level of
- roaming preferences. Press OK, but do _not_ allow the computer
- to reboot.
- </P
-></LI
-><LI
-><P
-> On the Windows 95 machine, go to Control Panel | Network |
- Client for Microsoft Networks | Preferences. Select 'Log on to
- NT Domain'. Then, ensure that the Primary Logon is 'Client for
- Microsoft Networks'. Press OK, and this time allow the computer
- to reboot.
- </P
-></LI
-></OL
-><P
->Under Windows 95, Profiles are downloaded from the Primary Logon.
-If you have the Primary Logon as 'Client for Novell Networks', then
-the profiles and logon script will be downloaded from your Novell
-Server. If you have the Primary Logon as 'Windows Logon', then the
-profiles will be loaded from the local machine - a bit against the
-concept of roaming profiles, if you ask me.</P
-><P
->You will now find that the Microsoft Networks Login box contains
-[user, password, domain] instead of just [user, password]. Type in
-the samba server's domain name (or any other domain known to exist,
-but bear in mind that the user will be authenticated against this
-domain and profiles downloaded from it, if that domain logon server
-supports it), user name and user's password.</P
-><P
->Once the user has been successfully validated, the Windows 95 machine
-will inform you that 'The user has not logged on before' and asks you
-if you wish to save the user's preferences? Select 'yes'.</P
-><P
->Once the Windows 95 client comes up with the desktop, you should be able
-to examine the contents of the directory specified in the "logon path"
-on the samba server and verify that the "Desktop", "Start Menu",
-"Programs" and "Nethood" folders have been created.</P
-><P
->These folders will be cached locally on the client, and updated when
-the user logs off (if you haven't made them read-only by then :-).
-You will find that if the user creates further folders or short-cuts,
-that the client will merge the profile contents downloaded with the
-contents of the profile directory already on the local client, taking
-the newest folders and short-cuts from each set.</P
-><P
->If you have made the folders / files read-only on the samba server,
-then you will get errors from the w95 machine on logon and logout, as
-it attempts to merge the local and the remote profile. Basically, if
-you have any errors reported by the w95 machine, check the Unix file
-permissions and ownership rights on the profile directory contents,
-on the samba server.</P
-><P
->If you have problems creating user profiles, you can reset the user's
-local desktop cache, as shown below. When this user then next logs in,
-they will be told that they are logging in "for the first time".</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> instead of logging in under the [user, password, domain] dialog,
- press escape.
- </P
-></LI
-><LI
-><P
-> run the regedit.exe program, and look in:
- </P
-><P
-> HKEY_LOCAL_MACHINE\Windows\CurrentVersion\ProfileList
- </P
-><P
-> you will find an entry, for each user, of ProfilePath. Note the
- contents of this key (likely to be c:\windows\profiles\username),
- then delete the key ProfilePath for the required user.
- </P
-><P
-> [Exit the registry editor].
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->WARNING</I
-></SPAN
-> - before deleting the contents of the
- directory listed in
- the ProfilePath (this is likely to be c:\windows\profiles\username),
- ask them if they have any important files stored on their desktop
- or in their start menu. delete the contents of the directory
- ProfilePath (making a backup if any of the files are needed).
- </P
-><P
-> This will have the effect of removing the local (read-only hidden
- system file) user.DAT in their profile directory, as well as the
- local "desktop", "nethood", "start menu" and "programs" folders.
- </P
-></LI
-><LI
-><P
-> search for the user's .PWL password-caching file in the c:\windows
- directory, and delete it.
- </P
-></LI
-><LI
-><P
-> log off the windows 95 client.
- </P
-></LI
-><LI
-><P
-> check the contents of the profile path (see "logon path" described
- above), and delete the user.DAT or user.MAN file for the user,
- making a backup if required.
- </P
-></LI
-></OL
-><P
->If all else fails, increase samba's debug log levels to between 3 and 10,
-and / or run a packet trace program such as tcpdump or netmon.exe, and
-look for any error reports.</P
-><P
->If you have access to an NT server, then first set up roaming profiles
-and / or netlogons on the NT server. Make a packet trace, or examine
-the example packet traces provided with NT server, and see what the
-differences are with the equivalent samba trace.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1056"
-></A
->6.8.2.5. Windows NT Workstation 4.0</H4
-><P
->When a user first logs in to a Windows NT Workstation, the profile
-NTuser.DAT is created. The profile location can be now specified
-through the "logon path" parameter. </P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->[lkcl 10aug97 - i tried setting the path to
-\\samba-server\homes\profile, and discovered that this fails because
-a background process maintains the connection to the [homes] share
-which does _not_ close down in between user logins. you have to
-have \\samba-server\%L\profile, where user is the username created
-from the [homes] share].</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->There is a parameter that is now available for use with NT Profiles:
-"logon drive". This should be set to "h:" or any other drive, and
-should be used in conjunction with the new "logon home" parameter.</P
-><P
->The entry for the NT 4.0 profile is a _directory_ not a file. The NT
-help on profiles mentions that a directory is also created with a .PDS
-extension. The user, while logging in, must have write permission to
-create the full profile path (and the folder with the .PDS extension)
-[lkcl 10aug97 - i found that the creation of the .PDS directory failed,
-and had to create these manually for each user, with a shell script.
-also, i presume, but have not tested, that the full profile path must
-be browseable just as it is for w95, due to the manner in which they
-attempt to create the full profile path: test existence of each path
-component; create path component].</P
-><P
->In the profile directory, NT creates more folders than 95. It creates
-"Application Data" and others, as well as "Desktop", "Nethood",
-"Start Menu" and "Programs". The profile itself is stored in a file
-NTuser.DAT. Nothing appears to be stored in the .PDS directory, and
-its purpose is currently unknown.</P
-><P
->You can use the System Control Panel to copy a local profile onto
-a samba server (see NT Help on profiles: it is also capable of firing
-up the correct location in the System Control Panel for you). The
-NT Help file also mentions that renaming NTuser.DAT to NTuser.MAN
-turns a profile into a mandatory one.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->[lkcl 10aug97 - i notice that NT Workstation tells me that it is
-downloading a profile from a slow link. whether this is actually the
-case, or whether there is some configuration issue, as yet unknown,
-that makes NT Workstation _think_ that the link is a slow one is a
-matter to be resolved].</P
-><P
->[lkcl 20aug97 - after samba digest correspondence, one user found, and
-another confirmed, that profiles cannot be loaded from a samba server
-unless "security = user" and "encrypt passwords = yes" (see the file
-ENCRYPTION.txt) or "security = server" and "password server = ip.address.
-of.yourNTserver" are used. Either of these options will allow the NT
-workstation to access the samba server using LAN manager encrypted
-passwords, without the user intervention normally required by NT
-workstation for clear-text passwords].</P
-><P
->[lkcl 25aug97 - more comments received about NT profiles: the case of
-the profile _matters_. the file _must_ be called NTuser.DAT or, for
-a mandatory profile, NTuser.MAN].</P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1069"
-></A
->6.8.2.6. Windows NT Server</H4
-><P
->There is nothing to stop you specifying any path that you like for the
-location of users' profiles. Therefore, you could specify that the
-profile be stored on a samba server, or any other SMB server, as long as
-that SMB server supports encrypted passwords.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1072"
-></A
->6.8.2.7. Sharing Profiles between W95 and NT Workstation 4.0</H4
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->Potentially outdated or incorrect material follows</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->I think this is all bogus, but have not deleted it. (Richard Sharpe)</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->The default logon path is \\%N\%U. NT Workstation will attempt to create
-a directory "\\samba-server\username.PDS" if you specify the logon path
-as "\\samba-server\username" with the NT User Manager. Therefore, you
-will need to specify (for example) "\\samba-server\username\profile".
-NT 4.0 will attempt to create "\\samba-server\username\profile.PDS", which
-is more likely to succeed.</P
-><P
->If you then want to share the same Start Menu / Desktop with W95, you will
-need to specify "logon path = \\samba-server\username\profile" [lkcl 10aug97
-this has its drawbacks: i created a shortcut to telnet.exe, which attempts
-to run from the c:\winnt\system32 directory. this directory is obviously
-unlikely to exist on a Win95-only host].</P
-><P
->&#13;If you have this set up correctly, you will find separate user.DAT and
-NTuser.DAT files in the same profile directory.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->[lkcl 25aug97 - there are some issues to resolve with downloading of
-NT profiles, probably to do with time/date stamps. i have found that
-NTuser.DAT is never updated on the workstation after the first time that
-it is copied to the local workstation profile directory. this is in
-contrast to w95, where it _does_ transfer / update profiles correctly].</P
-></TD
-></TR
-></TABLE
-></DIV
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1082"
-></A
->6.9. DOMAIN_CONTROL.txt : Windows NT Domain Control &#38; Samba</H2
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->Possibly Outdated Material</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
-> This appendix was originally authored by John H Terpstra of
- the Samba Team and is included here for posterity.
- </P
-></TD
-></TR
-></TABLE
-></DIV
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE :</I
-></SPAN
->
-The term "Domain Controller" and those related to it refer to one specific
-method of authentication that can underly an SMB domain. Domain Controllers
-prior to Windows NT Server 3.1 were sold by various companies and based on
-private extensions to the LAN Manager 2.1 protocol. Windows NT introduced
-Microsoft-specific ways of distributing the user authentication database.
-See DOMAIN.txt for examples of how Samba can participate in or create
-SMB domains based on shared authentication database schemes other than the
-Windows NT SAM.</P
-><P
->Windows NT Server can be installed as either a plain file and print server
-(WORKGROUP workstation or server) or as a server that participates in Domain
-Control (DOMAIN member, Primary Domain controller or Backup Domain controller).
-The same is true for OS/2 Warp Server, Digital Pathworks and other similar
-products, all of which can participate in Domain Control along with Windows NT.</P
-><P
->To many people these terms can be confusing, so let's try to clear the air.</P
-><P
->Every Windows NT system (workstation or server) has a registry database.
-The registry contains entries that describe the initialization information
-for all services (the equivalent of Unix Daemons) that run within the Windows
-NT environment. The registry also contains entries that tell application
-software where to find dynamically loadable libraries that they depend upon.
-In fact, the registry contains entries that describes everything that anything
-may need to know to interact with the rest of the system.</P
-><P
->The registry files can be located on any Windows NT machine by opening a
-command prompt and typing:</P
-><P
-><TT
-CLASS="PROMPT"
->C:\WINNT\&#62;</TT
-> dir %SystemRoot%\System32\config</P
-><P
->The environment variable %SystemRoot% value can be obtained by typing:</P
-><P
-><TT
-CLASS="PROMPT"
->C:\WINNT&#62;</TT
->echo %SystemRoot%</P
-><P
->The active parts of the registry that you may want to be familiar with are
-the files called: default, system, software, sam and security.</P
-><P
->In a domain environment, Microsoft Windows NT domain controllers participate
-in replication of the SAM and SECURITY files so that all controllers within
-the domain have an exactly identical copy of each.</P
-><P
->The Microsoft Windows NT system is structured within a security model that
-says that all applications and services must authenticate themselves before
-they can obtain permission from the security manager to do what they set out
-to do.</P
-><P
->The Windows NT User database also resides within the registry. This part of
-the registry contains the user's security identifier, home directory, group
-memberships, desktop profile, and so on.</P
-><P
->Every Windows NT system (workstation as well as server) will have its own
-registry. Windows NT Servers that participate in Domain Security control
-have a database that they share in common - thus they do NOT own an
-independent full registry database of their own, as do Workstations and
-plain Servers.</P
-><P
->The User database is called the SAM (Security Access Manager) database and
-is used for all user authentication as well as for authentication of inter-
-process authentication (i.e. to ensure that the service action a user has
-requested is permitted within the limits of that user's privileges).</P
-><P
->The Samba team have produced a utility that can dump the Windows NT SAM into
-smbpasswd format: see ENCRYPTION.txt for information on smbpasswd and
-/pub/samba/pwdump on your nearest Samba mirror for the utility. This
-facility is useful but cannot be easily used to implement SAM replication
-to Samba systems.</P
-><P
->Windows for Workgroups, Windows 95, and Windows NT Workstations and Servers
-can participate in a Domain security system that is controlled by Windows NT
-servers that have been correctly configured. Almost every domain will have
-ONE Primary Domain Controller (PDC). It is desirable that each domain will
-have at least one Backup Domain Controller (BDC).</P
-><P
->The PDC and BDCs then participate in replication of the SAM database so that
-each Domain Controlling participant will have an up to date SAM component
-within its registry.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="SAMBA-BDC"
-></A
->Chapter 7. How to Act as a Backup Domain Controller in a Purely Samba Controlled Domain</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1118"
-></A
->7.1. Prerequisite Reading</H2
-><P
->Before you continue reading in this chapter, please make sure
-that you are comfortable with configuring a Samba PDC
-as described in the <A
-HREF="Samba-PDC-HOWTO.html"
-TARGET="_top"
->Samba-PDC-HOWTO</A
->.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1122"
-></A
->7.2. Background</H2
-><P
->What is a Domain Controller? It is a machine that is able to answer
-logon requests from workstations in a Windows NT Domain. Whenever a
-user logs into a Windows NT Workstation, the workstation connects to a
-Domain Controller and asks him whether the username and password the
-user typed in is correct. The Domain Controller replies with a lot of
-information about the user, for example the place where the users
-profile is stored, the users full name of the user. All this
-information is stored in the NT user database, the so-called SAM.</P
-><P
->There are two kinds of Domain Controller in a NT 4 compatible Domain:
-A Primary Domain Controller (PDC) and one or more Backup Domain
-Controllers (BDC). The PDC contains the master copy of the
-SAM. Whenever the SAM has to change, for example when a user changes
-his password, this change has to be done on the PDC. A Backup Domain
-Controller is a machine that maintains a read-only copy of the
-SAM. This way it is able to reply to logon requests and authenticate
-users in case the PDC is not available. During this time no changes to
-the SAM are possible. Whenever changes to the SAM are done on the PDC,
-all BDC receive the changes from the PDC.</P
-><P
->Since version 2.2 Samba officially supports domain logons for all
-current Windows Clients, including Windows 2000 and XP. This text
-assumes the domain to be named SAMBA. To be able to act as a PDC, some
-parameters in the [global]-section of the smb.conf have to be set:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->workgroup = SAMBA
-domain master = yes
-domain logons = yes</PRE
-></P
-><P
->Several other things like a [homes] and a [netlogon] share also may be
-set along with settings for the profile path, the users home drive and
-others. This will not be covered in this document.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1130"
-></A
->7.3. What qualifies a Domain Controller on the network?</H2
-><P
->Every machine that is a Domain Controller for the domain SAMBA has to
-register the NetBIOS group name SAMBA#1c with the WINS server and/or
-by broadcast on the local network. The PDC also registers the unique
-NetBIOS name SAMBA#1b with the WINS server. The name type #1b is
-normally reserved for the domain master browser, a role that has
-nothing to do with anything related to authentication, but the
-Microsoft Domain implementation requires the domain master browser to
-be on the same machine as the PDC.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1133"
-></A
->7.3.1. How does a Workstation find its domain controller?</H3
-><P
->A NT workstation in the domain SAMBA that wants a local user to be
-authenticated has to find the domain controller for SAMBA. It does
-this by doing a NetBIOS name query for the group name SAMBA#1c. It
-assumes that each of the machines it gets back from the queries is a
-domain controller and can answer logon requests. To not open security
-holes both the workstation and the selected (TODO: How is the DC
-chosen) domain controller authenticate each other. After that the
-workstation sends the user's credentials (his name and password) to
-the domain controller, asking for approval.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1136"
-></A
->7.3.2. When is the PDC needed?</H3
-><P
->Whenever a user wants to change his password, this has to be done on
-the PDC. To find the PDC, the workstation does a NetBIOS name query
-for SAMBA#1b, assuming this machine maintains the master copy of the
-SAM. The workstation contacts the PDC, both mutually authenticate and
-the password change is done.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1139"
-></A
->7.4. Can Samba be a Backup Domain Controller?</H2
-><P
->With version 2.2, no. The native NT SAM replication protocols have
-not yet been fully implemented. The Samba Team is working on
-understanding and implementing the protocols, but this work has not
-been finished for version 2.2.</P
-><P
->Can I get the benefits of a BDC with Samba? Yes. The main reason for
-implementing a BDC is availability. If the PDC is a Samba machine,
-a second Samba machine can be set up to
-service logon requests whenever the PDC is down.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1143"
-></A
->7.5. How do I set up a Samba BDC?</H2
-><P
->Several things have to be done:</P
-><P
-></P
-><UL
-><LI
-><P
->The domain SID has to be the same on the PDC and the BDC. This used to
-be stored in the file private/MACHINE.SID. This file is not created
-anymore since Samba 2.2.5 or even earlier. Nowadays the domain SID is
-stored in the file private/secrets.tdb. Simply copying the secrets.tdb
-from the PDC to the BDC does not work, as the BDC would
-generate a new SID for itself and override the domain SID with this
-new BDC SID.</P
-><P
->To retrieve the domain SID from the PDC or an existing BDC and store it in the
-secrets.tdb, execute 'net rpc getsid' on the BDC.</P
-></LI
-><LI
-><P
->The Unix user database has to be synchronized from the PDC to the
-BDC. This means that both the /etc/passwd and /etc/group have to be
-replicated from the PDC to the BDC. This can be done manually
-whenever changes are made, or the PDC is set up as a NIS master
-server and the BDC as a NIS slave server. To set up the BDC as a
-mere NIS client would not be enough, as the BDC would not be able to
-access its user database in case of a PDC failure.</P
-></LI
-><LI
-><P
->The Samba password database in the file private/smbpasswd has to be
-replicated from the PDC to the BDC. This is a bit tricky, see the
-next section.</P
-></LI
-><LI
-><P
->Any netlogon share has to be replicated from the PDC to the
-BDC. This can be done manually whenever login scripts are changed,
-or it can be done automatically together with the smbpasswd
-synchronization.</P
-></LI
-></UL
-><P
->Finally, the BDC has to be found by the workstations. This can be done
-by setting</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->workgroup = samba
-domain master = no
-domain logons = yes</PRE
-></P
-><P
->in the [global]-section of the smb.conf of the BDC. This makes the BDC
-only register the name SAMBA#1c with the WINS server. This is no
-problem as the name SAMBA#1c is a NetBIOS group name that is meant to
-be registered by more than one machine. The parameter 'domain master =
-no' forces the BDC not to register SAMBA#1b which as a unique NetBIOS
-name is reserved for the Primary Domain Controller.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1160"
-></A
->7.5.1. How do I replicate the smbpasswd file?</H3
-><P
->Replication of the smbpasswd file is sensitive. It has to be done
-whenever changes to the SAM are made. Every user's password change is
-done in the smbpasswd file and has to be replicated to the BDC. So
-replicating the smbpasswd file very often is necessary.</P
-><P
->As the smbpasswd file contains plain text password equivalents, it
-must not be sent unencrypted over the wire. The best way to set up
-smbpasswd replication from the PDC to the BDC is to use the utility
-rsync. rsync can use ssh as a transport. ssh itself can be set up to
-accept *only* rsync transfer without requiring the user to type a
-password.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="ADS"
-></A
->Chapter 8. Samba as a ADS domain member</H1
-><P
->This is a VERY ROUGH guide to setting up the current (November 2001)
-pre-alpha version of Samba 3.0 with kerberos authentication against a
-Windows2000 KDC. The procedures listed here are likely to change as
-the code develops.</P
-><P
->Pieces you need before you begin:
-<P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->a Windows 2000 server.</TD
-></TR
-><TR
-><TD
->samba 3.0 or higher.</TD
-></TR
-><TR
-><TD
->the MIT kerberos development libraries (either install from the above sources or use a package). The heimdal libraries will not work.</TD
-></TR
-><TR
-><TD
->the OpenLDAP development libraries.</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></P
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1178"
-></A
->8.1. Installing the required packages for Debian</H2
-><P
->On Debian you need to install the following packages:
-<P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->libkrb5-dev</TD
-></TR
-><TR
-><TD
->krb5-user</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1184"
-></A
->8.2. Installing the required packages for RedHat</H2
-><P
->On RedHat this means you should have at least:
-<P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->krb5-workstation (for kinit)</TD
-></TR
-><TR
-><TD
->krb5-libs (for linking with)</TD
-></TR
-><TR
-><TD
->krb5-devel (because you are compiling from source)</TD
-></TR
-></TBODY
-></TABLE
-><P
-></P
-></P
-><P
->in addition to the standard development environment.</P
-><P
->Note that these are not standard on a RedHat install, and you may need
-to get them off CD2.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1193"
-></A
->8.3. Compile Samba</H2
-><P
->If your kerberos libraries are in a non-standard location then
- remember to add the configure option --with-krb5=DIR.</P
-><P
->After you run configure make sure that include/config.h contains
- lines like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#define HAVE_KRB5 1
-#define HAVE_LDAP 1</PRE
-></P
-><P
->If it doesn't then configure did not find your krb5 libraries or
- your ldap libraries. Look in config.log to figure out why and fix
- it.</P
-><P
->Then compile and install Samba as usual. You must use at least the
- following 3 options in smb.conf:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> realm = YOUR.KERBEROS.REALM
- ads server = your.kerberos.server
- security = ADS
- encrypt passwords = yes</PRE
-></P
-><P
->Strictly speaking, you can omit the realm name and you can use an IP
- address for the ads server. In that case Samba will auto-detect these.</P
-><P
->You do *not* need a smbpasswd file, although it won't do any harm
- and if you have one then Samba will be able to fall back to normal
- password security for older clients. I expect that the above
- required options will change soon when we get better active
- directory integration.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1205"
-></A
->8.4. Setup your /etc/krb5.conf</H2
-><P
->The minimal configuration for krb5.conf is:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> [realms]
- YOUR.KERBEROS.REALM = {
- kdc = your.kerberos.server
- }</PRE
-></P
-><P
->Test your config by doing a "kinit USERNAME@REALM" and making sure that
- your password is accepted by the Win2000 KDC. </P
-><P
->NOTE: The realm must be uppercase. </P
-><P
->You also must ensure that you can do a reverse DNS lookup on the IP
-address of your KDC. Also, the name that this reverse lookup maps to
-must either be the netbios name of the KDC (ie. the hostname with no
-domain attached) or it can alternatively be the netbios name
-followed by the realm. </P
-><P
->The easiest way to ensure you get this right is to add a /etc/hosts
-entry mapping the IP address of your KDC to its netbios name. If you
-don't get this right then you will get a "local error" when you try
-to join the realm.</P
-><P
->If all you want is kerberos support in smbclient then you can skip
-straight to step 5 now. Step 3 is only needed if you want kerberos
-support in smbd.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1215"
-></A
->8.5. Create the computer account</H2
-><P
->Do a "kinit" as a user that has authority to change arbitrary
-passwords on the KDC ("Administrator" is a good choice). Then as a
-user that has write permission on the Samba private directory
-(usually root) run:
-<B
-CLASS="COMMAND"
->net ads join</B
-></P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1219"
-></A
->8.5.1. Possible errors</H3
-><P
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->"bash: kinit: command not found"</DT
-><DD
-><P
->kinit is in the krb5-workstation RPM on RedHat systems, and is in /usr/kerberos/bin, so it won't be in the path until you log in again (or open a new terminal)</P
-></DD
-><DT
->"ADS support not compiled in"</DT
-><DD
-><P
->Samba must be reconfigured (remove config.cache) and recompiled (make clean all install) after the kerberos libs and headers are installed.</P
-></DD
-></DL
-></DIV
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1231"
-></A
->8.6. Test your server setup</H2
-><P
->On a Windows 2000 client try <B
-CLASS="COMMAND"
->net use * \\server\share</B
->. You should
-be logged in with kerberos without needing to know a password. If
-this fails then run <B
-CLASS="COMMAND"
->klist tickets</B
->. Did you get a ticket for the
-server? Does it have an encoding type of DES-CBC-MD5 ? </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1236"
-></A
->8.7. Testing with smbclient</H2
-><P
->On your Samba server try to login to a Win2000 server or your Samba
-server using smbclient and kerberos. Use smbclient as usual, but
-specify the -k option to choose kerberos authentication.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1239"
-></A
->8.8. Notes</H2
-><P
->You must change administrator password at least once after DC install,
- to create the right encoding types</P
-><P
->w2k doesn't seem to create the _kerberos._udp and _ldap._tcp in
- their defaults DNS setup. Maybe fixed in service packs?</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="DOMAIN-SECURITY"
-></A
->Chapter 9. Samba as a NT4 domain member</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1261"
-></A
->9.1. Joining an NT Domain with Samba 2.2</H2
-><P
->Assume you have a Samba 2.x server with a NetBIOS name of
- <TT
-CLASS="CONSTANT"
->SERV1</TT
-> and are joining an NT domain called
- <TT
-CLASS="CONSTANT"
->DOM</TT
->, which has a PDC with a NetBIOS name
- of <TT
-CLASS="CONSTANT"
->DOMPDC</TT
-> and two backup domain controllers
- with NetBIOS names <TT
-CLASS="CONSTANT"
->DOMBDC1</TT
-> and <TT
-CLASS="CONSTANT"
->DOMBDC2
- </TT
->.</P
-><P
->In order to join the domain, first stop all Samba daemons
- and run the command:</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->smbpasswd -j DOM -r DOMPDC
- -U<TT
-CLASS="REPLACEABLE"
-><I
->Administrator%password</I
-></TT
-></B
-></TT
-></P
-><P
->as we are joining the domain DOM and the PDC for that domain
- (the only machine that has write access to the domain SAM database)
- is DOMPDC. The <TT
-CLASS="REPLACEABLE"
-><I
->Administrator%password</I
-></TT
-> is
- the login name and password for an account which has the necessary
- privilege to add machines to the domain. If this is successful
- you will see the message:</P
-><P
-><TT
-CLASS="COMPUTEROUTPUT"
->smbpasswd: Joined domain DOM.</TT
->
- </P
-><P
->in your terminal window. See the <A
-HREF="smbpasswd.8.html"
-TARGET="_top"
-> smbpasswd(8)</A
-> man page for more details.</P
-><P
->There is existing development code to join a domain
- without having to create the machine trust account on the PDC
- beforehand. This code will hopefully be available soon
- in release branches as well.</P
-><P
->This command goes through the machine account password
- change protocol, then writes the new (random) machine account
- password for this Samba server into a file in the same directory
- in which an smbpasswd file would be stored - normally :</P
-><P
-><TT
-CLASS="FILENAME"
->/usr/local/samba/private</TT
-></P
-><P
->In Samba 2.0.x, the filename looks like this:</P
-><P
-><TT
-CLASS="FILENAME"
-><TT
-CLASS="REPLACEABLE"
-><I
->&lt;NT DOMAIN NAME&gt;</I
-></TT
->.<TT
-CLASS="REPLACEABLE"
-><I
->&lt;Samba
- Server Name&gt;</I
-></TT
->.mac</TT
-></P
-><P
->The <TT
-CLASS="FILENAME"
->.mac</TT
-> suffix stands for machine account
- password file. So in our example above, the file would be called:</P
-><P
-><TT
-CLASS="FILENAME"
->DOM.SERV1.mac</TT
-></P
-><P
->In Samba 2.2, this file has been replaced with a TDB
- (Trivial Database) file named <TT
-CLASS="FILENAME"
->secrets.tdb</TT
->.
- </P
-><P
->This file is created and owned by root and is not
- readable by any other user. It is the key to the domain-level
- security for your system, and should be treated as carefully
- as a shadow password file.</P
-><P
->Now, before restarting the Samba daemons you must
- edit your <A
-HREF="smb.conf.5.html"
-TARGET="_top"
-><TT
-CLASS="FILENAME"
->smb.conf(5)</TT
->
- </A
-> file to tell Samba it should now use domain security.</P
-><P
->Change (or add) your <A
-HREF="smb.conf.5.html#SECURITY"
-TARGET="_top"
-> <TT
-CLASS="PARAMETER"
-><I
->security =</I
-></TT
-></A
-> line in the [global] section
- of your smb.conf to read:</P
-><P
-><B
-CLASS="COMMAND"
->security = domain</B
-></P
-><P
->Next change the <A
-HREF="smb.conf.5.html#WORKGROUP"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
-> workgroup =</I
-></TT
-></A
-> line in the [global] section to read: </P
-><P
-><B
-CLASS="COMMAND"
->workgroup = DOM</B
-></P
-><P
->as this is the name of the domain we are joining. </P
-><P
->You must also have the parameter <A
-HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
-TARGET="_top"
-> <TT
-CLASS="PARAMETER"
-><I
->encrypt passwords</I
-></TT
-></A
-> set to <TT
-CLASS="CONSTANT"
->yes
- </TT
-> in order for your users to authenticate to the NT PDC.</P
-><P
->Finally, add (or modify) a <A
-HREF="smb.conf.5.html#PASSWORDSERVER"
-TARGET="_top"
-> <TT
-CLASS="PARAMETER"
-><I
->password server =</I
-></TT
-></A
-> line in the [global]
- section to read: </P
-><P
-><B
-CLASS="COMMAND"
->password server = DOMPDC DOMBDC1 DOMBDC2</B
-></P
-><P
->These are the primary and backup domain controllers Samba
- will attempt to contact in order to authenticate users. Samba will
- try to contact each of these servers in order, so you may want to
- rearrange this list in order to spread out the authentication load
- among domain controllers.</P
-><P
->Alternatively, if you want smbd to automatically determine
- the list of Domain controllers to use for authentication, you may
- set this line to be :</P
-><P
-><B
-CLASS="COMMAND"
->password server = *</B
-></P
-><P
->This method, which was introduced in Samba 2.0.6,
- allows Samba to use exactly the same mechanism that NT does. This
- method either broadcasts or uses a WINS database in order to
- find domain controllers to authenticate against.</P
-><P
->Finally, restart your Samba daemons and get ready for
- clients to begin using domain security!</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1325"
-></A
->9.2. Samba and Windows 2000 Domains</H2
-><P
->Many people have asked regarding the state of Samba's ability to participate in
-a Windows 2000 Domain. Samba 3.0 is able to act as a member server of a Windows
-2000 domain operating in mixed or native mode.</P
-><P
->There is much confusion between the circumstances that require a "mixed" mode
-Win2k DC and a when this host can be switched to "native" mode. A "mixed" mode
-Win2k domain controller is only needed if Windows NT BDCs must exist in the same
-domain. By default, a Win2k DC in "native" mode will still support
-NetBIOS and NTLMv1 for authentication of legacy clients such as Windows 9x and
-NT 4.0. Samba has the same requirements as a Windows NT 4.0 member server.</P
-><P
->The steps for adding a Samba 2.2 host to a Win2k domain are the same as those
-for adding a Samba server to a Windows NT 4.0 domain. The only exception is that
-the "Server Manager" from NT 4 has been replaced by the "Active Directory Users and
-Computers" MMC (Microsoft Management Console) plugin.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1330"
-></A
->9.3. Why is this better than security = server?</H2
-><P
->Currently, domain security in Samba doesn't free you from
- having to create local Unix users to represent the users attaching
- to your server. This means that if domain user <TT
-CLASS="CONSTANT"
->DOM\fred
- </TT
-> attaches to your domain security Samba server, there needs
- to be a local Unix user fred to represent that user in the Unix
- filesystem. This is very similar to the older Samba security mode
- <A
-HREF="smb.conf.5.html#SECURITYEQUALSSERVER"
-TARGET="_top"
->security = server</A
->,
- where Samba would pass through the authentication request to a Windows
- NT server in the same way as a Windows 95 or Windows 98 server would.
- </P
-><P
->Please refer to the <A
-HREF="winbind.html"
-TARGET="_top"
->Winbind
- paper</A
-> for information on a system to automatically
- assign UNIX uids and gids to Windows NT Domain users and groups.
- This code is available in development branches only at the moment,
- but will be moved to release branches soon.</P
-><P
->The advantage to domain-level security is that the
- authentication in domain-level security is passed down the authenticated
- RPC channel in exactly the same way that an NT server would do it. This
- means Samba servers now participate in domain trust relationships in
- exactly the same way NT servers do (i.e., you can add Samba servers into
- a resource domain and have the authentication passed on from a resource
- domain PDC to an account domain PDC.</P
-><P
->In addition, with <B
-CLASS="COMMAND"
->security = server</B
-> every Samba
- daemon on a server has to keep a connection open to the
- authenticating server for as long as that daemon lasts. This can drain
- the connection resources on a Microsoft NT server and cause it to run
- out of available connections. With <B
-CLASS="COMMAND"
->security = domain</B
->,
- however, the Samba daemons connect to the PDC/BDC only for as long
- as is necessary to authenticate the user, and then drop the connection,
- thus conserving PDC connection resources.</P
-><P
->And finally, acting in the same manner as an NT server
- authenticating to a PDC means that as part of the authentication
- reply, the Samba server gets the user identification information such
- as the user SID, the list of NT groups the user belongs to, etc. All
- this information will allow Samba to be extended in the future into
- a mode the developers currently call appliance mode. In this mode,
- no local Unix users will be necessary, and Samba will generate Unix
- uids and gids from the information passed back from the PDC when a
- user is authenticated, making a Samba server truly plug and play
- in an NT domain environment. Watch for this code soon.</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE:</I
-></SPAN
-> Much of the text of this document
- was first published in the Web magazine <A
-HREF="http://www.linuxworld.com"
-TARGET="_top"
->
- LinuxWorld</A
-> as the article <A
-HREF="http://www.linuxworld.com/linuxworld/lw-1998-10/lw-10-samba.html"
-TARGET="_top"
->Doing
- the NIS/NT Samba</A
->.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="PART"
-><A
-NAME="AEN1346"
-></A
-><DIV
-CLASS="TITLEPAGE"
-><H1
-CLASS="TITLE"
->III. Optional configuration</H1
-><DIV
-CLASS="PARTINTRO"
-><A
-NAME="AEN1348"
-></A
-><H1
->Introduction</H1
-><P
->Samba has several features that you might want or might not want to use. The chapters in this
-part each cover one specific feature.</P
-></DIV
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->10. <A
-HREF="#INTEGRATE-MS-NETWORKS"
->Integrating MS Windows networks with Samba</A
-></DT
-><DD
-><DL
-><DT
->10.1. <A
-HREF="#AEN1362"
->Agenda</A
-></DT
-><DT
->10.2. <A
-HREF="#AEN1384"
->Name Resolution in a pure Unix/Linux world</A
-></DT
-><DD
-><DL
-><DT
->10.2.1. <A
-HREF="#AEN1400"
-><TT
-CLASS="FILENAME"
->/etc/hosts</TT
-></A
-></DT
-><DT
->10.2.2. <A
-HREF="#AEN1416"
-><TT
-CLASS="FILENAME"
->/etc/resolv.conf</TT
-></A
-></DT
-><DT
->10.2.3. <A
-HREF="#AEN1427"
-><TT
-CLASS="FILENAME"
->/etc/host.conf</TT
-></A
-></DT
-><DT
->10.2.4. <A
-HREF="#AEN1435"
-><TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-></A
-></DT
-></DL
-></DD
-><DT
->10.3. <A
-HREF="#AEN1447"
->Name resolution as used within MS Windows networking</A
-></DT
-><DD
-><DL
-><DT
->10.3.1. <A
-HREF="#AEN1459"
->The NetBIOS Name Cache</A
-></DT
-><DT
->10.3.2. <A
-HREF="#AEN1464"
->The LMHOSTS file</A
-></DT
-><DT
->10.3.3. <A
-HREF="#AEN1472"
->HOSTS file</A
-></DT
-><DT
->10.3.4. <A
-HREF="#AEN1477"
->DNS Lookup</A
-></DT
-><DT
->10.3.5. <A
-HREF="#AEN1480"
->WINS Lookup</A
-></DT
-></DL
-></DD
-><DT
->10.4. <A
-HREF="#AEN1492"
->How browsing functions and how to deploy stable and
-dependable browsing using Samba</A
-></DT
-><DT
->10.5. <A
-HREF="#AEN1502"
->MS Windows security options and how to configure
-Samba for seemless integration</A
-></DT
-><DD
-><DL
-><DT
->10.5.1. <A
-HREF="#AEN1530"
->Use MS Windows NT as an authentication server</A
-></DT
-><DT
->10.5.2. <A
-HREF="#AEN1538"
->Make Samba a member of an MS Windows NT security domain</A
-></DT
-><DT
->10.5.3. <A
-HREF="#AEN1555"
->Configure Samba as an authentication server</A
-></DT
-></DL
-></DD
-><DT
->10.6. <A
-HREF="#AEN1572"
->Conclusions</A
-></DT
-></DL
-></DD
-><DT
->11. <A
-HREF="#UNIX-PERMISSIONS"
->UNIX Permission Bits and Windows NT Access Control Lists</A
-></DT
-><DD
-><DL
-><DT
->11.1. <A
-HREF="#AEN1593"
->Viewing and changing UNIX permissions using the NT
- security dialogs</A
-></DT
-><DT
->11.2. <A
-HREF="#AEN1602"
->How to view file security on a Samba share</A
-></DT
-><DT
->11.3. <A
-HREF="#AEN1613"
->Viewing file ownership</A
-></DT
-><DT
->11.4. <A
-HREF="#AEN1633"
->Viewing file or directory permissions</A
-></DT
-><DD
-><DL
-><DT
->11.4.1. <A
-HREF="#AEN1648"
->File Permissions</A
-></DT
-><DT
->11.4.2. <A
-HREF="#AEN1662"
->Directory Permissions</A
-></DT
-></DL
-></DD
-><DT
->11.5. <A
-HREF="#AEN1669"
->Modifying file or directory permissions</A
-></DT
-><DT
->11.6. <A
-HREF="#AEN1691"
->Interaction with the standard Samba create mask
- parameters</A
-></DT
-><DT
->11.7. <A
-HREF="#AEN1755"
->Interaction with the standard Samba file attribute
- mapping</A
-></DT
-></DL
-></DD
-><DT
->12. <A
-HREF="#PAM"
->Configuring PAM for distributed but centrally
-managed authentication</A
-></DT
-><DD
-><DL
-><DT
->12.1. <A
-HREF="#AEN1776"
->Samba and PAM</A
-></DT
-><DT
->12.2. <A
-HREF="#AEN1820"
->Distributed Authentication</A
-></DT
-><DT
->12.3. <A
-HREF="#AEN1827"
->PAM Configuration in smb.conf</A
-></DT
-></DL
-></DD
-><DT
->13. <A
-HREF="#MSDFS"
->Hosting a Microsoft Distributed File System tree on Samba</A
-></DT
-><DD
-><DL
-><DT
->13.1. <A
-HREF="#AEN1847"
->Instructions</A
-></DT
-><DD
-><DL
-><DT
->13.1.1. <A
-HREF="#AEN1882"
->Notes</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->14. <A
-HREF="#PRINTING"
->Printing Support</A
-></DT
-><DD
-><DL
-><DT
->14.1. <A
-HREF="#AEN1908"
->Introduction</A
-></DT
-><DT
->14.2. <A
-HREF="#AEN1930"
->Configuration</A
-></DT
-><DD
-><DL
-><DT
->14.2.1. <A
-HREF="#AEN1938"
->Creating [print$]</A
-></DT
-><DT
->14.2.2. <A
-HREF="#AEN1973"
->Setting Drivers for Existing Printers</A
-></DT
-><DT
->14.2.3. <A
-HREF="#AEN1989"
->Support a large number of printers</A
-></DT
-><DT
->14.2.4. <A
-HREF="#AEN2000"
->Adding New Printers via the Windows NT APW</A
-></DT
-><DT
->14.2.5. <A
-HREF="#AEN2030"
->Samba and Printer Ports</A
-></DT
-></DL
-></DD
-><DT
->14.3. <A
-HREF="#AEN2038"
->The Imprints Toolset</A
-></DT
-><DD
-><DL
-><DT
->14.3.1. <A
-HREF="#AEN2042"
->What is Imprints?</A
-></DT
-><DT
->14.3.2. <A
-HREF="#AEN2052"
->Creating Printer Driver Packages</A
-></DT
-><DT
->14.3.3. <A
-HREF="#AEN2055"
->The Imprints server</A
-></DT
-><DT
->14.3.4. <A
-HREF="#AEN2059"
->The Installation Client</A
-></DT
-></DL
-></DD
-><DT
->14.4. <A
-HREF="#AEN2081"
->Diagnosis</A
-></DT
-><DD
-><DL
-><DT
->14.4.1. <A
-HREF="#AEN2083"
->Introduction</A
-></DT
-><DT
->14.4.2. <A
-HREF="#AEN2099"
->Debugging printer problems</A
-></DT
-><DT
->14.4.3. <A
-HREF="#AEN2108"
->What printers do I have?</A
-></DT
-><DT
->14.4.4. <A
-HREF="#AEN2116"
->Setting up printcap and print servers</A
-></DT
-><DT
->14.4.5. <A
-HREF="#AEN2144"
->Job sent, no output</A
-></DT
-><DT
->14.4.6. <A
-HREF="#AEN2155"
->Job sent, strange output</A
-></DT
-><DT
->14.4.7. <A
-HREF="#AEN2167"
->Raw PostScript printed</A
-></DT
-><DT
->14.4.8. <A
-HREF="#AEN2170"
->Advanced Printing</A
-></DT
-><DT
->14.4.9. <A
-HREF="#AEN2173"
->Real debugging</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->15. <A
-HREF="#SECURITYLEVELS"
->Security levels</A
-></DT
-><DD
-><DL
-><DT
->15.1. <A
-HREF="#AEN2186"
->Introduction</A
-></DT
-><DT
->15.2. <A
-HREF="#AEN2197"
->More complete description of security levels</A
-></DT
-></DL
-></DD
-><DT
->16. <A
-HREF="#WINBIND"
->Unified Logons between Windows NT and UNIX using Winbind</A
-></DT
-><DD
-><DL
-><DT
->16.1. <A
-HREF="#AEN2249"
->Abstract</A
-></DT
-><DT
->16.2. <A
-HREF="#AEN2253"
->Introduction</A
-></DT
-><DT
->16.3. <A
-HREF="#AEN2266"
->What Winbind Provides</A
-></DT
-><DD
-><DL
-><DT
->16.3.1. <A
-HREF="#AEN2273"
->Target Uses</A
-></DT
-></DL
-></DD
-><DT
->16.4. <A
-HREF="#AEN2277"
->How Winbind Works</A
-></DT
-><DD
-><DL
-><DT
->16.4.1. <A
-HREF="#AEN2282"
->Microsoft Remote Procedure Calls</A
-></DT
-><DT
->16.4.2. <A
-HREF="#AEN2286"
->Name Service Switch</A
-></DT
-><DT
->16.4.3. <A
-HREF="#AEN2302"
->Pluggable Authentication Modules</A
-></DT
-><DT
->16.4.4. <A
-HREF="#AEN2310"
->User and Group ID Allocation</A
-></DT
-><DT
->16.4.5. <A
-HREF="#AEN2314"
->Result Caching</A
-></DT
-></DL
-></DD
-><DT
->16.5. <A
-HREF="#AEN2317"
->Installation and Configuration</A
-></DT
-><DD
-><DL
-><DT
->16.5.1. <A
-HREF="#AEN2324"
->Introduction</A
-></DT
-><DT
->16.5.2. <A
-HREF="#AEN2337"
->Requirements</A
-></DT
-><DT
->16.5.3. <A
-HREF="#AEN2351"
->Testing Things Out</A
-></DT
-></DL
-></DD
-><DT
->16.6. <A
-HREF="#AEN2566"
->Limitations</A
-></DT
-><DT
->16.7. <A
-HREF="#AEN2576"
->Conclusion</A
-></DT
-></DL
-></DD
-><DT
->17. <A
-HREF="#PDB-MYSQL"
->Passdb MySQL plugin</A
-></DT
-><DD
-><DL
-><DT
->17.1. <A
-HREF="#AEN2590"
->Building</A
-></DT
-><DT
->17.2. <A
-HREF="#AEN2596"
->Configuring</A
-></DT
-><DT
->17.3. <A
-HREF="#AEN2611"
->Using plaintext passwords or encrypted password</A
-></DT
-><DT
->17.4. <A
-HREF="#AEN2616"
->Getting non-column data from the table</A
-></DT
-></DL
-></DD
-><DT
->18. <A
-HREF="#PDB-XML"
->Passdb XML plugin</A
-></DT
-><DD
-><DL
-><DT
->18.1. <A
-HREF="#AEN2635"
->Building</A
-></DT
-><DT
->18.2. <A
-HREF="#AEN2641"
->Usage</A
-></DT
-></DL
-></DD
-><DT
->19. <A
-HREF="#SAMBA-LDAP-HOWTO"
->Storing Samba's User/Machine Account information in an LDAP Directory</A
-></DT
-><DD
-><DL
-><DT
->19.1. <A
-HREF="#AEN2664"
->Purpose</A
-></DT
-><DT
->19.2. <A
-HREF="#AEN2684"
->Introduction</A
-></DT
-><DT
->19.3. <A
-HREF="#AEN2713"
->Supported LDAP Servers</A
-></DT
-><DT
->19.4. <A
-HREF="#AEN2718"
->Schema and Relationship to the RFC 2307 posixAccount</A
-></DT
-><DT
->19.5. <A
-HREF="#AEN2730"
->Configuring Samba with LDAP</A
-></DT
-><DD
-><DL
-><DT
->19.5.1. <A
-HREF="#AEN2732"
->OpenLDAP configuration</A
-></DT
-><DT
->19.5.2. <A
-HREF="#AEN2749"
->Configuring Samba</A
-></DT
-></DL
-></DD
-><DT
->19.6. <A
-HREF="#AEN2777"
->Accounts and Groups management</A
-></DT
-><DT
->19.7. <A
-HREF="#AEN2782"
->Security and sambaAccount</A
-></DT
-><DT
->19.8. <A
-HREF="#AEN2802"
->LDAP specials attributes for sambaAccounts</A
-></DT
-><DT
->19.9. <A
-HREF="#AEN2872"
->Example LDIF Entries for a sambaAccount</A
-></DT
-><DT
->19.10. <A
-HREF="#AEN2880"
->Comments</A
-></DT
-></DL
-></DD
-><DT
->20. <A
-HREF="#CVS-ACCESS"
->HOWTO Access Samba source code via CVS</A
-></DT
-><DD
-><DL
-><DT
->20.1. <A
-HREF="#AEN2891"
->Introduction</A
-></DT
-><DT
->20.2. <A
-HREF="#AEN2896"
->CVS Access to samba.org</A
-></DT
-><DD
-><DL
-><DT
->20.2.1. <A
-HREF="#AEN2899"
->Access via CVSweb</A
-></DT
-><DT
->20.2.2. <A
-HREF="#AEN2904"
->Access via cvs</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->21. <A
-HREF="#GROUPMAPPING"
->Group mapping HOWTO</A
-></DT
-><DT
->22. <A
-HREF="#SPEED"
->Samba performance issues</A
-></DT
-><DD
-><DL
-><DT
->22.1. <A
-HREF="#AEN2982"
->Comparisons</A
-></DT
-><DT
->22.2. <A
-HREF="#AEN2988"
->Oplocks</A
-></DT
-><DD
-><DL
-><DT
->22.2.1. <A
-HREF="#AEN2990"
->Overview</A
-></DT
-><DT
->22.2.2. <A
-HREF="#AEN2998"
->Level2 Oplocks</A
-></DT
-><DT
->22.2.3. <A
-HREF="#AEN3004"
->Old 'fake oplocks' option - deprecated</A
-></DT
-></DL
-></DD
-><DT
->22.3. <A
-HREF="#AEN3008"
->Socket options</A
-></DT
-><DT
->22.4. <A
-HREF="#AEN3015"
->Read size</A
-></DT
-><DT
->22.5. <A
-HREF="#AEN3020"
->Max xmit</A
-></DT
-><DT
->22.6. <A
-HREF="#AEN3025"
->Locking</A
-></DT
-><DT
->22.7. <A
-HREF="#AEN3029"
->Share modes</A
-></DT
-><DT
->22.8. <A
-HREF="#AEN3034"
->Log level</A
-></DT
-><DT
->22.9. <A
-HREF="#AEN3037"
->Wide lines</A
-></DT
-><DT
->22.10. <A
-HREF="#AEN3040"
->Read raw</A
-></DT
-><DT
->22.11. <A
-HREF="#AEN3045"
->Write raw</A
-></DT
-><DT
->22.12. <A
-HREF="#AEN3049"
->Read prediction</A
-></DT
-><DT
->22.13. <A
-HREF="#AEN3056"
->Memory mapping</A
-></DT
-><DT
->22.14. <A
-HREF="#AEN3061"
->Slow Clients</A
-></DT
-><DT
->22.15. <A
-HREF="#AEN3065"
->Slow Logins</A
-></DT
-><DT
->22.16. <A
-HREF="#AEN3068"
->Client tuning</A
-></DT
-><DT
->22.17. <A
-HREF="#AEN3100"
->My Results</A
-></DT
-></DL
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="INTEGRATE-MS-NETWORKS"
-></A
->Chapter 10. Integrating MS Windows networks with Samba</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1362"
-></A
->10.1. Agenda</H2
-><P
->To identify the key functional mechanisms of MS Windows networking
-to enable the deployment of Samba as a means of extending and/or
-replacing MS Windows NT/2000 technology.</P
-><P
->We will examine:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->Name resolution in a pure Unix/Linux TCP/IP
- environment
- </P
-></LI
-><LI
-><P
->Name resolution as used within MS Windows
- networking
- </P
-></LI
-><LI
-><P
->How browsing functions and how to deploy stable
- and dependable browsing using Samba
- </P
-></LI
-><LI
-><P
->MS Windows security options and how to
- configure Samba for seemless integration
- </P
-></LI
-><LI
-><P
->Configuration of Samba as:</P
-><P
-></P
-><OL
-TYPE="a"
-><LI
-><P
->A stand-alone server</P
-></LI
-><LI
-><P
->An MS Windows NT 3.x/4.0 security domain member
- </P
-></LI
-><LI
-><P
->An alternative to an MS Windows NT 3.x/4.0 Domain Controller
- </P
-></LI
-></OL
-></LI
-></OL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1384"
-></A
->10.2. Name Resolution in a pure Unix/Linux world</H2
-><P
->The key configuration files covered in this section are:</P
-><P
-></P
-><UL
-><LI
-><P
-><TT
-CLASS="FILENAME"
->/etc/hosts</TT
-></P
-></LI
-><LI
-><P
-><TT
-CLASS="FILENAME"
->/etc/resolv.conf</TT
-></P
-></LI
-><LI
-><P
-><TT
-CLASS="FILENAME"
->/etc/host.conf</TT
-></P
-></LI
-><LI
-><P
-><TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-></P
-></LI
-></UL
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1400"
-></A
->10.2.1. <TT
-CLASS="FILENAME"
->/etc/hosts</TT
-></H3
-><P
->Contains a static list of IP Addresses and names.
-eg:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> 127.0.0.1 localhost localhost.localdomain
- 192.168.1.1 bigbox.caldera.com bigbox alias4box</PRE
-></P
-><P
->The purpose of <TT
-CLASS="FILENAME"
->/etc/hosts</TT
-> is to provide a
-name resolution mechanism so that uses do not need to remember
-IP addresses.</P
-><P
->Network packets that are sent over the physical network transport
-layer communicate not via IP addresses but rather using the Media
-Access Control address, or MAC address. IP Addresses are currently
-32 bits in length and are typically presented as four (4) decimal
-numbers that are separated by a dot (or period). eg: 168.192.1.1</P
-><P
->MAC Addresses use 48 bits (or 6 bytes) and are typically represented
-as two digit hexadecimal numbers separated by colons. eg:
-40:8e:0a:12:34:56</P
-><P
->Every network interfrace must have an MAC address. Associated with
-a MAC address there may be one or more IP addresses. There is NO
-relationship between an IP address and a MAC address, all such assignments
-are arbitary or discretionary in nature. At the most basic level all
-network communications takes place using MAC addressing. Since MAC
-addresses must be globally unique, and generally remains fixed for
-any particular interface, the assignment of an IP address makes sense
-from a network management perspective. More than one IP address can
-be assigned per MAC address. One address must be the primary IP address,
-this is the address that will be returned in the ARP reply.</P
-><P
->When a user or a process wants to communicate with another machine
-the protocol implementation ensures that the "machine name" or "host
-name" is resolved to an IP address in a manner that is controlled
-by the TCP/IP configuration control files. The file
-<TT
-CLASS="FILENAME"
->/etc/hosts</TT
-> is one such file.</P
-><P
->When the IP address of the destination interface has been
-determined a protocol called ARP/RARP is used to identify
-the MAC address of the target interface. ARP stands for Address
-Resolution Protocol, and is a broadcast oriented method that
-uses UDP (User Datagram Protocol) to send a request to all
-interfaces on the local network segment using the all 1's MAC
-address. Network interfaces are programmed to respond to two
-MAC addresses only; their own unique address and the address
-ff:ff:ff:ff:ff:ff. The reply packet from an ARP request will
-contain the MAC address and the primary IP address for each
-interface.</P
-><P
->The <TT
-CLASS="FILENAME"
->/etc/hosts</TT
-> file is foundational to all
-Unix/Linux TCP/IP installations and as a minumum will contain
-the localhost and local network interface IP addresses and the
-primary names by which they are known within the local machine.
-This file helps to prime the pump so that a basic level of name
-resolution can exist before any other method of name resolution
-becomes available.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1416"
-></A
->10.2.2. <TT
-CLASS="FILENAME"
->/etc/resolv.conf</TT
-></H3
-><P
->This file tells the name resolution libraries:</P
-><P
-></P
-><UL
-><LI
-><P
->The name of the domain to which the machine
- belongs
- </P
-></LI
-><LI
-><P
->The name(s) of any domains that should be
- automatically searched when trying to resolve unqualified
- host names to their IP address
- </P
-></LI
-><LI
-><P
->The name or IP address of available Domain
- Name Servers that may be asked to perform name to address
- translation lookups
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1427"
-></A
->10.2.3. <TT
-CLASS="FILENAME"
->/etc/host.conf</TT
-></H3
-><P
-><TT
-CLASS="FILENAME"
->/etc/host.conf</TT
-> is the primary means by
-which the setting in /etc/resolv.conf may be affected. It is a
-critical configuration file. This file controls the order by
-which name resolution may procede. The typical structure is:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> order hosts,bind
- multi on</PRE
-></P
-><P
->then both addresses should be returned. Please refer to the
-man page for host.conf for further details.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1435"
-></A
->10.2.4. <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-></H3
-><P
->This file controls the actual name resolution targets. The
-file typically has resolver object specifications as follows:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> # /etc/nsswitch.conf
- #
- # Name Service Switch configuration file.
- #
-
- passwd: compat
- # Alternative entries for password authentication are:
- # passwd: compat files nis ldap winbind
- shadow: compat
- group: compat
-
- hosts: files nis dns
- # Alternative entries for host name resolution are:
- # hosts: files dns nis nis+ hesoid db compat ldap wins
- networks: nis files dns
-
- ethers: nis files
- protocols: nis files
- rpc: nis files
- services: nis files</PRE
-></P
-><P
->Of course, each of these mechanisms requires that the appropriate
-facilities and/or services are correctly configured.</P
-><P
->It should be noted that unless a network request/message must be
-sent, TCP/IP networks are silent. All TCP/IP communications assumes a
-principal of speaking only when necessary.</P
-><P
->Starting with version 2.2.0 samba has Linux support for extensions to
-the name service switch infrastructure so that linux clients will
-be able to obtain resolution of MS Windows NetBIOS names to IP
-Addresses. To gain this functionality Samba needs to be compiled
-with appropriate arguments to the make command (ie: <B
-CLASS="COMMAND"
->make
-nsswitch/libnss_wins.so</B
->). The resulting library should
-then be installed in the <TT
-CLASS="FILENAME"
->/lib</TT
-> directory and
-the "wins" parameter needs to be added to the "hosts:" line in
-the <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-> file. At this point it
-will be possible to ping any MS Windows machine by it's NetBIOS
-machine name, so long as that machine is within the workgroup to
-which both the samba machine and the MS Windows machine belong.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1447"
-></A
->10.3. Name resolution as used within MS Windows networking</H2
-><P
->MS Windows networking is predicated about the name each machine
-is given. This name is known variously (and inconsistently) as
-the "computer name", "machine name", "networking name", "netbios name",
-"SMB name". All terms mean the same thing with the exception of
-"netbios name" which can apply also to the name of the workgroup or the
-domain name. The terms "workgroup" and "domain" are really just a
-simply name with which the machine is associated. All NetBIOS names
-are exactly 16 characters in length. The 16th character is reserved.
-It is used to store a one byte value that indicates service level
-information for the NetBIOS name that is registered. A NetBIOS machine
-name is therefore registered for each service type that is provided by
-the client/server.</P
-><P
->The following are typical NetBIOS name/service type registrations:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> Unique NetBIOS Names:
- MACHINENAME&#60;00&#62; = Server Service is running on MACHINENAME
- MACHINENAME&#60;03&#62; = Generic Machine Name (NetBIOS name)
- MACHINENAME&#60;20&#62; = LanMan Server service is running on MACHINENAME
- WORKGROUP&#60;1b&#62; = Domain Master Browser
-
- Group Names:
- WORKGROUP&#60;03&#62; = Generic Name registered by all members of WORKGROUP
- WORKGROUP&#60;1c&#62; = Domain Controllers / Netlogon Servers
- WORKGROUP&#60;1d&#62; = Local Master Browsers
- WORKGROUP&#60;1e&#62; = Internet Name Resolvers</PRE
-></P
-><P
->It should be noted that all NetBIOS machines register their own
-names as per the above. This is in vast contrast to TCP/IP
-installations where traditionally the system administrator will
-determine in the /etc/hosts or in the DNS database what names
-are associated with each IP address.</P
-><P
->One further point of clarification should be noted, the <TT
-CLASS="FILENAME"
->/etc/hosts</TT
->
-file and the DNS records do not provide the NetBIOS name type information
-that MS Windows clients depend on to locate the type of service that may
-be needed. An example of this is what happens when an MS Windows client
-wants to locate a domain logon server. It find this service and the IP
-address of a server that provides it by performing a lookup (via a
-NetBIOS broadcast) for enumeration of all machines that have
-registered the name type *&#60;1c&#62;. A logon request is then sent to each
-IP address that is returned in the enumerated list of IP addresses. Which
-ever machine first replies then ends up providing the logon services.</P
-><P
->The name "workgroup" or "domain" really can be confusing since these
-have the added significance of indicating what is the security
-architecture of the MS Windows network. The term "workgroup" indicates
-that the primary nature of the network environment is that of a
-peer-to-peer design. In a WORKGROUP all machines are responsible for
-their own security, and generally such security is limited to use of
-just a password (known as SHARE MODE security). In most situations
-with peer-to-peer networking the users who control their own machines
-will simply opt to have no security at all. It is possible to have
-USER MODE security in a WORKGROUP environment, thus requiring use
-of a user name and a matching password.</P
-><P
->MS Windows networking is thus predetermined to use machine names
-for all local and remote machine message passing. The protocol used is
-called Server Message Block (SMB) and this is implemented using
-the NetBIOS protocol (Network Basic Input Output System). NetBIOS can
-be encapsulated using LLC (Logical Link Control) protocol - in which case
-the resulting protocol is called NetBEUI (Network Basic Extended User
-Interface). NetBIOS can also be run over IPX (Internetworking Packet
-Exchange) protocol as used by Novell NetWare, and it can be run
-over TCP/IP protocols - in which case the resulting protocol is called
-NBT or NetBT, the NetBIOS over TCP/IP.</P
-><P
->MS Windows machines use a complex array of name resolution mechanisms.
-Since we are primarily concerned with TCP/IP this demonstration is
-limited to this area.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1459"
-></A
->10.3.1. The NetBIOS Name Cache</H3
-><P
->All MS Windows machines employ an in memory buffer in which is
-stored the NetBIOS names and IP addresses for all external
-machines that that machine has communicated with over the
-past 10-15 minutes. It is more efficient to obtain an IP address
-for a machine from the local cache than it is to go through all the
-configured name resolution mechanisms.</P
-><P
->If a machine whose name is in the local name cache has been shut
-down before the name had been expired and flushed from the cache, then
-an attempt to exchange a message with that machine will be subject
-to time-out delays. i.e.: Its name is in the cache, so a name resolution
-lookup will succeed, but the machine can not respond. This can be
-frustrating for users - but it is a characteristic of the protocol.</P
-><P
->The MS Windows utility that allows examination of the NetBIOS
-name cache is called "nbtstat". The Samba equivalent of this
-is called "nmblookup".</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1464"
-></A
->10.3.2. The LMHOSTS file</H3
-><P
->This file is usually located in MS Windows NT 4.0 or
-2000 in <TT
-CLASS="FILENAME"
->C:\WINNT\SYSTEM32\DRIVERS\ETC</TT
-> and contains
-the IP Address and the machine name in matched pairs. The
-<TT
-CLASS="FILENAME"
->LMHOSTS</TT
-> file performs NetBIOS name
-to IP address mapping oriented.</P
-><P
->It typically looks like:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> # Copyright (c) 1998 Microsoft Corp.
- #
- # This is a sample LMHOSTS file used by the Microsoft Wins Client (NetBIOS
- # over TCP/IP) stack for Windows98
- #
- # This file contains the mappings of IP addresses to NT computernames
- # (NetBIOS) names. Each entry should be kept on an individual line.
- # The IP address should be placed in the first column followed by the
- # corresponding computername. The address and the comptername
- # should be separated by at least one space or tab. The "#" character
- # is generally used to denote the start of a comment (see the exceptions
- # below).
- #
- # This file is compatible with Microsoft LAN Manager 2.x TCP/IP lmhosts
- # files and offers the following extensions:
- #
- # #PRE
- # #DOM:&lt;domain&gt;
- # #INCLUDE &lt;filename&gt;
- # #BEGIN_ALTERNATE
- # #END_ALTERNATE
- # \0xnn (non-printing character support)
- #
- # Following any entry in the file with the characters "#PRE" will cause
- # the entry to be preloaded into the name cache. By default, entries are
- # not preloaded, but are parsed only after dynamic name resolution fails.
- #
- # Following an entry with the "#DOM:&lt;domain&gt;" tag will associate the
- # entry with the domain specified by &lt;domain&gt;. This affects how the
- # browser and logon services behave in TCP/IP environments. To preload
- # the host name associated with #DOM entry, it is necessary to also add a
- # #PRE to the line. The &lt;domain&gt; is always preloaded although it will not
- # be shown when the name cache is viewed.
- #
- # Specifying "#INCLUDE &lt;filename&gt;" will force the RFC NetBIOS (NBT)
- # software to seek the specified &lt;filename&gt; and parse it as if it were
- # local. &lt;filename&gt; is generally a UNC-based name, allowing a
- # centralized lmhosts file to be maintained on a server.
- # It is ALWAYS necessary to provide a mapping for the IP address of the
- # server prior to the #INCLUDE. This mapping must use the #PRE directive.
- # In addtion the share "public" in the example below must be in the
- # LanManServer list of "NullSessionShares" in order for client machines to
- # be able to read the lmhosts file successfully. This key is under
- # \machine\system\currentcontrolset\services\lanmanserver\parameters\nullsessionshares
- # in the registry. Simply add "public" to the list found there.
- #
- # The #BEGIN_ and #END_ALTERNATE keywords allow multiple #INCLUDE
- # statements to be grouped together. Any single successful include
- # will cause the group to succeed.
- #
- # Finally, non-printing characters can be embedded in mappings by
- # first surrounding the NetBIOS name in quotations, then using the
- # \0xnn notation to specify a hex value for a non-printing character.
- #
- # The following example illustrates all of these extensions:
- #
- # 102.54.94.97 rhino #PRE #DOM:networking #net group's DC
- # 102.54.94.102 "appname \0x14" #special app server
- # 102.54.94.123 popular #PRE #source server
- # 102.54.94.117 localsrv #PRE #needed for the include
- #
- # #BEGIN_ALTERNATE
- # #INCLUDE \\localsrv\public\lmhosts
- # #INCLUDE \\rhino\public\lmhosts
- # #END_ALTERNATE
- #
- # In the above example, the "appname" server contains a special
- # character in its name, the "popular" and "localsrv" server names are
- # preloaded, and the "rhino" server name is specified so it can be used
- # to later #INCLUDE a centrally maintained lmhosts file if the "localsrv"
- # system is unavailable.
- #
- # Note that the whole file is parsed including comments on each lookup,
- # so keeping the number of comments to a minimum will improve performance.
- # Therefore it is not advisable to simply add lmhosts file entries onto the
- # end of this file.</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1472"
-></A
->10.3.3. HOSTS file</H3
-><P
->This file is usually located in MS Windows NT 4.0 or 2000 in
-<TT
-CLASS="FILENAME"
->C:\WINNT\SYSTEM32\DRIVERS\ETC</TT
-> and contains
-the IP Address and the IP hostname in matched pairs. It can be
-used by the name resolution infrastructure in MS Windows, depending
-on how the TCP/IP environment is configured. This file is in
-every way the equivalent of the Unix/Linux <TT
-CLASS="FILENAME"
->/etc/hosts</TT
-> file.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1477"
-></A
->10.3.4. DNS Lookup</H3
-><P
->This capability is configured in the TCP/IP setup area in the network
-configuration facility. If enabled an elaborate name resolution sequence
-is followed the precise nature of which isdependant on what the NetBIOS
-Node Type parameter is configured to. A Node Type of 0 means use
-NetBIOS broadcast (over UDP broadcast) is first used if the name
-that is the subject of a name lookup is not found in the NetBIOS name
-cache. If that fails then DNS, HOSTS and LMHOSTS are checked. If set to
-Node Type 8, then a NetBIOS Unicast (over UDP Unicast) is sent to the
-WINS Server to obtain a lookup before DNS, HOSTS, LMHOSTS, or broadcast
-lookup is used.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1480"
-></A
->10.3.5. WINS Lookup</H3
-><P
->A WINS (Windows Internet Name Server) service is the equivaent of the
-rfc1001/1002 specified NBNS (NetBIOS Name Server). A WINS server stores
-the names and IP addresses that are registered by a Windows client
-if the TCP/IP setup has been given at least one WINS Server IP Address.</P
-><P
->To configure Samba to be a WINS server the following parameter needs
-to be added to the <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> wins support = Yes</PRE
-></P
-><P
->To configure Samba to use a WINS server the following parameters are
-needed in the smb.conf file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> wins support = No
- wins server = xxx.xxx.xxx.xxx</PRE
-></P
-><P
->where <TT
-CLASS="REPLACEABLE"
-><I
->xxx.xxx.xxx.xxx</I
-></TT
-> is the IP address
-of the WINS server.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1492"
-></A
->10.4. How browsing functions and how to deploy stable and
-dependable browsing using Samba</H2
-><P
->As stated above, MS Windows machines register their NetBIOS names
-(i.e.: the machine name for each service type in operation) on start
-up. Also, as stated above, the exact method by which this name registration
-takes place is determined by whether or not the MS Windows client/server
-has been given a WINS server address, whether or not LMHOSTS lookup
-is enabled, or if DNS for NetBIOS name resolution is enabled, etc.</P
-><P
->In the case where there is no WINS server all name registrations as
-well as name lookups are done by UDP broadcast. This isolates name
-resolution to the local subnet, unless LMHOSTS is used to list all
-names and IP addresses. In such situations Samba provides a means by
-which the samba server name may be forcibly injected into the browse
-list of a remote MS Windows network (using the "remote announce" parameter).</P
-><P
->Where a WINS server is used, the MS Windows client will use UDP
-unicast to register with the WINS server. Such packets can be routed
-and thus WINS allows name resolution to function across routed networks.</P
-><P
->During the startup process an election will take place to create a
-local master browser if one does not already exist. On each NetBIOS network
-one machine will be elected to function as the domain master browser. This
-domain browsing has nothing to do with MS security domain control.
-Instead, the domain master browser serves the role of contacting each local
-master browser (found by asking WINS or from LMHOSTS) and exchanging browse
-list contents. This way every master browser will eventually obtain a complete
-list of all machines that are on the network. Every 11-15 minutes an election
-is held to determine which machine will be the master browser. By the nature of
-the election criteria used, the machine with the highest uptime, or the
-most senior protocol version, or other criteria, will win the election
-as domain master browser.</P
-><P
->Clients wishing to browse the network make use of this list, but also depend
-on the availability of correct name resolution to the respective IP
-address/addresses. </P
-><P
->Any configuration that breaks name resolution and/or browsing intrinsics
-will annoy users because they will have to put up with protracted
-inability to use the network services.</P
-><P
->Samba supports a feature that allows forced synchonisation
-of browse lists across routed networks using the "remote
-browse sync" parameter in the smb.conf file. This causes Samba
-to contact the local master browser on a remote network and
-to request browse list synchronisation. This effectively bridges
-two networks that are separated by routers. The two remote
-networks may use either broadcast based name resolution or WINS
-based name resolution, but it should be noted that the "remote
-browse sync" parameter provides browse list synchronisation - and
-that is distinct from name to address resolution, in other
-words, for cross subnet browsing to function correctly it is
-essential that a name to address resolution mechanism be provided.
-This mechanism could be via DNS, <TT
-CLASS="FILENAME"
->/etc/hosts</TT
->,
-and so on.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1502"
-></A
->10.5. MS Windows security options and how to configure
-Samba for seemless integration</H2
-><P
->MS Windows clients may use encrypted passwords as part of a
-challenege/response authentication model (a.k.a. NTLMv1) or
-alone, or clear text strings for simple password based
-authentication. It should be realized that with the SMB
-protocol the password is passed over the network either
-in plain text or encrypted, but not both in the same
-authentication requets.</P
-><P
->When encrypted passwords are used a password that has been
-entered by the user is encrypted in two ways:</P
-><P
-></P
-><UL
-><LI
-><P
->An MD4 hash of the UNICODE of the password
- string. This is known as the NT hash.
- </P
-></LI
-><LI
-><P
->The password is converted to upper case,
- and then padded or trucated to 14 bytes. This string is
- then appended with 5 bytes of NULL characters and split to
- form two 56 bit DES keys to encrypt a "magic" 8 byte value.
- The resulting 16 bytes for the LanMan hash.
- </P
-></LI
-></UL
-><P
->You should refer to the <A
-HREF="ENCRYPTION.html"
-TARGET="_top"
->Password Encryption</A
-> chapter in this HOWTO collection
-for more details on the inner workings</P
-><P
->MS Windows 95 pre-service pack 1, MS Windows NT versions 3.x
-and version 4.0 pre-service pack 3 will use either mode of
-password authentication. All versions of MS Windows that follow
-these versions no longer support plain text passwords by default.</P
-><P
->MS Windows clients have a habit of dropping network mappings that
-have been idle for 10 minutes or longer. When the user attempts to
-use the mapped drive connection that has been dropped, the client
-re-establishes the connection using
-a cached copy of the password.</P
-><P
->When Microsoft changed the default password mode, they dropped support for
-caching of the plain text password. This means that when the registry
-parameter is changed to re-enable use of plain text passwords it appears to
-work, but when a dropped mapping attempts to revalidate it will fail if
-the remote authentication server does not support encrypted passwords.
-This means that it is definitely not a good idea to re-enable plain text
-password support in such clients.</P
-><P
->The following parameters can be used to work around the
-issue of Windows 9x client upper casing usernames and
-password before transmitting them to the SMB server
-when using clear text authentication.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> <A
-HREF="smb.conf.5.html#PASSWORDLEVEL"
-TARGET="_top"
->passsword level</A
-> = <TT
-CLASS="REPLACEABLE"
-><I
->integer</I
-></TT
->
- <A
-HREF="smb.conf.5.html#USERNAMELEVEL"
-TARGET="_top"
->username level</A
-> = <TT
-CLASS="REPLACEABLE"
-><I
->integer</I
-></TT
-></PRE
-></P
-><P
->By default Samba will lower case the username before attempting
-to lookup the user in the database of local system accounts.
-Because UNIX usernames conventionally only contain lower case
-character, the <TT
-CLASS="PARAMETER"
-><I
->username level</I
-></TT
-> parameter
-is rarely even needed.</P
-><P
->However, password on UNIX systems often make use of mixed case
-characters. This means that in order for a user on a Windows 9x
-client to connect to a Samba server using clear text authentication,
-the <TT
-CLASS="PARAMETER"
-><I
->password level</I
-></TT
-> must be set to the maximum
-number of upper case letter which <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->could</I
-></SPAN
-> appear
-is a password. Note that is the server OS uses the traditional
-DES version of crypt(), then a <TT
-CLASS="PARAMETER"
-><I
->password level</I
-></TT
->
-of 8 will result in case insensitive passwords as seen from Windows
-users. This will also result in longer login times as Samba
-hash to compute the permutations of the password string and
-try them one by one until a match is located (or all combinations fail).</P
-><P
->The best option to adopt is to enable support for encrypted passwords
-where ever Samba is used. There are three configuration possibilities
-for support of encrypted passwords:</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1530"
-></A
->10.5.1. Use MS Windows NT as an authentication server</H3
-><P
->This method involves the additions of the following parameters
-in the smb.conf file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> encrypt passwords = Yes
- security = server
- password server = "NetBIOS_name_of_PDC"</PRE
-></P
-><P
->There are two ways of identifying whether or not a username and
-password pair was valid or not. One uses the reply information provided
-as part of the authentication messaging process, the other uses
-just and error code.</P
-><P
->The down-side of this mode of configuration is the fact that
-for security reasons Samba will send the password server a bogus
-username and a bogus password and if the remote server fails to
-reject the username and password pair then an alternative mode
-of identification of validation is used. Where a site uses password
-lock out after a certain number of failed authentication attempts
-this will result in user lockouts.</P
-><P
->Use of this mode of authentication does require there to be
-a standard Unix account for the user, this account can be blocked
-to prevent logons by other than MS Windows clients.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1538"
-></A
->10.5.2. Make Samba a member of an MS Windows NT security domain</H3
-><P
->This method involves additon of the following paramters in the smb.conf file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> encrypt passwords = Yes
- security = domain
- workgroup = "name of NT domain"
- password server = *</PRE
-></P
-><P
->The use of the "*" argument to "password server" will cause samba
-to locate the domain controller in a way analogous to the way
-this is done within MS Windows NT.</P
-><P
->In order for this method to work the Samba server needs to join the
-MS Windows NT security domain. This is done as follows:</P
-><P
-></P
-><UL
-><LI
-><P
->On the MS Windows NT domain controller using
- the Server Manager add a machine account for the Samba server.
- </P
-></LI
-><LI
-><P
->Next, on the Linux system execute:
- <B
-CLASS="COMMAND"
->smbpasswd -r PDC_NAME -j DOMAIN_NAME</B
->
- </P
-></LI
-></UL
-><P
->Use of this mode of authentication does require there to be
-a standard Unix account for the user in order to assign
-a uid once the account has been authenticated by the remote
-Windows DC. This account can be blocked to prevent logons by
-other than MS Windows clients by things such as setting an invalid
-shell in the <TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entry.</P
-><P
->An alternative to assigning UIDs to Windows users on a
-Samba member server is presented in the <A
-HREF="winbind.html"
-TARGET="_top"
->Winbind Overview</A
-> chapter in
-this HOWTO collection.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1555"
-></A
->10.5.3. Configure Samba as an authentication server</H3
-><P
->This mode of authentication demands that there be on the
-Unix/Linux system both a Unix style account as well as an
-smbpasswd entry for the user. The Unix system account can be
-locked if required as only the encrypted password will be
-used for SMB client authentication.</P
-><P
->This method involves addition of the following parameters to
-the smb.conf file:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->## please refer to the Samba PDC HOWTO chapter later in
-## this collection for more details
-[global]
- encrypt passwords = Yes
- security = user
- domain logons = Yes
- ; an OS level of 33 or more is recommended
- os level = 33
-
-[NETLOGON]
- path = /somewhare/in/file/system
- read only = yes</PRE
-></P
-><P
->in order for this method to work a Unix system account needs
-to be created for each user, as well as for each MS Windows NT/2000
-machine. The following structure is required.</P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1562"
-></A
->10.5.3.1. Users</H4
-><P
->A user account that may provide a home directory should be
-created. The following Linux system commands are typical of
-the procedure for creating an account.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> # useradd -s /bin/bash -d /home/"userid" -m "userid"
- # passwd "userid"
- Enter Password: &lt;pw&gt;
-
- # smbpasswd -a "userid"
- Enter Password: &lt;pw&gt;</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN1567"
-></A
->10.5.3.2. MS Windows NT Machine Accounts</H4
-><P
->These are required only when Samba is used as a domain
-controller. Refer to the Samba-PDC-HOWTO for more details.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> # useradd -s /bin/false -d /dev/null "machine_name"\$
- # passwd -l "machine_name"\$
- # smbpasswd -a -m "machine_name"</PRE
-></P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1572"
-></A
->10.6. Conclusions</H2
-><P
->Samba provides a flexible means to operate as...</P
-><P
-></P
-><UL
-><LI
-><P
->A Stand-alone server - No special action is needed
- other than to create user accounts. Stand-alone servers do NOT
- provide network logon services, meaning that machines that use this
- server do NOT perform a domain logon but instead make use only of
- the MS Windows logon which is local to the MS Windows
- workstation/server.
- </P
-></LI
-><LI
-><P
->An MS Windows NT 3.x/4.0 security domain member.
- </P
-></LI
-><LI
-><P
->An alternative to an MS Windows NT 3.x/4.0
- Domain Controller.
- </P
-></LI
-></UL
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="UNIX-PERMISSIONS"
-></A
->Chapter 11. UNIX Permission Bits and Windows NT Access Control Lists</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1593"
-></A
->11.1. Viewing and changing UNIX permissions using the NT
- security dialogs</H2
-><P
->New in the Samba 2.0.4 release is the ability for Windows
- NT clients to use their native security settings dialog box to
- view and modify the underlying UNIX permissions.</P
-><P
->Note that this ability is careful not to compromise
- the security of the UNIX host Samba is running on, and
- still obeys all the file permission rules that a Samba
- administrator can set.</P
-><P
->In Samba 2.0.4 and above the default value of the
- parameter <A
-HREF="smb.conf.5.html#NTACLSUPPORT"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
-> nt acl support</I
-></TT
-></A
-> has been changed from
- <TT
-CLASS="CONSTANT"
->false</TT
-> to <TT
-CLASS="CONSTANT"
->true</TT
->, so
- manipulation of permissions is turned on by default.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1602"
-></A
->11.2. How to view file security on a Samba share</H2
-><P
->From an NT 4.0 client, single-click with the right
- mouse button on any file or directory in a Samba mounted
- drive letter or UNC path. When the menu pops-up, click
- on the <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Properties</I
-></SPAN
-> entry at the bottom of
- the menu. This brings up the normal file properties dialog
- box, but with Samba 2.0.4 this will have a new tab along the top
- marked <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Security</I
-></SPAN
->. Click on this tab and you
- will see three buttons, <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Permissions</I
-></SPAN
->,
- <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Auditing</I
-></SPAN
->, and <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Ownership</I
-></SPAN
->.
- The <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Auditing</I
-></SPAN
-> button will cause either
- an error message <SPAN
-CLASS="ERRORNAME"
->A requested privilege is not held
- by the client</SPAN
-> to appear if the user is not the
- NT Administrator, or a dialog which is intended to allow an
- Administrator to add auditing requirements to a file if the
- user is logged on as the NT Administrator. This dialog is
- non-functional with a Samba share at this time, as the only
- useful button, the <B
-CLASS="COMMAND"
->Add</B
-> button will not currently
- allow a list of users to be seen.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1613"
-></A
->11.3. Viewing file ownership</H2
-><P
->Clicking on the <B
-CLASS="COMMAND"
->"Ownership"</B
-> button
- brings up a dialog box telling you who owns the given file. The
- owner name will be of the form :</P
-><P
-><B
-CLASS="COMMAND"
->"SERVER\user (Long name)"</B
-></P
-><P
->Where <TT
-CLASS="REPLACEABLE"
-><I
->SERVER</I
-></TT
-> is the NetBIOS name of
- the Samba server, <TT
-CLASS="REPLACEABLE"
-><I
->user</I
-></TT
-> is the user name of
- the UNIX user who owns the file, and <TT
-CLASS="REPLACEABLE"
-><I
->(Long name)</I
-></TT
->
- is the descriptive string identifying the user (normally found in the
- GECOS field of the UNIX password database). Click on the <B
-CLASS="COMMAND"
->Close
- </B
-> button to remove this dialog.</P
-><P
->If the parameter <TT
-CLASS="PARAMETER"
-><I
->nt acl support</I
-></TT
->
- is set to <TT
-CLASS="CONSTANT"
->false</TT
-> then the file owner will
- be shown as the NT user <B
-CLASS="COMMAND"
->"Everyone"</B
->.</P
-><P
->The <B
-CLASS="COMMAND"
->Take Ownership</B
-> button will not allow
- you to change the ownership of this file to yourself (clicking on
- it will display a dialog box complaining that the user you are
- currently logged onto the NT client cannot be found). The reason
- for this is that changing the ownership of a file is a privileged
- operation in UNIX, available only to the <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->root</I
-></SPAN
->
- user. As clicking on this button causes NT to attempt to change
- the ownership of a file to the current user logged into the NT
- client this will not work with Samba at this time.</P
-><P
->There is an NT chown command that will work with Samba
- and allow a user with Administrator privilege connected
- to a Samba 2.0.4 server as root to change the ownership of
- files on both a local NTFS filesystem or remote mounted NTFS
- or Samba drive. This is available as part of the <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Seclib
- </I
-></SPAN
-> NT security library written by Jeremy Allison of
- the Samba Team, available from the main Samba ftp site.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1633"
-></A
->11.4. Viewing file or directory permissions</H2
-><P
->The third button is the <B
-CLASS="COMMAND"
->"Permissions"</B
->
- button. Clicking on this brings up a dialog box that shows both
- the permissions and the UNIX owner of the file or directory.
- The owner is displayed in the form :</P
-><P
-><B
-CLASS="COMMAND"
->"SERVER\user (Long name)"</B
-></P
-><P
->Where <TT
-CLASS="REPLACEABLE"
-><I
->SERVER</I
-></TT
-> is the NetBIOS name of
- the Samba server, <TT
-CLASS="REPLACEABLE"
-><I
->user</I
-></TT
-> is the user name of
- the UNIX user who owns the file, and <TT
-CLASS="REPLACEABLE"
-><I
->(Long name)</I
-></TT
->
- is the descriptive string identifying the user (normally found in the
- GECOS field of the UNIX password database).</P
-><P
->If the parameter <TT
-CLASS="PARAMETER"
-><I
->nt acl support</I
-></TT
->
- is set to <TT
-CLASS="CONSTANT"
->false</TT
-> then the file owner will
- be shown as the NT user <B
-CLASS="COMMAND"
->"Everyone"</B
-> and the
- permissions will be shown as NT "Full Control".</P
-><P
->The permissions field is displayed differently for files
- and directories, so I'll describe the way file permissions
- are displayed first.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1648"
-></A
->11.4.1. File Permissions</H3
-><P
->The standard UNIX user/group/world triple and
- the corresponding "read", "write", "execute" permissions
- triples are mapped by Samba into a three element NT ACL
- with the 'r', 'w', and 'x' bits mapped into the corresponding
- NT permissions. The UNIX world permissions are mapped into
- the global NT group <B
-CLASS="COMMAND"
->Everyone</B
->, followed
- by the list of permissions allowed for UNIX world. The UNIX
- owner and group permissions are displayed as an NT
- <B
-CLASS="COMMAND"
->user</B
-> icon and an NT <B
-CLASS="COMMAND"
->local
- group</B
-> icon respectively followed by the list
- of permissions allowed for the UNIX user and group.</P
-><P
->As many UNIX permission sets don't map into common
- NT names such as <B
-CLASS="COMMAND"
->"read"</B
->, <B
-CLASS="COMMAND"
-> "change"</B
-> or <B
-CLASS="COMMAND"
->"full control"</B
-> then
- usually the permissions will be prefixed by the words <B
-CLASS="COMMAND"
-> "Special Access"</B
-> in the NT display list.</P
-><P
->But what happens if the file has no permissions allowed
- for a particular UNIX user group or world component ? In order
- to allow "no permissions" to be seen and modified then Samba
- overloads the NT <B
-CLASS="COMMAND"
->"Take Ownership"</B
-> ACL attribute
- (which has no meaning in UNIX) and reports a component with
- no permissions as having the NT <B
-CLASS="COMMAND"
->"O"</B
-> bit set.
- This was chosen of course to make it look like a zero, meaning
- zero permissions. More details on the decision behind this will
- be given below.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1662"
-></A
->11.4.2. Directory Permissions</H3
-><P
->Directories on an NT NTFS file system have two
- different sets of permissions. The first set of permissions
- is the ACL set on the directory itself, this is usually displayed
- in the first set of parentheses in the normal <B
-CLASS="COMMAND"
->"RW"</B
->
- NT style. This first set of permissions is created by Samba in
- exactly the same way as normal file permissions are, described
- above, and is displayed in the same way.</P
-><P
->The second set of directory permissions has no real meaning
- in the UNIX permissions world and represents the <B
-CLASS="COMMAND"
-> "inherited"</B
-> permissions that any file created within
- this directory would inherit.</P
-><P
->Samba synthesises these inherited permissions for NT by
- returning as an NT ACL the UNIX permission mode that a new file
- created by Samba on this share would receive.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1669"
-></A
->11.5. Modifying file or directory permissions</H2
-><P
->Modifying file and directory permissions is as simple
- as changing the displayed permissions in the dialog box, and
- clicking the <B
-CLASS="COMMAND"
->OK</B
-> button. However, there are
- limitations that a user needs to be aware of, and also interactions
- with the standard Samba permission masks and mapping of DOS
- attributes that need to also be taken into account.</P
-><P
->If the parameter <TT
-CLASS="PARAMETER"
-><I
->nt acl support</I
-></TT
->
- is set to <TT
-CLASS="CONSTANT"
->false</TT
-> then any attempt to set
- security permissions will fail with an <B
-CLASS="COMMAND"
->"Access Denied"
- </B
-> message.</P
-><P
->The first thing to note is that the <B
-CLASS="COMMAND"
->"Add"</B
->
- button will not return a list of users in Samba 2.0.4 (it will give
- an error message of <B
-CLASS="COMMAND"
->"The remote procedure call failed
- and did not execute"</B
->). This means that you can only
- manipulate the current user/group/world permissions listed in
- the dialog box. This actually works quite well as these are the
- only permissions that UNIX actually has.</P
-><P
->If a permission triple (either user, group, or world)
- is removed from the list of permissions in the NT dialog box,
- then when the <B
-CLASS="COMMAND"
->"OK"</B
-> button is pressed it will
- be applied as "no permissions" on the UNIX side. If you then
- view the permissions again the "no permissions" entry will appear
- as the NT <B
-CLASS="COMMAND"
->"O"</B
-> flag, as described above. This
- allows you to add permissions back to a file or directory once
- you have removed them from a triple component.</P
-><P
->As UNIX supports only the "r", "w" and "x" bits of
- an NT ACL then if other NT security attributes such as "Delete
- access" are selected then they will be ignored when applied on
- the Samba server.</P
-><P
->When setting permissions on a directory the second
- set of permissions (in the second set of parentheses) is
- by default applied to all files within that directory. If this
- is not what you want you must uncheck the <B
-CLASS="COMMAND"
->"Replace
- permissions on existing files"</B
-> checkbox in the NT
- dialog before clicking <B
-CLASS="COMMAND"
->"OK"</B
->.</P
-><P
->If you wish to remove all permissions from a
- user/group/world component then you may either highlight the
- component and click the <B
-CLASS="COMMAND"
->"Remove"</B
-> button,
- or set the component to only have the special <B
-CLASS="COMMAND"
->"Take
- Ownership"</B
-> permission (displayed as <B
-CLASS="COMMAND"
->"O"
- </B
->) highlighted.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1691"
-></A
->11.6. Interaction with the standard Samba create mask
- parameters</H2
-><P
->Note that with Samba 2.0.5 there are four new parameters
- to control this interaction. These are :</P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->security mask</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force security mode</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->directory security mask</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force directory security mode</I
-></TT
-></P
-><P
->Once a user clicks <B
-CLASS="COMMAND"
->"OK"</B
-> to apply the
- permissions Samba maps the given permissions into a user/group/world
- r/w/x triple set, and then will check the changed permissions for a
- file against the bits set in the <A
-HREF="smb.conf.5.html#SECURITYMASK"
-TARGET="_top"
->
- <TT
-CLASS="PARAMETER"
-><I
->security mask</I
-></TT
-></A
-> parameter. Any bits that
- were changed that are not set to '1' in this parameter are left alone
- in the file permissions.</P
-><P
->Essentially, zero bits in the <TT
-CLASS="PARAMETER"
-><I
->security mask</I
-></TT
->
- mask may be treated as a set of bits the user is <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
->
- allowed to change, and one bits are those the user is allowed to change.
- </P
-><P
->If not set explicitly this parameter is set to the same value as
- the <A
-HREF="smb.conf.5.html#CREATEMASK"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->create mask
- </I
-></TT
-></A
-> parameter to provide compatibility with Samba 2.0.4
- where this permission change facility was introduced. To allow a user to
- modify all the user/group/world permissions on a file, set this parameter
- to 0777.</P
-><P
->Next Samba checks the changed permissions for a file against
- the bits set in the <A
-HREF="smb.conf.5.html#FORCESECURITYMODE"
-TARGET="_top"
-> <TT
-CLASS="PARAMETER"
-><I
->force security mode</I
-></TT
-></A
-> parameter. Any bits
- that were changed that correspond to bits set to '1' in this parameter
- are forced to be set.</P
-><P
->Essentially, bits set in the <TT
-CLASS="PARAMETER"
-><I
->force security mode
- </I
-></TT
-> parameter may be treated as a set of bits that, when
- modifying security on a file, the user has always set to be 'on'.</P
-><P
->If not set explicitly this parameter is set to the same value
- as the <A
-HREF="smb.conf.5.html#FORCECREATEMODE"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->force
- create mode</I
-></TT
-></A
-> parameter to provide compatibility
- with Samba 2.0.4 where the permission change facility was introduced.
- To allow a user to modify all the user/group/world permissions on a file
- with no restrictions set this parameter to 000.</P
-><P
->The <TT
-CLASS="PARAMETER"
-><I
->security mask</I
-></TT
-> and <TT
-CLASS="PARAMETER"
-><I
->force
- security mode</I
-></TT
-> parameters are applied to the change
- request in that order.</P
-><P
->For a directory Samba will perform the same operations as
- described above for a file except using the parameter <TT
-CLASS="PARAMETER"
-><I
-> directory security mask</I
-></TT
-> instead of <TT
-CLASS="PARAMETER"
-><I
->security
- mask</I
-></TT
->, and <TT
-CLASS="PARAMETER"
-><I
->force directory security mode
- </I
-></TT
-> parameter instead of <TT
-CLASS="PARAMETER"
-><I
->force security mode
- </I
-></TT
->.</P
-><P
->The <TT
-CLASS="PARAMETER"
-><I
->directory security mask</I
-></TT
-> parameter
- by default is set to the same value as the <TT
-CLASS="PARAMETER"
-><I
->directory mask
- </I
-></TT
-> parameter and the <TT
-CLASS="PARAMETER"
-><I
->force directory security
- mode</I
-></TT
-> parameter by default is set to the same value as
- the <TT
-CLASS="PARAMETER"
-><I
->force directory mode</I
-></TT
-> parameter to provide
- compatibility with Samba 2.0.4 where the permission change facility
- was introduced.</P
-><P
->In this way Samba enforces the permission restrictions that
- an administrator can set on a Samba share, whilst still allowing users
- to modify the permission bits within that restriction.</P
-><P
->If you want to set up a share that allows users full control
- in modifying the permission bits on their files and directories and
- doesn't force any particular bits to be set 'on', then set the following
- parameters in the <A
-HREF="smb.conf.5.html"
-TARGET="_top"
-><TT
-CLASS="FILENAME"
->smb.conf(5)
- </TT
-></A
-> file in that share specific section :</P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->security mask = 0777</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force security mode = 0</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->directory security mask = 0777</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force directory security mode = 0</I
-></TT
-></P
-><P
->As described, in Samba 2.0.4 the parameters :</P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->create mask</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force create mode</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->directory mask</I
-></TT
-></P
-><P
-><TT
-CLASS="PARAMETER"
-><I
->force directory mode</I
-></TT
-></P
-><P
->were used instead of the parameters discussed here.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1755"
-></A
->11.7. Interaction with the standard Samba file attribute
- mapping</H2
-><P
->Samba maps some of the DOS attribute bits (such as "read
- only") into the UNIX permissions of a file. This means there can
- be a conflict between the permission bits set via the security
- dialog and the permission bits set by the file attribute mapping.
- </P
-><P
->One way this can show up is if a file has no UNIX read access
- for the owner it will show up as "read only" in the standard
- file attributes tabbed dialog. Unfortunately this dialog is
- the same one that contains the security info in another tab.</P
-><P
->What this can mean is that if the owner changes the permissions
- to allow themselves read access using the security dialog, clicks
- <B
-CLASS="COMMAND"
->"OK"</B
-> to get back to the standard attributes tab
- dialog, and then clicks <B
-CLASS="COMMAND"
->"OK"</B
-> on that dialog, then
- NT will set the file permissions back to read-only (as that is what
- the attributes still say in the dialog). This means that after setting
- permissions and clicking <B
-CLASS="COMMAND"
->"OK"</B
-> to get back to the
- attributes dialog you should always hit <B
-CLASS="COMMAND"
->"Cancel"</B
->
- rather than <B
-CLASS="COMMAND"
->"OK"</B
-> to ensure that your changes
- are not overridden.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="PAM"
-></A
->Chapter 12. Configuring PAM for distributed but centrally
-managed authentication</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1776"
-></A
->12.1. Samba and PAM</H2
-><P
->A number of Unix systems (eg: Sun Solaris), as well as the
-xxxxBSD family and Linux, now utilize the Pluggable Authentication
-Modules (PAM) facility to provide all authentication,
-authorization and resource control services. Prior to the
-introduction of PAM, a decision to use an alternative to
-the system password database (<TT
-CLASS="FILENAME"
->/etc/passwd</TT
->)
-would require the provision of alternatives for all programs that provide
-security services. Such a choice would involve provision of
-alternatives to such programs as: <B
-CLASS="COMMAND"
->login</B
->,
-<B
-CLASS="COMMAND"
->passwd</B
->, <B
-CLASS="COMMAND"
->chown</B
->, etc.</P
-><P
->PAM provides a mechanism that disconnects these security programs
-from the underlying authentication/authorization infrastructure.
-PAM is configured either through one file <TT
-CLASS="FILENAME"
->/etc/pam.conf</TT
-> (Solaris),
-or by editing individual files that are located in <TT
-CLASS="FILENAME"
->/etc/pam.d</TT
->.</P
-><P
->The following is an example <TT
-CLASS="FILENAME"
->/etc/pam.d/login</TT
-> configuration file.
-This example had all options been uncommented is probably not usable
-as it stacks many conditions before allowing successful completion
-of the login process. Essentially all conditions can be disabled
-by commenting them out except the calls to <TT
-CLASS="FILENAME"
->pam_pwdb.so</TT
->.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#%PAM-1.0
-# The PAM configuration file for the `login' service
-#
-auth required pam_securetty.so
-auth required pam_nologin.so
-# auth required pam_dialup.so
-# auth optional pam_mail.so
-auth required pam_pwdb.so shadow md5
-# account requisite pam_time.so
-account required pam_pwdb.so
-session required pam_pwdb.so
-# session optional pam_lastlog.so
-# password required pam_cracklib.so retry=3
-password required pam_pwdb.so shadow md5</PRE
-></P
-><P
->PAM allows use of replacable modules. Those available on a
-sample system include:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->$ /bin/ls /lib/security
-pam_access.so pam_ftp.so pam_limits.so
-pam_ncp_auth.so pam_rhosts_auth.so pam_stress.so
-pam_cracklib.so pam_group.so pam_listfile.so
-pam_nologin.so pam_rootok.so pam_tally.so
-pam_deny.so pam_issue.so pam_mail.so
-pam_permit.so pam_securetty.so pam_time.so
-pam_dialup.so pam_lastlog.so pam_mkhomedir.so
-pam_pwdb.so pam_shells.so pam_unix.so
-pam_env.so pam_ldap.so pam_motd.so
-pam_radius.so pam_smbpass.so pam_unix_acct.so
-pam_wheel.so pam_unix_auth.so pam_unix_passwd.so
-pam_userdb.so pam_warn.so pam_unix_session.so</PRE
-></P
-><P
->The following example for the login program replaces the use of
-the <TT
-CLASS="FILENAME"
->pam_pwdb.so</TT
-> module which uses the system
-password database (<TT
-CLASS="FILENAME"
->/etc/passwd</TT
->,
-<TT
-CLASS="FILENAME"
->/etc/shadow</TT
->, <TT
-CLASS="FILENAME"
->/etc/group</TT
->) with
-the module <TT
-CLASS="FILENAME"
->pam_smbpass.so</TT
-> which uses the Samba
-database which contains the Microsoft MD4 encrypted password
-hashes. This database is stored in either
-<TT
-CLASS="FILENAME"
->/usr/local/samba/private/smbpasswd</TT
->,
-<TT
-CLASS="FILENAME"
->/etc/samba/smbpasswd</TT
->, or in
-<TT
-CLASS="FILENAME"
->/etc/samba.d/smbpasswd</TT
->, depending on the
-Samba implementation for your Unix/Linux system. The
-<TT
-CLASS="FILENAME"
->pam_smbpass.so</TT
-> module is provided by
-Samba version 2.2.1 or later. It can be compiled by specifying the
-<B
-CLASS="COMMAND"
->--with-pam_smbpass</B
-> options when running Samba's
-<TT
-CLASS="FILENAME"
->configure</TT
-> script. For more information
-on the <TT
-CLASS="FILENAME"
->pam_smbpass</TT
-> module, see the documentation
-in the <TT
-CLASS="FILENAME"
->source/pam_smbpass</TT
-> directory of the Samba
-source distribution.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#%PAM-1.0
-# The PAM configuration file for the `login' service
-#
-auth required pam_smbpass.so nodelay
-account required pam_smbpass.so nodelay
-session required pam_smbpass.so nodelay
-password required pam_smbpass.so nodelay</PRE
-></P
-><P
->The following is the PAM configuration file for a particular
-Linux system. The default condition uses <TT
-CLASS="FILENAME"
->pam_pwdb.so</TT
->.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#%PAM-1.0
-# The PAM configuration file for the `samba' service
-#
-auth required /lib/security/pam_pwdb.so nullok nodelay shadow audit
-account required /lib/security/pam_pwdb.so audit nodelay
-session required /lib/security/pam_pwdb.so nodelay
-password required /lib/security/pam_pwdb.so shadow md5</PRE
-></P
-><P
->In the following example the decision has been made to use the
-smbpasswd database even for basic samba authentication. Such a
-decision could also be made for the passwd program and would
-thus allow the smbpasswd passwords to be changed using the passwd
-program.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#%PAM-1.0
-# The PAM configuration file for the `samba' service
-#
-auth required /lib/security/pam_smbpass.so nodelay
-account required /lib/security/pam_pwdb.so audit nodelay
-session required /lib/security/pam_pwdb.so nodelay
-password required /lib/security/pam_smbpass.so nodelay smbconf=/etc/samba.d/smb.conf</PRE
-></P
-><P
->Note: PAM allows stacking of authentication mechanisms. It is
-also possible to pass information obtained within one PAM module through
-to the next module in the PAM stack. Please refer to the documentation for
-your particular system implementation for details regarding the specific
-capabilities of PAM in this environment. Some Linux implmentations also
-provide the <TT
-CLASS="FILENAME"
->pam_stack.so</TT
-> module that allows all
-authentication to be configured in a single central file. The
-<TT
-CLASS="FILENAME"
->pam_stack.so</TT
-> method has some very devoted followers
-on the basis that it allows for easier administration. As with all issues in
-life though, every decision makes trade-offs, so you may want examine the
-PAM documentation for further helpful information.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1820"
-></A
->12.2. Distributed Authentication</H2
-><P
->The astute administrator will realize from this that the
-combination of <TT
-CLASS="FILENAME"
->pam_smbpass.so</TT
->,
-<B
-CLASS="COMMAND"
->winbindd</B
->, and <B
-CLASS="COMMAND"
->rsync</B
-> (see
-<A
-HREF="http://rsync.samba.org/"
-TARGET="_top"
->http://rsync.samba.org/</A
->)
-will allow the establishment of a centrally managed, distributed
-user/password database that can also be used by all
-PAM (eg: Linux) aware programs and applications. This arrangement
-can have particularly potent advantages compared with the
-use of Microsoft Active Directory Service (ADS) in so far as
-reduction of wide area network authentication traffic.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1827"
-></A
->12.3. PAM Configuration in smb.conf</H2
-><P
->There is an option in smb.conf called <A
-HREF="smb.conf.5.html#OBEYPAMRESTRICTIONS"
-TARGET="_top"
->obey pam restrictions</A
->.
-The following is from the on-line help for this option in SWAT;</P
-><P
->When Samba 2.2 is configure to enable PAM support (i.e.
-<TT
-CLASS="CONSTANT"
->--with-pam</TT
->), this parameter will
-control whether or not Samba should obey PAM's account
-and session management directives. The default behavior
-is to use PAM for clear text authentication only and to
-ignore any account or session management. Note that Samba always
-ignores PAM for authentication in the case of
-<A
-HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
-TARGET="_top"
->encrypt passwords = yes</A
->.
-The reason is that PAM modules cannot support the challenge/response
-authentication mechanism needed in the presence of SMB
-password encryption. </P
-><P
->Default: <B
-CLASS="COMMAND"
->obey pam restrictions = no</B
-></P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="MSDFS"
-></A
->Chapter 13. Hosting a Microsoft Distributed File System tree on Samba</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1847"
-></A
->13.1. Instructions</H2
-><P
->The Distributed File System (or Dfs) provides a means of
- separating the logical view of files and directories that users
- see from the actual physical locations of these resources on the
- network. It allows for higher availability, smoother storage expansion,
- load balancing etc. For more information about Dfs, refer to <A
-HREF="http://www.microsoft.com/NTServer/nts/downloads/winfeatures/NTSDistrFile/AdminGuide.asp"
-TARGET="_top"
-> Microsoft documentation</A
->. </P
-><P
->This document explains how to host a Dfs tree on a Unix
- machine (for Dfs-aware clients to browse) using Samba.</P
-><P
->To enable SMB-based DFS for Samba, configure it with the
- <TT
-CLASS="PARAMETER"
-><I
->--with-msdfs</I
-></TT
-> option. Once built, a
- Samba server can be made a Dfs server by setting the global
- boolean <A
-HREF="smb.conf.5.html#HOSTMSDFS"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
-> host msdfs</I
-></TT
-></A
-> parameter in the <TT
-CLASS="FILENAME"
->smb.conf
- </TT
-> file. You designate a share as a Dfs root using the share
- level boolean <A
-HREF="smb.conf.5.html#MSDFSROOT"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
-> msdfs root</I
-></TT
-></A
-> parameter. A Dfs root directory on
- Samba hosts Dfs links in the form of symbolic links that point
- to other servers. For example, a symbolic link
- <TT
-CLASS="FILENAME"
->junction-&gt;msdfs:storage1\share1</TT
-> in
- the share directory acts as the Dfs junction. When Dfs-aware
- clients attempt to access the junction link, they are redirected
- to the storage location (in this case, \\storage1\share1).</P
-><P
->Dfs trees on Samba work with all Dfs-aware clients ranging
- from Windows 95 to 2000.</P
-><P
->Here's an example of setting up a Dfs tree on a Samba
- server.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-># The smb.conf file:
-[global]
- netbios name = SAMBA
- host msdfs = yes
-
-[dfs]
- path = /export/dfsroot
- msdfs root = yes
- </PRE
-></P
-><P
->In the /export/dfsroot directory we set up our dfs links to
- other servers on the network.</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->cd /export/dfsroot</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->chown root /export/dfsroot</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->chmod 755 /export/dfsroot</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->ln -s msdfs:storageA\\shareA linka</B
-></TT
-></P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><TT
-CLASS="USERINPUT"
-><B
->ln -s msdfs:serverB\\share,serverC\\share linkb</B
-></TT
-></P
-><P
->You should set up the permissions and ownership of
- the directory acting as the Dfs root such that only designated
- users can create, delete or modify the msdfs links. Also note
- that symlink names should be all lowercase. This limitation exists
- to have Samba avoid trying all the case combinations to get at
- the link name. Finally set up the symbolic links to point to the
- network shares you want, and start Samba.</P
-><P
->Users on Dfs-aware clients can now browse the Dfs tree
- on the Samba server at \\samba\dfs. Accessing
- links linka or linkb (which appear as directories to the client)
- takes users directly to the appropriate shares on the network.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1882"
-></A
->13.1.1. Notes</H3
-><P
-></P
-><UL
-><LI
-><P
->Windows clients need to be rebooted
- if a previously mounted non-dfs share is made a dfs
- root or vice versa. A better way is to introduce a
- new share and make it the dfs root.</P
-></LI
-><LI
-><P
->Currently there's a restriction that msdfs
- symlink names should all be lowercase.</P
-></LI
-><LI
-><P
->For security purposes, the directory
- acting as the root of the Dfs tree should have ownership
- and permissions set so that only designated users can
- modify the symbolic links in the directory.</P
-></LI
-></UL
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="PRINTING"
-></A
->Chapter 14. Printing Support</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN1908"
-></A
->14.1. Introduction</H2
-><P
->Beginning with the 2.2.0 release, Samba supports
-the native Windows NT printing mechanisms implemented via
-MS-RPC (i.e. the SPOOLSS named pipe). Previous versions of
-Samba only supported LanMan printing calls.</P
-><P
->The additional functionality provided by the new
-SPOOLSS support includes:</P
-><P
-></P
-><UL
-><LI
-><P
->Support for downloading printer driver
- files to Windows 95/98/NT/2000 clients upon demand.
- </P
-></LI
-><LI
-><P
->Uploading of printer drivers via the
- Windows NT Add Printer Wizard (APW) or the
- Imprints tool set (refer to <A
-HREF="http://imprints.sourceforge.net"
-TARGET="_top"
->http://imprints.sourceforge.net</A
->).
- </P
-></LI
-><LI
-><P
->Support for the native MS-RPC printing
- calls such as StartDocPrinter, EnumJobs(), etc... (See
- the MSDN documentation at <A
-HREF="http://msdn.microsoft.com/"
-TARGET="_top"
->http://msdn.microsoft.com/</A
->
- for more information on the Win32 printing API)
- </P
-></LI
-><LI
-><P
->Support for NT Access Control Lists (ACL)
- on printer objects</P
-></LI
-><LI
-><P
->Improved support for printer queue manipulation
- through the use of an internal databases for spooled job
- information</P
-></LI
-></UL
-><P
->There has been some initial confusion about what all this means
-and whether or not it is a requirement for printer drivers to be
-installed on a Samba host in order to support printing from Windows
-clients. As a side note, Samba does not use these drivers in any way to process
-spooled files. They are utilized entirely by the clients.</P
-><P
->The following MS KB article, may be of some help if you are dealing with
-Windows 2000 clients: <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->How to Add Printers with No User
-Interaction in Windows 2000</I
-></SPAN
-></P
-><P
-><A
-HREF="http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP"
-TARGET="_top"
->http://support.microsoft.com/support/kb/articles/Q189/1/05.ASP</A
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN1930"
-></A
->14.2. Configuration</H2
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->[print$] vs. [printer$]</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->Previous versions of Samba recommended using a share named [printer$].
-This name was taken from the printer$ service created by Windows 9x
-clients when a printer was shared. Windows 9x printer servers always have
-a printer$ service which provides read-only access via no
-password in order to support printer driver downloads.</P
-><P
->However, the initial implementation allowed for a
-parameter named <TT
-CLASS="PARAMETER"
-><I
->printer driver location</I
-></TT
->
-to be used on a per share basis to specify the location of
-the driver files associated with that printer. Another
-parameter named <TT
-CLASS="PARAMETER"
-><I
->printer driver</I
-></TT
-> provided
-a means of defining the printer driver name to be sent to
-the client.</P
-></TD
-></TR
-></TABLE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1938"
-></A
->14.2.1. Creating [print$]</H3
-><P
->In order to support the uploading of printer driver
-files, you must first configure a file share named [print$].
-The name of this share is hard coded in Samba's internals so
-the name is very important (print$ is the service used by
-Windows NT print servers to provide support for printer driver
-download).</P
-><P
->You should modify the server's smb.conf file to add the global
-parameters and to create the
-following file share (of course, some of the parameter values,
-such as 'path' are arbitrary and should be replaced with
-appropriate values for your site):</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[global]
- ; members of the ntadmin group should be able
- ; to add drivers and set printer properties
- ; root is implicitly a 'printer admin'
- printer admin = @ntadmin
-
-[print$]
- path = /usr/local/samba/printers
- guest ok = yes
- browseable = yes
- read only = yes
- ; since this share is configured as read only, then we need
- ; a 'write list'. Check the file system permissions to make
- ; sure this account can copy files to the share. If this
- ; is setup to a non-root account, then it should also exist
- ; as a 'printer admin'
- write list = @ntadmin,root</PRE
-></P
-><P
->The <A
-HREF="smb.conf.5.html#WRITELIST"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->write list</I
-></TT
-></A
-> is used to allow administrative
-level user accounts to have write access in order to update files
-on the share. See the <A
-HREF="smb.conf.5.html"
-TARGET="_top"
->smb.conf(5)
-man page</A
-> for more information on configuring file shares.</P
-><P
->The requirement for <A
-HREF="smb.conf.5.html#GUESTOK"
-TARGET="_top"
-><B
-CLASS="COMMAND"
->guest
-ok = yes</B
-></A
-> depends upon how your
-site is configured. If users will be guaranteed to have
-an account on the Samba host, then this is a non-issue.</P
-><DIV
-CLASS="NOTE"
-><P
-></P
-><TABLE
-CLASS="NOTE"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/note.gif"
-HSPACE="5"
-ALT="Note"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->Author's Note</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->The non-issue is that if all your Windows NT users are guaranteed to be
-authenticated by the Samba server (such as a domain member server and the NT
-user has already been validated by the Domain Controller in
-order to logon to the Windows NT console), then guest access
-is not necessary. Of course, in a workgroup environment where
-you just want to be able to print without worrying about
-silly accounts and security, then configure the share for
-guest access. You'll probably want to add <A
-HREF="smb.conf.5.html#MAPTOGUEST"
-TARGET="_top"
-><B
-CLASS="COMMAND"
->map to guest = Bad User</B
-></A
-> in the [global] section as well. Make sure
-you understand what this parameter does before using it
-though. --jerry</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->In order for a Windows NT print server to support
-the downloading of driver files by multiple client architectures,
-it must create subdirectories within the [print$] service
-which correspond to each of the supported client architectures.
-Samba follows this model as well.</P
-><P
->Next create the directory tree below the [print$] share
-for each architecture you wish to support.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[print$]-----
- |-W32X86 ; "Windows NT x86"
- |-WIN40 ; "Windows 95/98"
- |-W32ALPHA ; "Windows NT Alpha_AXP"
- |-W32MIPS ; "Windows NT R4000"
- |-W32PPC ; "Windows NT PowerPC"</PRE
-></P
-><DIV
-CLASS="WARNING"
-><P
-></P
-><TABLE
-CLASS="WARNING"
-WIDTH="100%"
-BORDER="0"
-><TR
-><TD
-WIDTH="25"
-ALIGN="CENTER"
-VALIGN="TOP"
-><IMG
-SRC="/docbook-dsssl/warning.gif"
-HSPACE="5"
-ALT="Warning"></TD
-><TH
-ALIGN="LEFT"
-VALIGN="CENTER"
-><B
->ATTENTION! REQUIRED PERMISSIONS</B
-></TH
-></TR
-><TR
-><TD
->&nbsp;</TD
-><TD
-ALIGN="LEFT"
-VALIGN="TOP"
-><P
->In order to currently add a new driver to you Samba host,
-one of two conditions must hold true:</P
-><P
-></P
-><UL
-><LI
-><P
->The account used to connect to the Samba host
- must have a uid of 0 (i.e. a root account)</P
-></LI
-><LI
-><P
->The account used to connect to the Samba host
- must be a member of the <A
-HREF="smb.conf.5.html#PRINTERADMIN"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->printer
- admin</I
-></TT
-></A
-> list.</P
-></LI
-></UL
-><P
->Of course, the connected account must still possess access
-to add files to the subdirectories beneath [print$]. Remember
-that all file shares are set to 'read only' by default.</P
-></TD
-></TR
-></TABLE
-></DIV
-><P
->Once you have created the required [print$] service and
-associated subdirectories, simply log onto the Samba server using
-a root (or <TT
-CLASS="PARAMETER"
-><I
->printer admin</I
-></TT
->) account
-from a Windows NT 4.0/2k client. Open "Network Neighbourhood" or
-"My Network Places" and browse for the Samba host. Once you have located
-the server, navigate to the "Printers..." folder.
-You should see an initial listing of printers
-that matches the printer shares defined on your Samba host.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1973"
-></A
->14.2.2. Setting Drivers for Existing Printers</H3
-><P
->The initial listing of printers in the Samba host's
-Printers folder will have no real printer driver assigned
-to them. This defaults to a NULL string to allow the use
-of the local Add Printer Wizard on NT/2000 clients.
-Attempting to view the printer properties for a printer
-which has this default driver assigned will result in
-the error message:</P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Device settings cannot be displayed. The driver
-for the specified printer is not installed, only spooler
-properties will be displayed. Do you want to install the
-driver now?</I
-></SPAN
-></P
-><P
->Click "No" in the error dialog and you will be presented with
-the printer properties window. The way to assign a driver to a
-printer is to either</P
-><P
-></P
-><UL
-><LI
-><P
->Use the "New Driver..." button to install
- a new printer driver, or</P
-></LI
-><LI
-><P
->Select a driver from the popup list of
- installed drivers. Initially this list will be empty.</P
-></LI
-></UL
-><P
->If you wish to install printer drivers for client
-operating systems other than "Windows NT x86", you will need
-to use the "Sharing" tab of the printer properties dialog.</P
-><P
->Assuming you have connected with a root account, you
-will also be able modify other printer properties such as
-ACLs and device settings using this dialog box.</P
-><P
->A few closing comments for this section, it is possible
-on a Windows NT print server to have printers
-listed in the Printers folder which are not shared. Samba does
-not make this distinction. By definition, the only printers of
-which Samba is aware are those which are specified as shares in
-<TT
-CLASS="FILENAME"
->smb.conf</TT
->.</P
-><P
->Another interesting side note is that Windows NT clients do
-not use the SMB printer share, but rather can print directly
-to any printer on another Windows NT host using MS-RPC. This
-of course assumes that the printing client has the necessary
-privileges on the remote host serving the printer. The default
-permissions assigned by Windows NT to a printer gives the "Print"
-permissions to the "Everyone" well-known group.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN1989"
-></A
->14.2.3. Support a large number of printers</H3
-><P
->One issue that has arisen during the development
-phase of Samba 2.2 is the need to support driver downloads for
-100's of printers. Using the Windows NT APW is somewhat
-awkward to say the list. If more than one printer are using the
-same driver, the <A
-HREF="rpcclient.1.html"
-TARGET="_top"
-><B
-CLASS="COMMAND"
->rpcclient's
-setdriver command</B
-></A
-> can be used to set the driver
-associated with an installed driver. The following is example
-of how this could be accomplished:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->
-<TT
-CLASS="PROMPT"
->$ </TT
->rpcclient pogo -U root%secret -c "enumdrivers"
-Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
-
-[Windows NT x86]
-Printer Driver Info 1:
- Driver Name: [HP LaserJet 4000 Series PS]
-
-Printer Driver Info 1:
- Driver Name: [HP LaserJet 2100 Series PS]
-
-Printer Driver Info 1:
- Driver Name: [HP LaserJet 4Si/4SiMX PS]
-
-<TT
-CLASS="PROMPT"
->$ </TT
->rpcclient pogo -U root%secret -c "enumprinters"
-Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
- flags:[0x800000]
- name:[\\POGO\hp-print]
- description:[POGO\\POGO\hp-print,NO DRIVER AVAILABLE FOR THIS PRINTER,]
- comment:[]
-
-<TT
-CLASS="PROMPT"
->$ </TT
->rpcclient pogo -U root%secret \
-<TT
-CLASS="PROMPT"
->&gt; </TT
-> -c "setdriver hp-print \"HP LaserJet 4000 Series PS\""
-Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3]
-Successfully set hp-print to driver HP LaserJet 4000 Series PS.</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2000"
-></A
->14.2.4. Adding New Printers via the Windows NT APW</H3
-><P
->By default, Samba offers all printer shares defined in <TT
-CLASS="FILENAME"
->smb.conf</TT
->
-in the "Printers..." folder. Also existing in this folder is the Windows NT
-Add Printer Wizard icon. The APW will be show only if</P
-><P
-></P
-><UL
-><LI
-><P
->The connected user is able to successfully
- execute an OpenPrinterEx(\\server) with administrative
- privileges (i.e. root or <TT
-CLASS="PARAMETER"
-><I
->printer admin</I
-></TT
->).
- </P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#SHOWADDPRINTERWIZARD"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->show
- add printer wizard = yes</I
-></TT
-></A
-> (the default).
- </P
-></LI
-></UL
-><P
->In order to be able to use the APW to successfully add a printer to a Samba
-server, the <A
-HREF="smb.conf.5.html#ADDPRINTERCOMMAND"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->add
-printer command</I
-></TT
-></A
-> must have a defined value. The program
-hook must successfully add the printer to the system (i.e.
-<TT
-CLASS="FILENAME"
->/etc/printcap</TT
-> or appropriate files) and
-<TT
-CLASS="FILENAME"
->smb.conf</TT
-> if necessary.</P
-><P
->When using the APW from a client, if the named printer share does
-not exist, <B
-CLASS="COMMAND"
->smbd</B
-> will execute the <TT
-CLASS="PARAMETER"
-><I
->add printer
-command</I
-></TT
-> and reparse to the <TT
-CLASS="FILENAME"
->smb.conf</TT
->
-to attempt to locate the new printer share. If the share is still not defined,
-an error of "Access Denied" is returned to the client. Note that the
-<TT
-CLASS="PARAMETER"
-><I
->add printer program</I
-></TT
-> is executed under the context
-of the connected user, not necessarily a root account.</P
-><P
->There is a complementary <A
-HREF="smb.conf.5.html#DELETEPRINTERCOMMAND"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->delete
-printer command</I
-></TT
-></A
-> for removing entries from the "Printers..."
-folder.</P
-><P
->The following is an example <A
-HREF="smb.conf.5.html#ADDPRINTERCOMMAN"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->add printer command</I
-></TT
-></A
-> script. It adds the appropriate entries to <TT
-CLASS="FILENAME"
->/etc/printcap.local</TT
-> (change that to what you need) and returns a line of 'Done' which is needed for the whole process to work.</P
-><PRE
-CLASS="PROGRAMLISTING"
->#!/bin/sh
-
-# Script to insert a new printer entry into printcap.local
-#
-# $1, printer name, used as the descriptive name
-# $2, share name, used as the printer name for Linux
-# $3, port name
-# $4, driver name
-# $5, location, used for the device file of the printer
-# $6, win9x location
-
-#
-# Make sure we use the location that RedHat uses for local printer defs
-PRINTCAP=/etc/printcap.local
-DATE=`date +%Y%m%d-%H%M%S`
-LP=lp
-RESTART="service lpd restart"
-
-# Keep a copy
-cp $PRINTCAP $PRINTCAP.$DATE
-# Add the printer to $PRINTCAP
-echo "" &#62;&#62; $PRINTCAP
-echo "$2|$1:\\" &#62;&#62; $PRINTCAP
-echo " :sd=/var/spool/lpd/$2:\\" &#62;&#62; $PRINTCAP
-echo " :mx=0:ml=0:sh:\\" &#62;&#62; $PRINTCAP
-echo " :lp=/usr/local/samba/var/print/$5.prn:" &#62;&#62; $PRINTCAP
-
-touch "/usr/local/samba/var/print/$5.prn" &#62;&#62; /tmp/printadd.$$ 2&#62;&#38;1
-chown $LP "/usr/local/samba/var/print/$5.prn" &#62;&#62; /tmp/printadd.$$ 2&#62;&#38;1
-
-mkdir /var/spool/lpd/$2
-chmod 700 /var/spool/lpd/$2
-chown $LP /var/spool/lpd/$2
-#echo $1 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-#echo $2 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-#echo $3 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-#echo $4 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-#echo $5 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-#echo $6 &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-$RESTART &#62;&#62; "/usr/local/samba/var/print/$5.prn"
-# Not sure if this is needed
-touch /usr/local/samba/lib/smb.conf
-#
-# You need to return a value, but I am not sure what it means.
-#
-echo "Done"
-exit 0</PRE
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2030"
-></A
->14.2.5. Samba and Printer Ports</H3
-><P
->Windows NT/2000 print servers associate a port with each printer. These normally
-take the form of LPT1:, COM1:, FILE:, etc... Samba must also support the
-concept of ports associated with a printer. By default, only one printer port,
-named "Samba Printer Port", exists on a system. Samba does not really a port in
-order to print, rather it is a requirement of Windows clients. </P
-><P
->Note that Samba does not support the concept of "Printer Pooling" internally
-either. This is when a logical printer is assigned to multiple ports as
-a form of load balancing or fail over.</P
-><P
->If you require that multiple ports be defined for some reason,
-<TT
-CLASS="FILENAME"
->smb.conf</TT
-> possesses a <A
-HREF="smb.conf.5.html#ENUMPORTSCOMMAND"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->enumports
-command</I
-></TT
-></A
-> which can be used to define an external program
-that generates a listing of ports on a system.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2038"
-></A
->14.3. The Imprints Toolset</H2
-><P
->The Imprints tool set provides a UNIX equivalent of the
- Windows NT Add Printer Wizard. For complete information, please
- refer to the Imprints web site at <A
-HREF="http://imprints.sourceforge.net/"
-TARGET="_top"
-> http://imprints.sourceforge.net/</A
-> as well as the documentation
- included with the imprints source distribution. This section will
- only provide a brief introduction to the features of Imprints.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2042"
-></A
->14.3.1. What is Imprints?</H3
-><P
->Imprints is a collection of tools for supporting the goals
- of</P
-><P
-></P
-><UL
-><LI
-><P
->Providing a central repository information
- regarding Windows NT and 95/98 printer driver packages</P
-></LI
-><LI
-><P
->Providing the tools necessary for creating
- the Imprints printer driver packages.</P
-></LI
-><LI
-><P
->Providing an installation client which
- will obtain and install printer drivers on remote Samba
- and Windows NT 4 print servers.</P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2052"
-></A
->14.3.2. Creating Printer Driver Packages</H3
-><P
->The process of creating printer driver packages is beyond
- the scope of this document (refer to Imprints.txt also included
- with the Samba distribution for more information). In short,
- an Imprints driver package is a gzipped tarball containing the
- driver files, related INF files, and a control file needed by the
- installation client.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2055"
-></A
->14.3.3. The Imprints server</H3
-><P
->The Imprints server is really a database server that
- may be queried via standard HTTP mechanisms. Each printer
- entry in the database has an associated URL for the actual
- downloading of the package. Each package is digitally signed
- via GnuPG which can be used to verify that package downloaded
- is actually the one referred in the Imprints database. It is
- <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->not</I
-></SPAN
-> recommended that this security check
- be disabled.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2059"
-></A
->14.3.4. The Installation Client</H3
-><P
->More information regarding the Imprints installation client
- is available in the <TT
-CLASS="FILENAME"
->Imprints-Client-HOWTO.ps</TT
->
- file included with the imprints source package.</P
-><P
->The Imprints installation client comes in two forms.</P
-><P
-></P
-><UL
-><LI
-><P
->a set of command line Perl scripts</P
-></LI
-><LI
-><P
->a GTK+ based graphical interface to
- the command line perl scripts</P
-></LI
-></UL
-><P
->The installation client (in both forms) provides a means
- of querying the Imprints database server for a matching
- list of known printer model names as well as a means to
- download and install the drivers on remote Samba and Windows
- NT print servers.</P
-><P
->The basic installation process is in four steps and
- perl code is wrapped around <B
-CLASS="COMMAND"
->smbclient</B
->
- and <B
-CLASS="COMMAND"
->rpcclient</B
->.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->
-foreach (supported architecture for a given driver)
-{
- 1. rpcclient: Get the appropriate upload directory
- on the remote server
- 2. smbclient: Upload the driver files
- 3. rpcclient: Issues an AddPrinterDriver() MS-RPC
-}
-
-4. rpcclient: Issue an AddPrinterEx() MS-RPC to actually
- create the printer</PRE
-></P
-><P
->One of the problems encountered when implementing
- the Imprints tool set was the name space issues between
- various supported client architectures. For example, Windows
- NT includes a driver named "Apple LaserWriter II NTX v51.8"
- and Windows 95 calls its version of this driver "Apple
- LaserWriter II NTX"</P
-><P
->The problem is how to know what client drivers have
- been uploaded for a printer. As astute reader will remember
- that the Windows NT Printer Properties dialog only includes
- space for one printer driver name. A quick look in the
- Windows NT 4.0 system registry at</P
-><P
-><TT
-CLASS="FILENAME"
->HKLM\System\CurrentControlSet\Control\Print\Environment
- </TT
-></P
-><P
->will reveal that Windows NT always uses the NT driver
- name. This is ok as Windows NT always requires that at least
- the Windows NT version of the printer driver is present.
- However, Samba does not have the requirement internally.
- Therefore, how can you use the NT driver name if is has not
- already been installed?</P
-><P
->The way of sidestepping this limitation is to require
- that all Imprints printer driver packages include both the Intel
- Windows NT and 95/98 printer drivers and that NT driver is
- installed first.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2081"
-></A
->14.4. Diagnosis</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN2083"
-></A
->14.4.1. Introduction</H3
-><P
->This is a short description of how to debug printing problems with
-Samba. This describes how to debug problems with printing from a SMB
-client to a Samba server, not the other way around. For the reverse
-see the examples/printing directory.</P
-><P
->Ok, so you want to print to a Samba server from your PC. The first
-thing you need to understand is that Samba does not actually do any
-printing itself, it just acts as a middleman between your PC client
-and your Unix printing subsystem. Samba receives the file from the PC
-then passes the file to a external "print command". What print command
-you use is up to you.</P
-><P
->The whole things is controlled using options in smb.conf. The most
-relevant options (which you should look up in the smb.conf man page)
-are:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> [global]
- print command - send a file to a spooler
- lpq command - get spool queue status
- lprm command - remove a job
- [printers]
- path = /var/spool/lpd/samba</PRE
-></P
-><P
->The following are nice to know about:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> queuepause command - stop a printer or print queue
- queueresume command - start a printer or print queue</PRE
-></P
-><P
->Example:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> print command = /usr/bin/lpr -r -P%p %s
- lpq command = /usr/bin/lpq -P%p %s
- lprm command = /usr/bin/lprm -P%p %j
- queuepause command = /usr/sbin/lpc -P%p stop
- queuepause command = /usr/sbin/lpc -P%p start</PRE
-></P
-><P
->Samba should set reasonable defaults for these depending on your
-system type, but it isn't clairvoyant. It is not uncommon that you
-have to tweak these for local conditions. The commands should
-always have fully specified pathnames, as the smdb may not have
-the correct PATH values.</P
-><P
->When you send a job to Samba to be printed, it will make a temporary
-copy of it in the directory specified in the [printers] section.
-and it should be periodically cleaned out. The lpr -r option
-requests that the temporary copy be removed after printing; If
-printing fails then you might find leftover files in this directory,
-and it should be periodically cleaned out. Samba used the lpq
-command to determine the "job number" assigned to your print job
-by the spooler.</P
-><P
->The %&gt;letter&lt; are "macros" that get dynamically replaced with appropriate
-values when they are used. The %s gets replaced with the name of the spool
-file that Samba creates and the %p gets replaced with the name of the
-printer. The %j gets replaced with the "job number" which comes from
-the lpq output.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2099"
-></A
->14.4.2. Debugging printer problems</H3
-><P
->One way to debug printing problems is to start by replacing these
-command with shell scripts that record the arguments and the contents
-of the print file. A simple example of this kind of things might
-be:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> print command = /tmp/saveprint %p %s
-
- #!/bin/saveprint
- # we make sure that we are the right user
- /usr/bin/id -p &#62;/tmp/tmp.print
- # we run the command and save the error messages
- # replace the command with the one appropriate for your system
- /usr/bin/lpr -r -P$1 $2 2&#62;&#62;&#38;/tmp/tmp.print</PRE
-></P
-><P
->Then you print a file and try removing it. You may find that the
-print queue needs to be stopped in order to see the queue status
-and remove the job:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->&#13;h4: {42} % echo hi &#62;/tmp/hi
-h4: {43} % smbclient //localhost/lw4
-added interface ip=10.0.0.4 bcast=10.0.0.255 nmask=255.255.255.0
-Password:
-Domain=[ASTART] OS=[Unix] Server=[Samba 2.0.7]
-smb: \&#62; print /tmp/hi
-putting file /tmp/hi as hi-17534 (0.0 kb/s) (average 0.0 kb/s)
-smb: \&#62; queue
-1049 3 hi-17534
-smb: \&#62; cancel 1049
-Error cancelling job 1049 : code 0
-smb: \&#62; cancel 1049
-Job 1049 cancelled
-smb: \&#62; queue
-smb: \&#62; exit</PRE
-></P
-><P
->The 'code 0' indicates that the job was removed. The comment
-by the smbclient is a bit misleading on this.
-You can observe the command output and then and look at the
-/tmp/tmp.print file to see what the results are. You can quickly
-find out if the problem is with your printing system. Often people
-have problems with their /etc/printcap file or permissions on
-various print queues.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2108"
-></A
->14.4.3. What printers do I have?</H3
-><P
->You can use the 'testprns' program to check to see if the printer
-name you are using is recognized by Samba. For example, you can
-use:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> testprns printer /etc/printcap</PRE
-></P
-><P
->Samba can get its printcap information from a file or from a program.
-You can try the following to see the format of the extracted
-information:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> testprns -a printer /etc/printcap
-
- testprns -a printer '|/bin/cat printcap'</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2116"
-></A
->14.4.4. Setting up printcap and print servers</H3
-><P
->You may need to set up some printcaps for your Samba system to use.
-It is strongly recommended that you use the facilities provided by
-the print spooler to set up queues and printcap information.</P
-><P
->Samba requires either a printcap or program to deliver printcap
-information. This printcap information has the format:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> name|alias1|alias2...:option=value:...</PRE
-></P
-><P
->For almost all printing systems, the printer 'name' must be composed
-only of alphanumeric or underscore '_' characters. Some systems also
-allow hyphens ('-') as well. An alias is an alternative name for the
-printer, and an alias with a space in it is used as a 'comment'
-about the printer. The printcap format optionally uses a \ at the end of lines
-to extend the printcap to multiple lines.</P
-><P
->Here are some examples of printcap files:</P
-><P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->pr just printer name</P
-></LI
-><LI
-><P
->pr|alias printer name and alias</P
-></LI
-><LI
-><P
->pr|My Printer printer name, alias used as comment</P
-></LI
-><LI
-><P
->pr:sh:\ Same as pr:sh:cm= testing
- :cm= \
- testing</P
-></LI
-><LI
-><P
->pr:sh Same as pr:sh:cm= testing
- :cm= testing</P
-></LI
-></OL
-></P
-><P
->Samba reads the printcap information when first started. If you make
-changes in the printcap information, then you must do the following:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->make sure that the print spooler is aware of these changes.
-The LPRng system uses the 'lpc reread' command to do this.</P
-></LI
-><LI
-><P
->make sure that the spool queues, etc., exist and have the
-correct permissions. The LPRng system uses the 'checkpc -f'
-command to do this.</P
-></LI
-><LI
-><P
->You now should send a SIGHUP signal to the smbd server to have
-it reread the printcap information.</P
-></LI
-></OL
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2144"
-></A
->14.4.5. Job sent, no output</H3
-><P
->This is the most frustrating part of printing. You may have sent the
-job, verified that the job was forwarded, set up a wrapper around
-the command to send the file, but there was no output from the printer.</P
-><P
->First, check to make sure that the job REALLY is getting to the
-right print queue. If you are using a BSD or LPRng print spooler,
-you can temporarily stop the printing of jobs. Jobs can still be
-submitted, but they will not be printed. Use:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> lpc -Pprinter stop</PRE
-></P
-><P
->Now submit a print job and then use 'lpq -Pprinter' to see if the
-job is in the print queue. If it is not in the print queue then
-you will have to find out why it is not being accepted for printing.</P
-><P
->Next, you may want to check to see what the format of the job really
-was. With the assistance of the system administrator you can view
-the submitted jobs files. You may be surprised to find that these
-are not in what you would expect to call a printable format.
-You can use the UNIX 'file' utitily to determine what the job
-format actually is:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> cd /var/spool/lpd/printer # spool directory of print jobs
- ls # find job files
- file dfA001myhost</PRE
-></P
-><P
->You should make sure that your printer supports this format OR that
-your system administrator has installed a 'print filter' that will
-convert the file to a format appropriate for your printer.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2155"
-></A
->14.4.6. Job sent, strange output</H3
-><P
->Once you have the job printing, you can then start worrying about
-making it print nicely.</P
-><P
->The most common problem is extra pages of output: banner pages
-OR blank pages at the end.</P
-><P
->If you are getting banner pages, check and make sure that the
-printcap option or printer option is configured for no banners.
-If you have a printcap, this is the :sh (suppress header or banner
-page) option. You should have the following in your printer.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> printer: ... :sh</PRE
-></P
-><P
->If you have this option and are still getting banner pages, there
-is a strong chance that your printer is generating them for you
-automatically. You should make sure that banner printing is disabled
-for the printer. This usually requires using the printer setup software
-or procedures supplied by the printer manufacturer.</P
-><P
->If you get an extra page of output, this could be due to problems
-with your job format, or if you are generating PostScript jobs,
-incorrect setting on your printer driver on the MicroSoft client.
-For example, under Win95 there is a option:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> Printers|Printer Name|(Right Click)Properties|Postscript|Advanced|</PRE
-></P
-><P
->that allows you to choose if a Ctrl-D is appended to all jobs.
-This is a very bad thing to do, as most spooling systems will
-automatically add a ^D to the end of the job if it is detected as
-PostScript. The multiple ^D may cause an additional page of output.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2167"
-></A
->14.4.7. Raw PostScript printed</H3
-><P
->This is a problem that is usually caused by either the print spooling
-system putting information at the start of the print job that makes
-the printer think the job is a text file, or your printer simply
-does not support PostScript. You may need to enable 'Automatic
-Format Detection' on your printer.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2170"
-></A
->14.4.8. Advanced Printing</H3
-><P
->Note that you can do some pretty magic things by using your
-imagination with the "print command" option and some shell scripts.
-Doing print accounting is easy by passing the %U option to a print
-command shell script. You could even make the print command detect
-the type of output and its size and send it to an appropriate
-printer.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2173"
-></A
->14.4.9. Real debugging</H3
-><P
->If the above debug tips don't help, then maybe you need to bring in
-the bug guns, system tracing. See Tracing.txt in this directory.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="SECURITYLEVELS"
-></A
->Chapter 15. Security levels</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2186"
-></A
->15.1. Introduction</H2
-><P
->Samba supports the following options to the global smb.conf parameter</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[global]
-<A
-HREF="smb.conf.5.html#SECURITY"
-TARGET="_top"
-><TT
-CLASS="PARAMETER"
-><I
->security</I
-></TT
-></A
-> = [share|user(default)|server|domain|ads]</PRE
-></P
-><P
->Please refer to the smb.conf man page for usage information and to the document
-<A
-HREF="DOMAIN_MEMBER.html"
-TARGET="_top"
->DOMAIN_MEMBER.html</A
-> for further background details
-on domain mode security. The Windows 2000 Kerberos domain security model
-(security = ads) is described in the <A
-HREF="ADS-HOWTO.html"
-TARGET="_top"
->ADS-HOWTO.html</A
->.</P
-><P
->Of the above, "security = server" means that Samba reports to clients that
-it is running in "user mode" but actually passes off all authentication
-requests to another "user mode" server. This requires an additional
-parameter "password server =" that points to the real authentication server.
-That real authentication server can be another Samba server or can be a
-Windows NT server, the later natively capable of encrypted password support.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2197"
-></A
->15.2. More complete description of security levels</H2
-><P
->A SMB server tells the client at startup what "security level" it is
-running. There are two options "share level" and "user level". Which
-of these two the client receives affects the way the client then tries
-to authenticate itself. It does not directly affect (to any great
-extent) the way the Samba server does security. I know this is
-strange, but it fits in with the client/server approach of SMB. In SMB
-everything is initiated and controlled by the client, and the server
-can only tell the client what is available and whether an action is
-allowed. </P
-><P
->I'll describe user level security first, as its simpler. In user level
-security the client will send a "session setup" command directly after
-the protocol negotiation. This contains a username and password. The
-server can either accept or reject that username/password
-combination. Note that at this stage the server has no idea what
-share the client will eventually try to connect to, so it can't base
-the "accept/reject" on anything other than:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->the username/password</P
-></LI
-><LI
-><P
->the machine that the client is coming from</P
-></LI
-></OL
-><P
->If the server accepts the username/password then the client expects to
-be able to mount any share (using a "tree connection") without
-specifying a password. It expects that all access rights will be as
-the username/password specified in the "session setup". </P
-><P
->It is also possible for a client to send multiple "session setup"
-requests. When the server responds it gives the client a "uid" to use
-as an authentication tag for that username/password. The client can
-maintain multiple authentication contexts in this way (WinDD is an
-example of an application that does this)</P
-><P
->Ok, now for share level security. In share level security the client
-authenticates itself separately for each share. It will send a
-password along with each "tree connection" (share mount). It does not
-explicitly send a username with this operation. The client is
-expecting a password to be associated with each share, independent of
-the user. This means that samba has to work out what username the
-client probably wants to use. It is never explicitly sent the
-username. Some commercial SMB servers such as NT actually associate
-passwords directly with shares in share level security, but samba
-always uses the unix authentication scheme where it is a
-username/password that is authenticated, not a "share/password".</P
-><P
->Many clients send a "session setup" even if the server is in share
-level security. They normally send a valid username but no
-password. Samba records this username in a list of "possible
-usernames". When the client then does a "tree connection" it also adds
-to this list the name of the share they try to connect to (useful for
-home directories) and any users listed in the "user =" smb.conf
-line. The password is then checked in turn against these "possible
-usernames". If a match is found then the client is authenticated as
-that user.</P
-><P
->Finally "server level" security. In server level security the samba
-server reports to the client that it is in user level security. The
-client then does a "session setup" as described earlier. The samba
-server takes the username/password that the client sends and attempts
-to login to the "password server" by sending exactly the same
-username/password that it got from the client. If that server is in
-user level security and accepts the password then samba accepts the
-clients connection. This allows the samba server to use another SMB
-server as the "password server". </P
-><P
->You should also note that at the very start of all this, where the
-server tells the client what security level it is in, it also tells
-the client if it supports encryption. If it does then it supplies the
-client with a random "cryptkey". The client will then send all
-passwords in encrypted form. You have to compile samba with encryption
-enabled to support this feature, and you have to maintain a separate
-smbpasswd file with SMB style encrypted passwords. It is
-cryptographically impossible to translate from unix style encryption
-to SMB style encryption, although there are some fairly simple management
-schemes by which the two could be kept in sync.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="WINBIND"
-></A
->Chapter 16. Unified Logons between Windows NT and UNIX using Winbind</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2249"
-></A
->16.1. Abstract</H2
-><P
->Integration of UNIX and Microsoft Windows NT through
- a unified logon has been considered a "holy grail" in heterogeneous
- computing environments for a long time. We present
- <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->winbind</I
-></SPAN
->, a component of the Samba suite
- of programs as a solution to the unified logon problem. Winbind
- uses a UNIX implementation
- of Microsoft RPC calls, Pluggable Authentication Modules, and the Name
- Service Switch to allow Windows NT domain users to appear and operate
- as UNIX users on a UNIX machine. This paper describes the winbind
- system, explaining the functionality it provides, how it is configured,
- and how it works internally.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2253"
-></A
->16.2. Introduction</H2
-><P
->It is well known that UNIX and Microsoft Windows NT have
- different models for representing user and group information and
- use different technologies for implementing them. This fact has
- made it difficult to integrate the two systems in a satisfactory
- manner.</P
-><P
->One common solution in use today has been to create
- identically named user accounts on both the UNIX and Windows systems
- and use the Samba suite of programs to provide file and print services
- between the two. This solution is far from perfect however, as
- adding and deleting users on both sets of machines becomes a chore
- and two sets of passwords are required both of which
- can lead to synchronization problems between the UNIX and Windows
- systems and confusion for users.</P
-><P
->We divide the unified logon problem for UNIX machines into
- three smaller problems:</P
-><P
-></P
-><UL
-><LI
-><P
->Obtaining Windows NT user and group information
- </P
-></LI
-><LI
-><P
->Authenticating Windows NT users
- </P
-></LI
-><LI
-><P
->Password changing for Windows NT users
- </P
-></LI
-></UL
-><P
->Ideally, a prospective solution to the unified logon problem
- would satisfy all the above components without duplication of
- information on the UNIX machines and without creating additional
- tasks for the system administrator when maintaining users and
- groups on either system. The winbind system provides a simple
- and elegant solution to all three components of the unified logon
- problem.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2266"
-></A
->16.3. What Winbind Provides</H2
-><P
->Winbind unifies UNIX and Windows NT account management by
- allowing a UNIX box to become a full member of a NT domain. Once
- this is done the UNIX box will see NT users and groups as if
- they were native UNIX users and groups, allowing the NT domain
- to be used in much the same manner that NIS+ is used within
- UNIX-only environments.</P
-><P
->The end result is that whenever any
- program on the UNIX machine asks the operating system to lookup
- a user or group name, the query will be resolved by asking the
- NT domain controller for the specified domain to do the lookup.
- Because Winbind hooks into the operating system at a low level
- (via the NSS name resolution modules in the C library) this
- redirection to the NT domain controller is completely
- transparent.</P
-><P
->Users on the UNIX machine can then use NT user and group
- names as they would use "native" UNIX names. They can chown files
- so that they are owned by NT domain users or even login to the
- UNIX machine and run a UNIX X-Window session as a domain user.</P
-><P
->The only obvious indication that Winbind is being used is
- that user and group names take the form DOMAIN\user and
- DOMAIN\group. This is necessary as it allows Winbind to determine
- that redirection to a domain controller is wanted for a particular
- lookup and which trusted domain is being referenced.</P
-><P
->Additionally, Winbind provides an authentication service
- that hooks into the Pluggable Authentication Modules (PAM) system
- to provide authentication via a NT domain to any PAM enabled
- applications. This capability solves the problem of synchronizing
- passwords between systems since all passwords are stored in a single
- location (on the domain controller).</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2273"
-></A
->16.3.1. Target Uses</H3
-><P
->Winbind is targeted at organizations that have an
- existing NT based domain infrastructure into which they wish
- to put UNIX workstations or servers. Winbind will allow these
- organizations to deploy UNIX workstations without having to
- maintain a separate account infrastructure. This greatly
- simplifies the administrative overhead of deploying UNIX
- workstations into a NT based organization.</P
-><P
->Another interesting way in which we expect Winbind to
- be used is as a central part of UNIX based appliances. Appliances
- that provide file and print services to Microsoft based networks
- will be able to use Winbind to provide seamless integration of
- the appliance into the domain.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2277"
-></A
->16.4. How Winbind Works</H2
-><P
->The winbind system is designed around a client/server
- architecture. A long running <B
-CLASS="COMMAND"
->winbindd</B
-> daemon
- listens on a UNIX domain socket waiting for requests
- to arrive. These requests are generated by the NSS and PAM
- clients and processed sequentially.</P
-><P
->The technologies used to implement winbind are described
- in detail below.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2282"
-></A
->16.4.1. Microsoft Remote Procedure Calls</H3
-><P
->Over the last two years, efforts have been underway
- by various Samba Team members to decode various aspects of
- the Microsoft Remote Procedure Call (MSRPC) system. This
- system is used for most network related operations between
- Windows NT machines including remote management, user authentication
- and print spooling. Although initially this work was done
- to aid the implementation of Primary Domain Controller (PDC)
- functionality in Samba, it has also yielded a body of code which
- can be used for other purposes.</P
-><P
->Winbind uses various MSRPC calls to enumerate domain users
- and groups and to obtain detailed information about individual
- users or groups. Other MSRPC calls can be used to authenticate
- NT domain users and to change user passwords. By directly querying
- a Windows PDC for user and group information, winbind maps the
- NT account information onto UNIX user and group names.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2286"
-></A
->16.4.2. Name Service Switch</H3
-><P
->The Name Service Switch, or NSS, is a feature that is
- present in many UNIX operating systems. It allows system
- information such as hostnames, mail aliases and user information
- to be resolved from different sources. For example, a standalone
- UNIX workstation may resolve system information from a series of
- flat files stored on the local filesystem. A networked workstation
- may first attempt to resolve system information from local files,
- and then consult a NIS database for user information or a DNS server
- for hostname information.</P
-><P
->The NSS application programming interface allows winbind
- to present itself as a source of system information when
- resolving UNIX usernames and groups. Winbind uses this interface,
- and information obtained from a Windows NT server using MSRPC
- calls to provide a new source of account enumeration. Using standard
- UNIX library calls, one can enumerate the users and groups on
- a UNIX machine running winbind and see all users and groups in
- a NT domain plus any trusted domain as though they were local
- users and groups.</P
-><P
->The primary control file for NSS is
- <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
->.
- When a UNIX application makes a request to do a lookup
- the C library looks in <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
->
- for a line which matches the service type being requested, for
- example the "passwd" service type is used when user or group names
- are looked up. This config line species which implementations
- of that service should be tried and in what order. If the passwd
- config line is:</P
-><P
-><B
-CLASS="COMMAND"
->passwd: files example</B
-></P
-><P
->then the C library will first load a module called
- <TT
-CLASS="FILENAME"
->/lib/libnss_files.so</TT
-> followed by
- the module <TT
-CLASS="FILENAME"
->/lib/libnss_example.so</TT
->. The
- C library will dynamically load each of these modules in turn
- and call resolver functions within the modules to try to resolve
- the request. Once the request is resolved the C library returns the
- result to the application.</P
-><P
->This NSS interface provides a very easy way for Winbind
- to hook into the operating system. All that needs to be done
- is to put <TT
-CLASS="FILENAME"
->libnss_winbind.so</TT
-> in <TT
-CLASS="FILENAME"
->/lib/</TT
->
- then add "winbind" into <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-> at
- the appropriate place. The C library will then call Winbind to
- resolve user and group names.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2302"
-></A
->16.4.3. Pluggable Authentication Modules</H3
-><P
->Pluggable Authentication Modules, also known as PAM,
- is a system for abstracting authentication and authorization
- technologies. With a PAM module it is possible to specify different
- authentication methods for different system applications without
- having to recompile these applications. PAM is also useful
- for implementing a particular policy for authorization. For example,
- a system administrator may only allow console logins from users
- stored in the local password file but only allow users resolved from
- a NIS database to log in over the network.</P
-><P
->Winbind uses the authentication management and password
- management PAM interface to integrate Windows NT users into a
- UNIX system. This allows Windows NT users to log in to a UNIX
- machine and be authenticated against a suitable Primary Domain
- Controller. These users can also change their passwords and have
- this change take effect directly on the Primary Domain Controller.
- </P
-><P
->PAM is configured by providing control files in the directory
- <TT
-CLASS="FILENAME"
->/etc/pam.d/</TT
-> for each of the services that
- require authentication. When an authentication request is made
- by an application the PAM code in the C library looks up this
- control file to determine what modules to load to do the
- authentication check and in what order. This interface makes adding
- a new authentication service for Winbind very easy, all that needs
- to be done is that the <TT
-CLASS="FILENAME"
->pam_winbind.so</TT
-> module
- is copied to <TT
-CLASS="FILENAME"
->/lib/security/</TT
-> and the PAM
- control files for relevant services are updated to allow
- authentication via winbind. See the PAM documentation
- for more details.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2310"
-></A
->16.4.4. User and Group ID Allocation</H3
-><P
->When a user or group is created under Windows NT
- is it allocated a numerical relative identifier (RID). This is
- slightly different to UNIX which has a range of numbers that are
- used to identify users, and the same range in which to identify
- groups. It is winbind's job to convert RIDs to UNIX id numbers and
- vice versa. When winbind is configured it is given part of the UNIX
- user id space and a part of the UNIX group id space in which to
- store Windows NT users and groups. If a Windows NT user is
- resolved for the first time, it is allocated the next UNIX id from
- the range. The same process applies for Windows NT groups. Over
- time, winbind will have mapped all Windows NT users and groups
- to UNIX user ids and group ids.</P
-><P
->The results of this mapping are stored persistently in
- an ID mapping database held in a tdb database). This ensures that
- RIDs are mapped to UNIX IDs in a consistent way.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2314"
-></A
->16.4.5. Result Caching</H3
-><P
->An active system can generate a lot of user and group
- name lookups. To reduce the network cost of these lookups winbind
- uses a caching scheme based on the SAM sequence number supplied
- by NT domain controllers. User or group information returned
- by a PDC is cached by winbind along with a sequence number also
- returned by the PDC. This sequence number is incremented by
- Windows NT whenever any user or group information is modified. If
- a cached entry has expired, the sequence number is requested from
- the PDC and compared against the sequence number of the cached entry.
- If the sequence numbers do not match, then the cached information
- is discarded and up to date information is requested directly
- from the PDC.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2317"
-></A
->16.5. Installation and Configuration</H2
-><P
->Many thanks to John Trostel <A
-HREF="mailto:jtrostel@snapserver.com"
-TARGET="_top"
->jtrostel@snapserver.com</A
->
-for providing the HOWTO for this section.</P
-><P
->This HOWTO describes how to get winbind services up and running
-to control access and authenticate users on your Linux box using
-the winbind services which come with SAMBA 2.2.2.</P
-><P
->There is also some Solaris specific information in
-<TT
-CLASS="FILENAME"
->docs/textdocs/Solaris-Winbind-HOWTO.txt</TT
->.
-Future revisions of this document will incorporate that
-information.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2324"
-></A
->16.5.1. Introduction</H3
-><P
->This HOWTO describes the procedures used to get winbind up and
-running on my RedHat 7.1 system. Winbind is capable of providing access
-and authentication control for Windows Domain users through an NT
-or Win2K PDC for 'regular' services, such as telnet a nd ftp, as
-well for SAMBA services.</P
-><P
->This HOWTO has been written from a 'RedHat-centric' perspective, so if
-you are using another distribution, you may have to modify the instructions
-somewhat to fit the way your distribution works.</P
-><P
-></P
-><UL
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Why should I to this?</I
-></SPAN
->
- </P
-><P
->This allows the SAMBA administrator to rely on the
- authentication mechanisms on the NT/Win2K PDC for the authentication
- of domain members. NT/Win2K users no longer need to have separate
- accounts on the SAMBA server.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Who should be reading this document?</I
-></SPAN
->
- </P
-><P
-> This HOWTO is designed for system administrators. If you are
- implementing SAMBA on a file server and wish to (fairly easily)
- integrate existing NT/Win2K users from your PDC onto the
- SAMBA server, this HOWTO is for you. That said, I am no NT or PAM
- expert, so you may find a better or easier way to accomplish
- these tasks.
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2337"
-></A
->16.5.2. Requirements</H3
-><P
->If you have a samba configuration file that you are currently
-using... <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->BACK IT UP!</I
-></SPAN
-> If your system already uses PAM,
-<SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->back up the <TT
-CLASS="FILENAME"
->/etc/pam.d</TT
-> directory
-contents!</I
-></SPAN
-> If you haven't already made a boot disk,
-<SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->MAKE ONE NOW!</I
-></SPAN
-></P
-><P
->Messing with the pam configuration files can make it nearly impossible
-to log in to yourmachine. That's why you want to be able to boot back
-into your machine in single user mode and restore your
-<TT
-CLASS="FILENAME"
->/etc/pam.d</TT
-> back to the original state they were in if
-you get frustrated with the way things are going. ;-)</P
-><P
->The latest version of SAMBA (version 3.0 as of this writing), now
-includes a functioning winbindd daemon. Please refer to the
-<A
-HREF="http://samba.org/"
-TARGET="_top"
->main SAMBA web page</A
-> or,
-better yet, your closest SAMBA mirror site for instructions on
-downloading the source code.</P
-><P
->To allow Domain users the ability to access SAMBA shares and
-files, as well as potentially other services provided by your
-SAMBA machine, PAM (pluggable authentication modules) must
-be setup properly on your machine. In order to compile the
-winbind modules, you should have at least the pam libraries resident
-on your system. For recent RedHat systems (7.1, for instance), that
-means <TT
-CLASS="FILENAME"
->pam-0.74-22</TT
->. For best results, it is helpful to also
-install the development packages in <TT
-CLASS="FILENAME"
->pam-devel-0.74-22</TT
->.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2351"
-></A
->16.5.3. Testing Things Out</H3
-><P
->Before starting, it is probably best to kill off all the SAMBA
-related daemons running on your server. Kill off all <B
-CLASS="COMMAND"
->smbd</B
->,
-<B
-CLASS="COMMAND"
->nmbd</B
->, and <B
-CLASS="COMMAND"
->winbindd</B
-> processes that may
-be running. To use PAM, you will want to make sure that you have the
-standard PAM package (for RedHat) which supplies the <TT
-CLASS="FILENAME"
->/etc/pam.d</TT
->
-directory structure, including the pam modules are used by pam-aware
-services, several pam libraries, and the <TT
-CLASS="FILENAME"
->/usr/doc</TT
->
-and <TT
-CLASS="FILENAME"
->/usr/man</TT
-> entries for pam. Winbind built better
-in SAMBA if the pam-devel package was also installed. This package includes
-the header files needed to compile pam-aware applications. For instance,
-my RedHat system has both <TT
-CLASS="FILENAME"
->pam-0.74-22</TT
-> and
-<TT
-CLASS="FILENAME"
->pam-devel-0.74-22</TT
-> RPMs installed.</P
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2362"
-></A
->16.5.3.1. Configure and compile SAMBA</H4
-><P
->The configuration and compilation of SAMBA is pretty straightforward.
-The first three steps may not be necessary depending upon
-whether or not you have previously built the Samba binaries.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->autoconf</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->make clean</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->rm config.cache</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->./configure --with-winbind</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->make</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->make install</B
-></PRE
-></P
-><P
->This will, by default, install SAMBA in <TT
-CLASS="FILENAME"
->/usr/local/samba</TT
->.
-See the main SAMBA documentation if you want to install SAMBA somewhere else.
-It will also build the winbindd executable and libraries. </P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2381"
-></A
->16.5.3.2. Configure <TT
-CLASS="FILENAME"
->nsswitch.conf</TT
-> and the
-winbind libraries</H4
-><P
->The libraries needed to run the <B
-CLASS="COMMAND"
->winbindd</B
-> daemon
-through nsswitch need to be copied to their proper locations, so</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->cp ../samba/source/nsswitch/libnss_winbind.so /lib</B
-></P
-><P
->I also found it necessary to make the following symbolic link:</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2</B
-></P
-><P
->And, in the case of Sun solaris:</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->ln -s /usr/lib/libnss_winbind.so /usr/lib/libnss_winbind.so.1</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->ln -s /usr/lib/libnss_winbind.so /usr/lib/nss_winbind.so.1</B
->
-<TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->ln -s /usr/lib/libnss_winbind.so /usr/lib/nss_winbind.so.2</B
-></P
-><P
->Now, as root you need to edit <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-> to
-allow user and group entries to be visible from the <B
-CLASS="COMMAND"
->winbindd</B
->
-daemon. My <TT
-CLASS="FILENAME"
->/etc/nsswitch.conf</TT
-> file look like
-this after editing:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> passwd: files winbind
- shadow: files
- group: files winbind</PRE
-></P
-><P
->
-The libraries needed by the winbind daemon will be automatically
-entered into the <B
-CLASS="COMMAND"
->ldconfig</B
-> cache the next time
-your system reboots, but it
-is faster (and you don't need to reboot) if you do it manually:</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->/sbin/ldconfig -v | grep winbind</B
-></P
-><P
->This makes <TT
-CLASS="FILENAME"
->libnss_winbind</TT
-> available to winbindd
-and echos back a check to you.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2414"
-></A
->16.5.3.3. Configure smb.conf</H4
-><P
->Several parameters are needed in the smb.conf file to control
-the behavior of <B
-CLASS="COMMAND"
->winbindd</B
->. Configure
-<TT
-CLASS="FILENAME"
->smb.conf</TT
-> These are described in more detail in
-the <A
-HREF="winbindd.8.html"
-TARGET="_top"
->winbindd(8)</A
-> man page. My
-<TT
-CLASS="FILENAME"
->smb.conf</TT
-> file was modified to
-include the following entries in the [global] section:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->[global]
- &#60;...&#62;
- # separate domain and username with '+', like DOMAIN+username
- <A
-HREF="winbindd.8.html#WINBINDSEPARATOR"
-TARGET="_top"
->winbind separator</A
-> = +
- # use uids from 10000 to 20000 for domain users
- <A
-HREF="winbindd.8.html#WINBINDUID"
-TARGET="_top"
->winbind uid</A
-> = 10000-20000
- # use gids from 10000 to 20000 for domain groups
- <A
-HREF="winbindd.8.html#WINBINDGID"
-TARGET="_top"
->winbind gid</A
-> = 10000-20000
- # allow enumeration of winbind users and groups
- <A
-HREF="winbindd.8.html#WINBINDENUMUSERS"
-TARGET="_top"
->winbind enum users</A
-> = yes
- <A
-HREF="winbindd.8.html#WINBINDENUMGROUP"
-TARGET="_top"
->winbind enum groups</A
-> = yes
- # give winbind users a real shell (only needed if they have telnet access)
- <A
-HREF="winbindd.8.html#TEMPLATEHOMEDIR"
-TARGET="_top"
->template homedir</A
-> = /home/winnt/%D/%U
- <A
-HREF="winbindd.8.html#TEMPLATESHELL"
-TARGET="_top"
->template shell</A
-> = /bin/bash</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2430"
-></A
->16.5.3.4. Join the SAMBA server to the PDC domain</H4
-><P
->Enter the following command to make the SAMBA server join the
-PDC domain, where <TT
-CLASS="REPLACEABLE"
-><I
->DOMAIN</I
-></TT
-> is the name of
-your Windows domain and <TT
-CLASS="REPLACEABLE"
-><I
->Administrator</I
-></TT
-> is
-a domain user who has administrative privileges in the domain.</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->/usr/local/samba/bin/net rpc join -S PDC -U Administrator</B
-></P
-><P
->The proper response to the command should be: "Joined the domain
-<TT
-CLASS="REPLACEABLE"
-><I
->DOMAIN</I
-></TT
->" where <TT
-CLASS="REPLACEABLE"
-><I
->DOMAIN</I
-></TT
->
-is your DOMAIN name.</P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2441"
-></A
->16.5.3.5. Start up the winbindd daemon and test it!</H4
-><P
->Eventually, you will want to modify your smb startup script to
-automatically invoke the winbindd daemon when the other parts of
-SAMBA start, but it is possible to test out just the winbind
-portion first. To start up winbind services, enter the following
-command as root:</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->/usr/local/samba/bin/winbindd</B
-></P
-><P
->I'm always paranoid and like to make sure the daemon
-is really running...</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->ps -ae | grep winbindd</B
-></P
-><P
->This command should produce output like this, if the daemon is running</P
-><P
->3025 ? 00:00:00 winbindd</P
-><P
->Now... for the real test, try to get some information about the
-users on your PDC</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->/usr/local/samba/bin/wbinfo -u</B
-></P
-><P
->
-This should echo back a list of users on your Windows users on
-your PDC. For example, I get the following response:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->CEO+Administrator
-CEO+burdell
-CEO+Guest
-CEO+jt-ad
-CEO+krbtgt
-CEO+TsInternetUser</PRE
-></P
-><P
->Obviously, I have named my domain 'CEO' and my <TT
-CLASS="PARAMETER"
-><I
->winbind
-separator</I
-></TT
-> is '+'.</P
-><P
->You can do the same sort of thing to get group information from
-the PDC:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->/usr/local/samba/bin/wbinfo -g</B
->
-CEO+Domain Admins
-CEO+Domain Users
-CEO+Domain Guests
-CEO+Domain Computers
-CEO+Domain Controllers
-CEO+Cert Publishers
-CEO+Schema Admins
-CEO+Enterprise Admins
-CEO+Group Policy Creator Owners</PRE
-></P
-><P
->The function 'getent' can now be used to get unified
-lists of both local and PDC users and groups.
-Try the following command:</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->getent passwd</B
-></P
-><P
->You should get a list that looks like your <TT
-CLASS="FILENAME"
->/etc/passwd</TT
->
-list followed by the domain users with their new uids, gids, home
-directories and default shells.</P
-><P
->The same thing can be done for groups with the command</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->getent group</B
-></P
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2477"
-></A
->16.5.3.6. Fix the init.d startup scripts</H4
-><DIV
-CLASS="SECT4"
-><H5
-CLASS="SECT4"
-><A
-NAME="AEN2479"
-></A
->16.5.3.6.1. Linux</H5
-><P
->The <B
-CLASS="COMMAND"
->winbindd</B
-> daemon needs to start up after the
-<B
-CLASS="COMMAND"
->smbd</B
-> and <B
-CLASS="COMMAND"
->nmbd</B
-> daemons are running.
-To accomplish this task, you need to modify the startup scripts of your system. They are located at <TT
-CLASS="FILENAME"
->/etc/init.d/smb</TT
-> in RedHat and
-<TT
-CLASS="FILENAME"
->/etc/init.d/samba</TT
-> in Debian.
-script to add commands to invoke this daemon in the proper sequence. My
-startup script starts up <B
-CLASS="COMMAND"
->smbd</B
->,
-<B
-CLASS="COMMAND"
->nmbd</B
->, and <B
-CLASS="COMMAND"
->winbindd</B
-> from the
-<TT
-CLASS="FILENAME"
->/usr/local/samba/bin</TT
-> directory directly. The 'start'
-function in the script looks like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->start() {
- KIND="SMB"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/smbd $SMBDOPTIONS
- RETVAL=$?
- echo
- KIND="NMB"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/nmbd $NMBDOPTIONS
- RETVAL2=$?
- echo
- KIND="Winbind"
- echo -n $"Starting $KIND services: "
- daemon /usr/local/samba/bin/winbindd
- RETVAL3=$?
- echo
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &#38;&#38; touch /var/lock/subsys/smb || \
- RETVAL=1
- return $RETVAL
-}</PRE
-></P
-><P
->The 'stop' function has a corresponding entry to shut down the
-services and look s like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->stop() {
- KIND="SMB"
- echo -n $"Shutting down $KIND services: "
- killproc smbd
- RETVAL=$?
- echo
- KIND="NMB"
- echo -n $"Shutting down $KIND services: "
- killproc nmbd
- RETVAL2=$?
- echo
- KIND="Winbind"
- echo -n $"Shutting down $KIND services: "
- killproc winbindd
- RETVAL3=$?
- [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 -a $RETVAL3 -eq 0 ] &#38;&#38; rm -f /var/lock/subsys/smb
- echo ""
- return $RETVAL
-}</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT4"
-><HR><H5
-CLASS="SECT4"
-><A
-NAME="AEN2496"
-></A
->16.5.3.6.2. Solaris</H5
-><P
->On solaris, you need to modify the
-<TT
-CLASS="FILENAME"
->/etc/init.d/samba.server</TT
-> startup script. It usually
-only starts smbd and nmbd but should now start winbindd too. If you
-have samba installed in <TT
-CLASS="FILENAME"
->/usr/local/samba/bin</TT
->,
-the file could contains something like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->##
-## samba.server
-##
-
-if [ ! -d /usr/bin ]
-then # /usr not mounted
- exit
-fi
-
-killproc() { # kill the named process(es)
- pid=`/usr/bin/ps -e |
- /usr/bin/grep -w $1 |
- /usr/bin/sed -e 's/^ *//' -e 's/ .*//'`
- [ "$pid" != "" ] &#38;&#38; kill $pid
-}
-
-# Start/stop processes required for samba server
-
-case "$1" in
-
-'start')
-#
-# Edit these lines to suit your installation (paths, workgroup, host)
-#
-echo Starting SMBD
- /usr/local/samba/bin/smbd -D -s \
- /usr/local/samba/smb.conf
-
-echo Starting NMBD
- /usr/local/samba/bin/nmbd -D -l \
- /usr/local/samba/var/log -s /usr/local/samba/smb.conf
-
-echo Starting Winbind Daemon
- /usr/local/samba/bin/winbindd
- ;;
-
-'stop')
- killproc nmbd
- killproc smbd
- killproc winbindd
- ;;
-
-*)
- echo "Usage: /etc/init.d/samba.server { start | stop }"
- ;;
-esac</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT4"
-><HR><H5
-CLASS="SECT4"
-><A
-NAME="AEN2503"
-></A
->16.5.3.6.3. Restarting</H5
-><P
->If you restart the <B
-CLASS="COMMAND"
->smbd</B
->, <B
-CLASS="COMMAND"
->nmbd</B
->,
-and <B
-CLASS="COMMAND"
->winbindd</B
-> daemons at this point, you
-should be able to connect to the samba server as a domain member just as
-if you were a local user.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT3"
-><HR><H4
-CLASS="SECT3"
-><A
-NAME="AEN2509"
-></A
->16.5.3.7. Configure Winbind and PAM</H4
-><P
->If you have made it this far, you know that winbindd and samba are working
-together. If you want to use winbind to provide authentication for other
-services, keep reading. The pam configuration files need to be altered in
-this step. (Did you remember to make backups of your original
-<TT
-CLASS="FILENAME"
->/etc/pam.d</TT
-> files? If not, do it now.)</P
-><P
->You will need a pam module to use winbindd with these other services. This
-module will be compiled in the <TT
-CLASS="FILENAME"
->../source/nsswitch</TT
-> directory
-by invoking the command</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->make nsswitch/pam_winbind.so</B
-></P
-><P
->from the <TT
-CLASS="FILENAME"
->../source</TT
-> directory. The
-<TT
-CLASS="FILENAME"
->pam_winbind.so</TT
-> file should be copied to the location of
-your other pam security modules. On my RedHat system, this was the
-<TT
-CLASS="FILENAME"
->/lib/security</TT
-> directory. On Solaris, the pam security
-modules reside in <TT
-CLASS="FILENAME"
->/usr/lib/security</TT
->.</P
-><P
-><TT
-CLASS="PROMPT"
->root#</TT
-> <B
-CLASS="COMMAND"
->cp ../samba/source/nsswitch/pam_winbind.so /lib/security</B
-></P
-><DIV
-CLASS="SECT4"
-><HR><H5
-CLASS="SECT4"
-><A
-NAME="AEN2526"
-></A
->16.5.3.7.1. Linux/FreeBSD-specific PAM configuration</H5
-><P
->The <TT
-CLASS="FILENAME"
->/etc/pam.d/samba</TT
-> file does not need to be changed. I
-just left this fileas it was:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->auth required /lib/security/pam_stack.so service=system-auth
-account required /lib/security/pam_stack.so service=system-auth</PRE
-></P
-><P
->The other services that I modified to allow the use of winbind
-as an authentication service were the normal login on the console (or a terminal
-session), telnet logins, and ftp service. In order to enable these
-services, you may first need to change the entries in
-<TT
-CLASS="FILENAME"
->/etc/xinetd.d</TT
-> (or <TT
-CLASS="FILENAME"
->/etc/inetd.conf</TT
->).
-RedHat 7.1 uses the new xinetd.d structure, in this case you need
-to change the lines in <TT
-CLASS="FILENAME"
->/etc/xinetd.d/telnet</TT
->
-and <TT
-CLASS="FILENAME"
->/etc/xinetd.d/wu-ftp</TT
-> from </P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->enable = no</PRE
-></P
-><P
->to</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->enable = yes</PRE
-></P
-><P
->
-For ftp services to work properly, you will also need to either
-have individual directories for the domain users already present on
-the server, or change the home directory template to a general
-directory for all domain users. These can be easily set using
-the <TT
-CLASS="FILENAME"
->smb.conf</TT
-> global entry
-<B
-CLASS="COMMAND"
->template homedir</B
->.</P
-><P
->The <TT
-CLASS="FILENAME"
->/etc/pam.d/ftp</TT
-> file can be changed
-to allow winbind ftp access in a manner similar to the
-samba file. My <TT
-CLASS="FILENAME"
->/etc/pam.d/ftp</TT
-> file was
-changed to look like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
-auth sufficient /lib/security/pam_winbind.so
-auth required /lib/security/pam_stack.so service=system-auth
-auth required /lib/security/pam_shells.so
-account sufficient /lib/security/pam_winbind.so
-account required /lib/security/pam_stack.so service=system-auth
-session required /lib/security/pam_stack.so service=system-auth</PRE
-></P
-><P
->The <TT
-CLASS="FILENAME"
->/etc/pam.d/login</TT
-> file can be changed nearly the
-same way. It now looks like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->auth required /lib/security/pam_securetty.so
-auth sufficient /lib/security/pam_winbind.so
-auth sufficient /lib/security/pam_unix.so use_first_pass
-auth required /lib/security/pam_stack.so service=system-auth
-auth required /lib/security/pam_nologin.so
-account sufficient /lib/security/pam_winbind.so
-account required /lib/security/pam_stack.so service=system-auth
-password required /lib/security/pam_stack.so service=system-auth
-session required /lib/security/pam_stack.so service=system-auth
-session optional /lib/security/pam_console.so</PRE
-></P
-><P
->In this case, I added the <B
-CLASS="COMMAND"
->auth sufficient /lib/security/pam_winbind.so</B
->
-lines as before, but also added the <B
-CLASS="COMMAND"
->required pam_securetty.so</B
->
-above it, to disallow root logins over the network. I also added a
-<B
-CLASS="COMMAND"
->sufficient /lib/security/pam_unix.so use_first_pass</B
->
-line after the <B
-CLASS="COMMAND"
->winbind.so</B
-> line to get rid of annoying
-double prompts for passwords.</P
-></DIV
-><DIV
-CLASS="SECT4"
-><HR><H5
-CLASS="SECT4"
-><A
-NAME="AEN2559"
-></A
->16.5.3.7.2. Solaris-specific configuration</H5
-><P
->The /etc/pam.conf needs to be changed. I changed this file so that my Domain
-users can logon both locally as well as telnet.The following are the changes
-that I made.You can customize the pam.conf file as per your requirements,but
-be sure of those changes because in the worst case it will leave your system
-nearly impossible to boot.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#
-#ident "@(#)pam.conf 1.14 99/09/16 SMI"
-#
-# Copyright (c) 1996-1999, Sun Microsystems, Inc.
-# All Rights Reserved.
-#
-# PAM configuration
-#
-# Authentication management
-#
-login auth required /usr/lib/security/pam_winbind.so
-login auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-login auth required /usr/lib/security/$ISA/pam_dial_auth.so.1 try_first_pass
-#
-rlogin auth sufficient /usr/lib/security/pam_winbind.so
-rlogin auth sufficient /usr/lib/security/$ISA/pam_rhosts_auth.so.1
-rlogin auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-#
-dtlogin auth sufficient /usr/lib/security/pam_winbind.so
-dtlogin auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-#
-rsh auth required /usr/lib/security/$ISA/pam_rhosts_auth.so.1
-other auth sufficient /usr/lib/security/pam_winbind.so
-other auth required /usr/lib/security/$ISA/pam_unix.so.1 try_first_pass
-#
-# Account management
-#
-login account sufficient /usr/lib/security/pam_winbind.so
-login account requisite /usr/lib/security/$ISA/pam_roles.so.1
-login account required /usr/lib/security/$ISA/pam_unix.so.1
-#
-dtlogin account sufficient /usr/lib/security/pam_winbind.so
-dtlogin account requisite /usr/lib/security/$ISA/pam_roles.so.1
-dtlogin account required /usr/lib/security/$ISA/pam_unix.so.1
-#
-other account sufficient /usr/lib/security/pam_winbind.so
-other account requisite /usr/lib/security/$ISA/pam_roles.so.1
-other account required /usr/lib/security/$ISA/pam_unix.so.1
-#
-# Session management
-#
-other session required /usr/lib/security/$ISA/pam_unix.so.1
-#
-# Password management
-#
-#other password sufficient /usr/lib/security/pam_winbind.so
-other password required /usr/lib/security/$ISA/pam_unix.so.1
-dtsession auth required /usr/lib/security/$ISA/pam_unix.so.1
-#
-# Support for Kerberos V5 authentication (uncomment to use Kerberos)
-#
-#rlogin auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#login auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#dtlogin auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#other auth optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass
-#dtlogin account optional /usr/lib/security/$ISA/pam_krb5.so.1
-#other account optional /usr/lib/security/$ISA/pam_krb5.so.1
-#other session optional /usr/lib/security/$ISA/pam_krb5.so.1
-#other password optional /usr/lib/security/$ISA/pam_krb5.so.1 try_first_pass</PRE
-></P
-><P
->I also added a try_first_pass line after the winbind.so line to get rid of
-annoying double prompts for passwords.</P
-><P
->Now restart your Samba &#38; try connecting through your application that you
-configured in the pam.conf.</P
-></DIV
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2566"
-></A
->16.6. Limitations</H2
-><P
->Winbind has a number of limitations in its current
- released version that we hope to overcome in future
- releases:</P
-><P
-></P
-><UL
-><LI
-><P
->Winbind is currently only available for
- the Linux operating system, although ports to other operating
- systems are certainly possible. For such ports to be feasible,
- we require the C library of the target operating system to
- support the Name Service Switch and Pluggable Authentication
- Modules systems. This is becoming more common as NSS and
- PAM gain support among UNIX vendors.</P
-></LI
-><LI
-><P
->The mappings of Windows NT RIDs to UNIX ids
- is not made algorithmically and depends on the order in which
- unmapped users or groups are seen by winbind. It may be difficult
- to recover the mappings of rid to UNIX id mapping if the file
- containing this information is corrupted or destroyed.</P
-></LI
-><LI
-><P
->Currently the winbind PAM module does not take
- into account possible workstation and logon time restrictions
- that may be been set for Windows NT users.</P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2576"
-></A
->16.7. Conclusion</H2
-><P
->The winbind system, through the use of the Name Service
- Switch, Pluggable Authentication Modules, and appropriate
- Microsoft RPC calls have allowed us to provide seamless
- integration of Microsoft Windows NT domain users on a
- UNIX system. The result is a great reduction in the administrative
- cost of running a mixed UNIX and NT network.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="PDB-MYSQL"
-></A
->Chapter 17. Passdb MySQL plugin</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2590"
-></A
->17.1. Building</H2
-><P
->To build the plugin, run <B
-CLASS="COMMAND"
->make bin/pdb_mysql.so</B
->
-in the <TT
-CLASS="FILENAME"
->source/</TT
-> directory of samba distribution. </P
-><P
->Next, copy pdb_mysql.so to any location you want. I
-strongly recommend installing it in $PREFIX/lib or /usr/lib/samba/</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2596"
-></A
->17.2. Configuring</H2
-><P
->This plugin lacks some good documentation, but here is some short info:</P
-><P
->Add a the following to the <B
-CLASS="COMMAND"
->passdb backend</B
-> variable in your <TT
-CLASS="FILENAME"
->smb.conf</TT
->:
-<PRE
-CLASS="PROGRAMLISTING"
->passdb backend = [other-plugins] plugin:/location/to/pdb_mysql.so:identifier [other-plugins]</PRE
-></P
-><P
->The identifier can be any string you like, as long as it doesn't collide with
-the identifiers of other plugins or other instances of pdb_mysql. If you
-specify multiple pdb_mysql.so entries in 'passdb backend', you also need to
-use different identifiers!</P
-><P
->Additional options can be given thru the smb.conf file in the [global] section.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->identifier:mysql host - host name, defaults to 'localhost'
-identifier:mysql password
-identifier:mysql user - defaults to 'samba'
-identifier:mysql database - defaults to 'samba'
-identifier:mysql port - defaults to 3306
-identifier:table - Name of the table containing users</PRE
-></P
-><P
->Names of the columns in this table(I've added column types those columns should have first):</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->identifier:logon time column - int(9)
-identifier:logoff time column - int(9)
-identifier:kickoff time column - int(9)
-identifier:pass last set time column - int(9)
-identifier:pass can change time column - int(9)
-identifier:pass must change time column - int(9)
-identifier:username column - varchar(255) - unix username
-identifier:domain column - varchar(255) - NT domain user is part of
-identifier:nt username column - varchar(255) - NT username
-identifier:fullname column - varchar(255) - Full name of user
-identifier:home dir column - varchar(255) - Unix homedir path
-identifier:dir drive column - varchar(2) - Directory drive path (eg: 'H:')
-identifier:logon script column - varchar(255) - Batch file to run on client side when logging on
-identifier:profile path column - varchar(255) - Path of profile
-identifier:acct desc column - varchar(255) - Some ASCII NT user data
-identifier:workstations column - varchar(255) - Workstations user can logon to (or NULL for all)
-identifier:unknown string column - varchar(255) - unknown string
-identifier:munged dial column - varchar(255) - ?
-identifier:uid column - int(9) - Unix user ID (uid)
-identifier:gid column - int(9) - Unix user group (gid)
-identifier:user sid column - varchar(255) - NT user SID
-identifier:group sid column - varchar(255) - NT group ID
-identifier:lanman pass column - varchar(255) - encrypted lanman password
-identifier:nt pass column - varchar(255) - encrypted nt passwd
-identifier:plaintext pass column - varchar(255) - plaintext password
-identifier:acct control column - int(9) - nt user data
-identifier:unknown 3 column - int(9) - unknown
-identifier:logon divs column - int(9) - ?
-identifier:hours len column - int(9) - ?
-identifier:unknown 5 column - int(9) - unknown
-identifier:unknown 6 column - int(9) - unknown</PRE
-></P
-><P
->Eventually, you can put a colon (:) after the name of each column, which
-should specify the column to update when updating the table. You can also
-specify nothing behind the colon - then the data from the field will not be
-updated. </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2611"
-></A
->17.3. Using plaintext passwords or encrypted password</H2
-><P
->I strongly discourage the use of plaintext passwords, however, you can use them:</P
-><P
->If you would like to use plaintext passwords, set 'identifier:lanman pass column' and 'identifier:nt pass column' to 'NULL' (without the quotes) and 'identifier:plaintext pass column' to the name of the column containing the plaintext passwords. </P
-><P
->If you use encrypted passwords, set the 'identifier:plaintext pass column' to 'NULL' (without the quotes). This is the default.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2616"
-></A
->17.4. Getting non-column data from the table</H2
-><P
->It is possible to have not all data in the database and making some 'constant'.</P
-><P
->For example, you can set 'identifier:fullname column' to :
-<B
-CLASS="COMMAND"
->CONCAT(First_name,' ',Sur_name)</B
-></P
-><P
->Or, set 'identifier:workstations column' to :
-<B
-CLASS="COMMAND"
->NULL</B
-></P
-><P
->See the MySQL documentation for more language constructs.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="PDB-XML"
-></A
->Chapter 18. Passdb XML plugin</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2635"
-></A
->18.1. Building</H2
-><P
->This module requires libxml2 to be installed.</P
-><P
->To build pdb_xml, run: <B
-CLASS="COMMAND"
->make bin/pdb_xml.so</B
-> in
-the directory <TT
-CLASS="FILENAME"
->source/</TT
->. </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2641"
-></A
->18.2. Usage</H2
-><P
->The usage of pdb_xml is pretty straightforward. To export data, use:
-
-<B
-CLASS="COMMAND"
->pdbedit -e plugin:/usr/lib/samba/pdb_xml.so:filename</B
->
-
-(where filename is the name of the file to put the data in)</P
-><P
->To import data, use:
-<B
-CLASS="COMMAND"
->pdbedit -i plugin:/usr/lib/samba/pdb_xml.so:filename -e current-pdb</B
->
-
-Where filename is the name to read the data from and current-pdb to put it in.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="SAMBA-LDAP-HOWTO"
-></A
->Chapter 19. Storing Samba's User/Machine Account information in an LDAP Directory</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2664"
-></A
->19.1. Purpose</H2
-><P
->This document describes how to use an LDAP directory for storing Samba user
-account information traditionally stored in the smbpasswd(5) file. It is
-assumed that the reader already has a basic understanding of LDAP concepts
-and has a working directory server already installed. For more information
-on LDAP architectures and Directories, please refer to the following sites.</P
-><P
-></P
-><UL
-><LI
-><P
->OpenLDAP - <A
-HREF="http://www.openldap.org/"
-TARGET="_top"
->http://www.openldap.org/</A
-></P
-></LI
-><LI
-><P
->iPlanet Directory Server - <A
-HREF="http://iplanet.netscape.com/directory"
-TARGET="_top"
->http://iplanet.netscape.com/directory</A
-></P
-></LI
-></UL
-><P
->Note that <A
-HREF="http://www.ora.com/"
-TARGET="_top"
->O'Reilly Publishing</A
-> is working on
-a guide to LDAP for System Administrators which has a planned release date of
-early summer, 2002.</P
-><P
->Two additional Samba resources which may prove to be helpful are</P
-><P
-></P
-><UL
-><LI
-><P
->The <A
-HREF="http://www.unav.es/cti/ldap-smb/ldap-smb-2_2-howto.html"
-TARGET="_top"
->Samba-PDC-LDAP-HOWTO</A
->
- maintained by Ignacio Coupeau.</P
-></LI
-><LI
-><P
->The NT migration scripts from <A
-HREF="http://samba.idealx.org/"
-TARGET="_top"
->IDEALX</A
-> that are
- geared to manage users and group in such a Samba-LDAP Domain Controller configuration.
- </P
-></LI
-></UL
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2684"
-></A
->19.2. Introduction</H2
-><P
->Traditionally, when configuring <A
-HREF="smb.conf.5.html#ENCRYPTPASSWORDS"
-TARGET="_top"
->"encrypt
-passwords = yes"</A
-> in Samba's <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file, user account
-information such as username, LM/NT password hashes, password change times, and account
-flags have been stored in the <TT
-CLASS="FILENAME"
->smbpasswd(5)</TT
-> file. There are several
-disadvantages to this approach for sites with very large numbers of users (counted
-in the thousands).</P
-><P
-></P
-><UL
-><LI
-><P
->The first is that all lookups must be performed sequentially. Given that
-there are approximately two lookups per domain logon (one for a normal
-session connection such as when mapping a network drive or printer), this
-is a performance bottleneck for lareg sites. What is needed is an indexed approach
-such as is used in databases.</P
-></LI
-><LI
-><P
->The second problem is that administrators who desired to replicate a
-smbpasswd file to more than one Samba server were left to use external
-tools such as <B
-CLASS="COMMAND"
->rsync(1)</B
-> and <B
-CLASS="COMMAND"
->ssh(1)</B
->
-and wrote custom, in-house scripts.</P
-></LI
-><LI
-><P
->And finally, the amount of information which is stored in an
-smbpasswd entry leaves no room for additional attributes such as
-a home directory, password expiration time, or even a Relative
-Identified (RID).</P
-></LI
-></UL
-><P
->As a result of these defeciencies, a more robust means of storing user attributes
-used by smbd was developed. The API which defines access to user accounts
-is commonly referred to as the samdb interface (previously this was called the passdb
-API, and is still so named in the CVS trees). In Samba 2.2.3, enabling support
-for a samdb backend (e.g. <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
-> or
-<TT
-CLASS="PARAMETER"
-><I
->--with-tdbsam</I
-></TT
->) requires compile time support.</P
-><P
->When compiling Samba to include the <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
-> autoconf
-option, smbd (and associated tools) will store and lookup user accounts in
-an LDAP directory. In reality, this is very easy to understand. If you are
-comfortable with using an smbpasswd file, simply replace "smbpasswd" with
-"LDAP directory" in all the documentation.</P
-><P
->There are a few points to stress about what the <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
->
-does not provide. The LDAP support referred to in the this documentation does not
-include:</P
-><P
-></P
-><UL
-><LI
-><P
->A means of retrieving user account information from
- an Windows 2000 Active Directory server.</P
-></LI
-><LI
-><P
->A means of replacing /etc/passwd.</P
-></LI
-></UL
-><P
->The second item can be accomplished by using LDAP NSS and PAM modules. LGPL
-versions of these libraries can be obtained from PADL Software
-(<A
-HREF="http://www.padl.com/"
-TARGET="_top"
->http://www.padl.com/</A
->). However,
-the details of configuring these packages are beyond the scope of this document.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2713"
-></A
->19.3. Supported LDAP Servers</H2
-><P
->The LDAP samdb code in 2.2.3 has been developed and tested using the OpenLDAP
-2.0 server and client libraries. The same code should be able to work with
-Netscape's Directory Server and client SDK. However, due to lack of testing
-so far, there are bound to be compile errors and bugs. These should not be
-hard to fix. If you are so inclined, please be sure to forward all patches to
-<A
-HREF="samba-patches@samba.org"
-TARGET="_top"
->samba-patches@samba.org</A
-> and
-<A
-HREF="jerry@samba.org"
-TARGET="_top"
->jerry@samba.org</A
->.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2718"
-></A
->19.4. Schema and Relationship to the RFC 2307 posixAccount</H2
-><P
->Samba 2.2.3 includes the necessary schema file for OpenLDAP 2.0 in
-<TT
-CLASS="FILENAME"
->examples/LDAP/samba.schema</TT
->. (Note that this schema
-file has been modified since the experimental support initially included
-in 2.2.2). The sambaAccount objectclass is given here:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->objectclass ( 1.3.1.5.1.4.1.7165.2.2.2 NAME 'sambaAccount' SUP top STRUCTURAL
- DESC 'Samba Account'
- MUST ( uid $ rid )
- MAY ( cn $ lmPassword $ ntPassword $ pwdLastSet $ logonTime $
- logoffTime $ kickoffTime $ pwdCanChange $ pwdMustChange $ acctFlags $
- displayName $ smbHome $ homeDrive $ scriptPath $ profilePath $
- description $ userWorkstations $ primaryGroupID $ domain ))</PRE
-></P
-><P
->The samba.schema file has been formatted for OpenLDAP 2.0. The OID's are
-owned by the Samba Team and as such is legal to be openly published.
-If you translate the schema to be used with Netscape DS, please
-submit the modified schema file as a patch to <A
-HREF="jerry@samba.org"
-TARGET="_top"
->jerry@samba.org</A
-></P
-><P
->Just as the smbpasswd file is mean to store information which supplements a
-user's <TT
-CLASS="FILENAME"
->/etc/passwd</TT
-> entry, so is the sambaAccount object
-meant to supplement the UNIX user account information. A sambaAccount is a
-<TT
-CLASS="CONSTANT"
->STRUCTURAL</TT
-> objectclass so it can be stored individually
-in the directory. However, there are several fields (e.g. uid) which overlap
-with the posixAccount objectclass outlined in RFC2307. This is by design.</P
-><P
->In order to store all user account information (UNIX and Samba) in the directory,
-it is necessary to use the sambaAccount and posixAccount objectclasses in
-combination. However, smbd will still obtain the user's UNIX account
-information via the standard C library calls (e.g. getpwnam(), et. al.).
-This means that the Samba server must also have the LDAP NSS library installed
-and functioning correctly. This division of information makes it possible to
-store all Samba account information in LDAP, but still maintain UNIX account
-information in NIS while the network is transitioning to a full LDAP infrastructure.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2730"
-></A
->19.5. Configuring Samba with LDAP</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN2732"
-></A
->19.5.1. OpenLDAP configuration</H3
-><P
->To include support for the sambaAccount object in an OpenLDAP directory
-server, first copy the samba.schema file to slapd's configuration directory.</P
-><P
-><TT
-CLASS="PROMPT"
->root# </TT
-><B
-CLASS="COMMAND"
->cp samba.schema /etc/openldap/schema/</B
-></P
-><P
->Next, include the <TT
-CLASS="FILENAME"
->samba.schema</TT
-> file in <TT
-CLASS="FILENAME"
->slapd.conf</TT
->.
-The sambaAccount object contains two attributes which depend upon other schema
-files. The 'uid' attribute is defined in <TT
-CLASS="FILENAME"
->cosine.schema</TT
-> and
-the 'displayName' attribute is defined in the <TT
-CLASS="FILENAME"
->inetorgperson.schema</TT
->
-file. Both of these must be included before the <TT
-CLASS="FILENAME"
->samba.schema</TT
-> file.</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->## /etc/openldap/slapd.conf
-
-## schema files (core.schema is required by default)
-include /etc/openldap/schema/core.schema
-
-## needed for sambaAccount
-include /etc/openldap/schema/cosine.schema
-include /etc/openldap/schema/inetorgperson.schema
-include /etc/openldap/schema/samba.schema
-
-## uncomment this line if you want to support the RFC2307 (NIS) schema
-## include /etc/openldap/schema/nis.schema
-
-....</PRE
-></P
-><P
->It is recommended that you maintain some indices on some of the most usefull attributes,
-like in the following example, to speed up searches made on sambaAccount objectclasses
-(and possibly posixAccount and posixGroup as well).</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-># Indices to maintain
-## required by OpenLDAP 2.0
-index objectclass eq
-
-## support pb_getsampwnam()
-index uid pres,eq
-## support pdb_getsambapwrid()
-index rid eq
-
-## uncomment these if you are storing posixAccount and
-## posixGroup entries in the directory as well
-##index uidNumber eq
-##index gidNumber eq
-##index cn eq
-##index memberUid eq</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2749"
-></A
->19.5.2. Configuring Samba</H3
-><P
->The following parameters are available in smb.conf only with <TT
-CLASS="PARAMETER"
-><I
->--with-ldapsam</I
-></TT
->
-was included with compiling Samba.</P
-><P
-></P
-><UL
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPSSL"
-TARGET="_top"
->ldap ssl</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPSERVER"
-TARGET="_top"
->ldap server</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPADMINDN"
-TARGET="_top"
->ldap admin dn</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPSUFFIX"
-TARGET="_top"
->ldap suffix</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPFILTER"
-TARGET="_top"
->ldap filter</A
-></P
-></LI
-><LI
-><P
-><A
-HREF="smb.conf.5.html#LDAPPORT"
-TARGET="_top"
->ldap port</A
-></P
-></LI
-></UL
-><P
->These are described in the <A
-HREF="smb.conf.5.html"
-TARGET="_top"
->smb.conf(5)</A
-> man
-page and so will not be repeated here. However, a sample smb.conf file for
-use with an LDAP directory could appear as</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->## /usr/local/samba/lib/smb.conf
-[global]
- security = user
- encrypt passwords = yes
-
- netbios name = TASHTEGO
- workgroup = NARNIA
-
- # ldap related parameters
-
- # define the DN to use when binding to the directory servers
- # The password for this DN is not stored in smb.conf. Rather it
- # must be set by using 'smbpasswd -w <TT
-CLASS="REPLACEABLE"
-><I
->secretpw</I
-></TT
->' to store the
- # passphrase in the secrets.tdb file. If the "ldap admin dn" values
- # changes, this password will need to be reset.
- ldap admin dn = "cn=Samba Manager,ou=people,dc=samba,dc=org"
-
- # specify the LDAP server's hostname (defaults to locahost)
- ldap server = ahab.samba.org
-
- # Define the SSL option when connecting to the directory
- # ('off', 'start tls', or 'on' (default))
- ldap ssl = start tls
-
- # define the port to use in the LDAP session (defaults to 636 when
- # "ldap ssl = on")
- ldap port = 389
-
- # specify the base DN to use when searching the directory
- ldap suffix = "ou=people,dc=samba,dc=org"
-
- # generally the default ldap search filter is ok
- # ldap filter = "(&amp;(uid=%u)(objectclass=sambaAccount))"</PRE
-></P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2777"
-></A
->19.6. Accounts and Groups management</H2
-><P
->As users accounts are managed thru the sambaAccount objectclass, you should
-modify you existing administration tools to deal with sambaAccount attributes.</P
-><P
->Machines accounts are managed with the sambaAccount objectclass, just
-like users accounts. However, it's up to you to stored thoses accounts
-in a different tree of you LDAP namespace: you should use
-"ou=Groups,dc=plainjoe,dc=org" to store groups and
-"ou=People,dc=plainjoe,dc=org" to store users. Just configure your
-NSS and PAM accordingly (usually, in the /etc/ldap.conf configuration
-file).</P
-><P
->In Samba release 2.2.3, the group management system is based on posix
-groups. This meand that Samba make usage of the posixGroup objectclass.
-For now, there is no NT-like group system management (global and local
-groups).</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2782"
-></A
->19.7. Security and sambaAccount</H2
-><P
->There are two important points to remember when discussing the security
-of sambaAccount entries in the directory.</P
-><P
-></P
-><UL
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Never</I
-></SPAN
-> retrieve the lmPassword or
- ntPassword attribute values over an unencrypted LDAP session.</P
-></LI
-><LI
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->Never</I
-></SPAN
-> allow non-admin users to
- view the lmPassword or ntPassword attribute values.</P
-></LI
-></UL
-><P
->These password hashes are clear text equivalents and can be used to impersonate
-the user without deriving the original clear text strings. For more information
-on the details of LM/NT password hashes, refer to the <A
-HREF="ENCRYPTION.html"
-TARGET="_top"
->ENCRYPTION chapter</A
-> of the Samba-HOWTO-Collection.</P
-><P
->To remedy the first security issue, the "ldap ssl" smb.conf parameter defaults
-to require an encrypted session (<B
-CLASS="COMMAND"
->ldap ssl = on</B
->) using
-the default port of 636
-when contacting the directory server. When using an OpenLDAP 2.0 server, it
-is possible to use the use the StartTLS LDAP extended operation in the place of
-LDAPS. In either case, you are strongly discouraged to disable this security
-(<B
-CLASS="COMMAND"
->ldap ssl = off</B
->).</P
-><P
->Note that the LDAPS protocol is deprecated in favor of the LDAPv3 StartTLS
-extended operation. However, the OpenLDAP library still provides support for
-the older method of securing communication between clients and servers.</P
-><P
->The second security precaution is to prevent non-administrative users from
-harvesting password hashes from the directory. This can be done using the
-following ACL in <TT
-CLASS="FILENAME"
->slapd.conf</TT
->:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->## allow the "ldap admin dn" access, but deny everyone else
-access to attrs=lmPassword,ntPassword
- by dn="cn=Samba Admin,ou=people,dc=plainjoe,dc=org" write
- by * none</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2802"
-></A
->19.8. LDAP specials attributes for sambaAccounts</H2
-><P
->The sambaAccount objectclass is composed of the following attributes:</P
-><P
-></P
-><UL
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->lmPassword</TT
->: the LANMAN password 16-byte hash stored as a character
- representation of a hexidecimal string.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->ntPassword</TT
->: the NT password hash 16-byte stored as a character
- representation of a hexidecimal string.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->pwdLastSet</TT
->: The integer time in seconds since 1970 when the
- <TT
-CLASS="CONSTANT"
->lmPassword</TT
-> and <TT
-CLASS="CONSTANT"
->ntPassword</TT
-> attributes were last set.
- </P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->acctFlags</TT
->: string of 11 characters surrounded by square brackets []
- representing account flags such as U (user), W(workstation), X(no password expiration), and
- D(disabled).</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->logonTime</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->logoffTime</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->kickoffTime</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->pwdCanChange</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->pwdMustChange</TT
->: Integer value currently unused</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->homeDrive</TT
->: specifies the drive letter to which to map the
- UNC path specified by homeDirectory. The drive letter must be specified in the form "X:"
- where X is the letter of the drive to map. Refer to the "logon drive" parameter in the
- smb.conf(5) man page for more information.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->scriptPath</TT
->: The scriptPath property specifies the path of
- the user's logon script, .CMD, .EXE, or .BAT file. The string can be null. The path
- is relative to the netlogon share. Refer to the "logon script" parameter in the
- smb.conf(5) man page for more information.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->profilePath</TT
->: specifies a path to the user's profile.
- This value can be a null string, a local absolute path, or a UNC path. Refer to the
- "logon path" parameter in the smb.conf(5) man page for more information.</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->smbHome</TT
->: The homeDirectory property specifies the path of
- the home directory for the user. The string can be null. If homeDrive is set and specifies
- a drive letter, homeDirectory should be a UNC path. The path must be a network
- UNC path of the form \\server\share\directory. This value can be a null string.
- Refer to the "logon home" parameter in the smb.conf(5) man page for more information.
- </P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->userWorkstation</TT
->: character string value currently unused.
- </P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->rid</TT
->: the integer representation of the user's relative identifier
- (RID).</P
-></LI
-><LI
-><P
-><TT
-CLASS="CONSTANT"
->primaryGroupID</TT
->: the relative identifier (RID) of the primary group
- of the user.</P
-></LI
-></UL
-><P
->The majority of these parameters are only used when Samba is acting as a PDC of
-a domain (refer to the <A
-HREF="Samba-PDC-HOWTO.html"
-TARGET="_top"
->Samba-PDC-HOWTO</A
-> for details on
-how to configure Samba as a Primary Domain Controller). The following four attributes
-are only stored with the sambaAccount entry if the values are non-default values:</P
-><P
-></P
-><UL
-><LI
-><P
->smbHome</P
-></LI
-><LI
-><P
->scriptPath</P
-></LI
-><LI
-><P
->logonPath</P
-></LI
-><LI
-><P
->homeDrive</P
-></LI
-></UL
-><P
->These attributes are only stored with the sambaAccount entry if
-the values are non-default values. For example, assume TASHTEGO has now been
-configured as a PDC and that <B
-CLASS="COMMAND"
->logon home = \\%L\%u</B
-> was defined in
-its <TT
-CLASS="FILENAME"
->smb.conf</TT
-> file. When a user named "becky" logons to the domain,
-the <TT
-CLASS="PARAMETER"
-><I
->logon home</I
-></TT
-> string is expanded to \\TASHTEGO\becky.
-If the smbHome attribute exists in the entry "uid=becky,ou=people,dc=samba,dc=org",
-this value is used. However, if this attribute does not exist, then the value
-of the <TT
-CLASS="PARAMETER"
-><I
->logon home</I
-></TT
-> parameter is used in its place. Samba
-will only write the attribute value to the directory entry is the value is
-something other than the default (e.g. \\MOBY\becky).</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2872"
-></A
->19.9. Example LDIF Entries for a sambaAccount</H2
-><P
->The following is a working LDIF with the inclusion of the posixAccount objectclass:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->dn: uid=guest2, ou=people,dc=plainjoe,dc=org
-ntPassword: 878D8014606CDA29677A44EFA1353FC7
-pwdMustChange: 2147483647
-primaryGroupID: 1201
-lmPassword: 552902031BEDE9EFAAD3B435B51404EE
-pwdLastSet: 1010179124
-logonTime: 0
-objectClass: sambaAccount
-uid: guest2
-kickoffTime: 2147483647
-acctFlags: [UX ]
-logoffTime: 2147483647
-rid: 19006
-pwdCanChange: 0</PRE
-></P
-><P
->The following is an LDIF entry for using both the sambaAccount and
-posixAccount objectclasses:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->dn: uid=gcarter, ou=people,dc=plainjoe,dc=org
-logonTime: 0
-displayName: Gerald Carter
-lmPassword: 552902031BEDE9EFAAD3B435B51404EE
-primaryGroupID: 1201
-objectClass: posixAccount
-objectClass: sambaAccount
-acctFlags: [UX ]
-userPassword: {crypt}BpM2ej8Rkzogo
-uid: gcarter
-uidNumber: 9000
-cn: Gerald Carter
-loginShell: /bin/bash
-logoffTime: 2147483647
-gidNumber: 100
-kickoffTime: 2147483647
-pwdLastSet: 1010179230
-rid: 19000
-homeDirectory: /home/tashtego/gcarter
-pwdCanChange: 0
-pwdMustChange: 2147483647
-ntPassword: 878D8014606CDA29677A44EFA1353FC7</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2880"
-></A
->19.10. Comments</H2
-><P
->Please mail all comments regarding this HOWTO to <A
-HREF="mailto:jerry@samba.org"
-TARGET="_top"
->jerry@samba.org</A
->. This documents was
-last updated to reflect the Samba 2.2.3 release.&#13;</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="CVS-ACCESS"
-></A
->Chapter 20. HOWTO Access Samba source code via CVS</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2891"
-></A
->20.1. Introduction</H2
-><P
->Samba is developed in an open environment. Developers use CVS
-(Concurrent Versioning System) to "checkin" (also known as
-"commit") new source code. Samba's various CVS branches can
-be accessed via anonymous CVS using the instructions
-detailed in this chapter.</P
-><P
->This document is a modified version of the instructions found at
-<A
-HREF="http://samba.org/samba/cvs.html"
-TARGET="_top"
->http://samba.org/samba/cvs.html</A
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2896"
-></A
->20.2. CVS Access to samba.org</H2
-><P
->The machine samba.org runs a publicly accessible CVS
-repository for access to the source code of several packages,
-including samba, rsync and jitterbug. There are two main ways of
-accessing the CVS server on this host.</P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2899"
-></A
->20.2.1. Access via CVSweb</H3
-><P
->You can access the source code via your
-favourite WWW browser. This allows you to access the contents of
-individual files in the repository and also to look at the revision
-history and commit logs of individual files. You can also ask for a diff
-listing between any two versions on the repository.</P
-><P
->Use the URL : <A
-HREF="http://samba.org/cgi-bin/cvsweb"
-TARGET="_top"
->http://samba.org/cgi-bin/cvsweb</A
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2904"
-></A
->20.2.2. Access via cvs</H3
-><P
->You can also access the source code via a
-normal cvs client. This gives you much more control over you can
-do with the repository and allows you to checkout whole source trees
-and keep them up to date via normal cvs commands. This is the
-preferred method of access if you are a developer and not
-just a casual browser.</P
-><P
->To download the latest cvs source code, point your
-browser at the URL : <A
-HREF="http://www.cyclic.com/"
-TARGET="_top"
->http://www.cyclic.com/</A
->.
-and click on the 'How to get cvs' link. CVS is free software under
-the GNU GPL (as is Samba). Note that there are several graphical CVS clients
-which provide a graphical interface to the sometimes mundane CVS commands.
-Links to theses clients are also available from http://www.cyclic.com.</P
-><P
->To gain access via anonymous cvs use the following steps.
-For this example it is assumed that you want a copy of the
-samba source code. For the other source code repositories
-on this system just substitute the correct package name</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> Install a recent copy of cvs. All you really need is a
- copy of the cvs client binary.
- </P
-></LI
-><LI
-><P
-> Run the command
- </P
-><P
-> <B
-CLASS="COMMAND"
->cvs -d :pserver:cvs@samba.org:/cvsroot login</B
->
- </P
-><P
-> When it asks you for a password type <TT
-CLASS="USERINPUT"
-><B
->cvs</B
-></TT
->.
- </P
-></LI
-><LI
-><P
-> Run the command
- </P
-><P
-> <B
-CLASS="COMMAND"
->cvs -d :pserver:cvs@samba.org:/cvsroot co samba</B
->
- </P
-><P
-> This will create a directory called samba containing the
- latest samba source code (i.e. the HEAD tagged cvs branch). This
- currently corresponds to the 3.0 development tree.
- </P
-><P
-> CVS branches other HEAD can be obtained by using the <TT
-CLASS="PARAMETER"
-><I
->-r</I
-></TT
->
- and defining a tag name. A list of branch tag names can be found on the
- "Development" page of the samba web site. A common request is to obtain the
- latest 2.2 release code. This could be done by using the following command.
- </P
-><P
-> <B
-CLASS="COMMAND"
->cvs -d :pserver:cvs@samba.org:/cvsroot co -r SAMBA_2_2 samba</B
->
- </P
-></LI
-><LI
-><P
-> Whenever you want to merge in the latest code changes use
- the following command from within the samba directory:
- </P
-><P
-> <B
-CLASS="COMMAND"
->cvs update -d -P</B
->
- </P
-></LI
-></OL
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="GROUPMAPPING"
-></A
->Chapter 21. Group mapping HOWTO</H1
-><P
->
-Starting with Samba 3.0 alpha 2, a new group mapping function is available. The
-current method (likely to change) to manage the groups is a new command called
-<B
-CLASS="COMMAND"
->smbgroupedit</B
->.</P
-><P
->The first immediate reason to use the group mapping on a PDC, is that
-the <B
-CLASS="COMMAND"
->domain admin group</B
-> of <TT
-CLASS="FILENAME"
->smb.conf</TT
-> is
-now gone. This parameter was used to give the listed users local admin rights
-on their workstations. It was some magic stuff that simply worked but didn't
-scale very well for complex setups.</P
-><P
->Let me explain how it works on NT/W2K, to have this magic fade away.
-When installing NT/W2K on a computer, the installer program creates some users
-and groups. Notably the 'Administrators' group, and gives to that group some
-privileges like the ability to change the date and time or to kill any process
-(or close too) running on the local machine. The 'Administrator' user is a
-member of the 'Administrators' group, and thus 'inherit' the 'Administrators'
-group privileges. If a 'joe' user is created and become a member of the
-'Administrator' group, 'joe' has exactly the same rights as 'Administrator'.</P
-><P
->When a NT/W2K machine is joined to a domain, during that phase, the "Domain
-Administrators' group of the PDC is added to the 'Administrators' group of the
-workstation. Every members of the 'Domain Administrators' group 'inherit' the
-rights of the 'Administrators' group when logging on the workstation.</P
-><P
->You are now wondering how to make some of your samba PDC users members of the
-'Domain Administrators' ? That's really easy.</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->create a unix group (usually in <TT
-CLASS="FILENAME"
->/etc/group</TT
->), let's call it domadm</P
-></LI
-><LI
-><P
->add to this group the users that must be Administrators. For example if you want joe,john and mary, your entry in <TT
-CLASS="FILENAME"
->/etc/group</TT
-> will look like:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->domadm:x:502:joe,john,mary</PRE
-></P
-></LI
-><LI
-><P
->Map this domadm group to the <B
-CLASS="COMMAND"
->domain admins</B
-> group by running the command:</P
-><P
-><B
-CLASS="COMMAND"
->smbgroupedit -c "Domain Admins" -u domadm</B
-></P
-></LI
-></OL
-><P
->You're set, joe, john and mary are domain administrators !</P
-><P
->Like the Domain Admins group, you can map any arbitrary Unix group to any NT
-group. You can also make any Unix group a domain group. For example, on a domain
-member machine (an NT/W2K or a samba server running winbind), you would like to
-give access to a certain directory to some users who are member of a group on
-your samba PDC. Flag that group as a domain group by running:</P
-><P
-><B
-CLASS="COMMAND"
->smbgroupedit -a unixgroup -td</B
-></P
-><P
->You can list the various groups in the mapping database like this</P
-><P
-><B
-CLASS="COMMAND"
->smbgroupedit -v</B
-></P
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="SPEED"
-></A
->Chapter 22. Samba performance issues</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN2982"
-></A
->22.1. Comparisons</H2
-><P
->The Samba server uses TCP to talk to the client. Thus if you are
-trying to see if it performs well you should really compare it to
-programs that use the same protocol. The most readily available
-programs for file transfer that use TCP are ftp or another TCP based
-SMB server.</P
-><P
->If you want to test against something like a NT or WfWg server then
-you will have to disable all but TCP on either the client or
-server. Otherwise you may well be using a totally different protocol
-(such as Netbeui) and comparisons may not be valid.</P
-><P
->Generally you should find that Samba performs similarly to ftp at raw
-transfer speed. It should perform quite a bit faster than NFS,
-although this very much depends on your system.</P
-><P
->Several people have done comparisons between Samba and Novell, NFS or
-WinNT. In some cases Samba performed the best, in others the worst. I
-suspect the biggest factor is not Samba vs some other system but the
-hardware and drivers used on the various systems. Given similar
-hardware Samba should certainly be competitive in speed with other
-systems.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN2988"
-></A
->22.2. Oplocks</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN2990"
-></A
->22.2.1. Overview</H3
-><P
->Oplocks are the way that SMB clients get permission from a server to
-locally cache file operations. If a server grants an oplock
-(opportunistic lock) then the client is free to assume that it is the
-only one accessing the file and it will agressively cache file
-data. With some oplock types the client may even cache file open/close
-operations. This can give enormous performance benefits.</P
-><P
->With the release of Samba 1.9.18 we now correctly support opportunistic
-locks. This is turned on by default, and can be turned off on a share-
-by-share basis by setting the parameter :</P
-><P
-><B
-CLASS="COMMAND"
->oplocks = False</B
-></P
-><P
->We recommend that you leave oplocks on however, as current benchmark
-tests with NetBench seem to give approximately a 30% improvement in
-speed with them on. This is on average however, and the actual
-improvement seen can be orders of magnitude greater, depending on
-what the client redirector is doing.</P
-><P
->Previous to Samba 1.9.18 there was a 'fake oplocks' option. This
-option has been left in the code for backwards compatibility reasons
-but it's use is now deprecated. A short summary of what the old
-code did follows.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN2998"
-></A
->22.2.2. Level2 Oplocks</H3
-><P
->With Samba 2.0.5 a new capability - level2 (read only) oplocks is
-supported (although the option is off by default - see the smb.conf
-man page for details). Turning on level2 oplocks (on a share-by-share basis)
-by setting the parameter :</P
-><P
-><B
-CLASS="COMMAND"
->level2 oplocks = true</B
-></P
-><P
->should speed concurrent access to files that are not commonly written
-to, such as application serving shares (ie. shares that contain common
-.EXE files - such as a Microsoft Office share) as it allows clients to
-read-ahread cache copies of these files.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3004"
-></A
->22.2.3. Old 'fake oplocks' option - deprecated</H3
-><P
->Samba can also fake oplocks, by granting a oplock whenever a client
-asks for one. This is controlled using the smb.conf option "fake
-oplocks". If you set "fake oplocks = yes" then you are telling the
-client that it may agressively cache the file data for all opens.</P
-><P
->Enabling 'fake oplocks' on all read-only shares or shares that you know
-will only be accessed from one client at a time you will see a big
-performance improvement on many operations. If you enable this option
-on shares where multiple clients may be accessing the files read-write
-at the same time you can get data corruption.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3008"
-></A
->22.3. Socket options</H2
-><P
->There are a number of socket options that can greatly affect the
-performance of a TCP based server like Samba.</P
-><P
->The socket options that Samba uses are settable both on the command
-line with the -O option, or in the smb.conf file.</P
-><P
->The "socket options" section of the smb.conf manual page describes how
-to set these and gives recommendations.</P
-><P
->Getting the socket options right can make a big difference to your
-performance, but getting them wrong can degrade it by just as
-much. The correct settings are very dependent on your local network.</P
-><P
->The socket option TCP_NODELAY is the one that seems to make the
-biggest single difference for most networks. Many people report that
-adding "socket options = TCP_NODELAY" doubles the read performance of
-a Samba drive. The best explanation I have seen for this is that the
-Microsoft TCP/IP stack is slow in sending tcp ACKs.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3015"
-></A
->22.4. Read size</H2
-><P
->The option "read size" affects the overlap of disk reads/writes with
-network reads/writes. If the amount of data being transferred in
-several of the SMB commands (currently SMBwrite, SMBwriteX and
-SMBreadbraw) is larger than this value then the server begins writing
-the data before it has received the whole packet from the network, or
-in the case of SMBreadbraw, it begins writing to the network before
-all the data has been read from disk.</P
-><P
->This overlapping works best when the speeds of disk and network access
-are similar, having very little effect when the speed of one is much
-greater than the other.</P
-><P
->The default value is 16384, but very little experimentation has been
-done yet to determine the optimal value, and it is likely that the best
-value will vary greatly between systems anyway. A value over 65536 is
-pointless and will cause you to allocate memory unnecessarily.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3020"
-></A
->22.5. Max xmit</H2
-><P
->At startup the client and server negotiate a "maximum transmit" size,
-which limits the size of nearly all SMB commands. You can set the
-maximum size that Samba will negotiate using the "max xmit = " option
-in smb.conf. Note that this is the maximum size of SMB request that
-Samba will accept, but not the maximum size that the *client* will accept.
-The client maximum receive size is sent to Samba by the client and Samba
-honours this limit.</P
-><P
->It defaults to 65536 bytes (the maximum), but it is possible that some
-clients may perform better with a smaller transmit unit. Trying values
-of less than 2048 is likely to cause severe problems.</P
-><P
->In most cases the default is the best option.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3025"
-></A
->22.6. Locking</H2
-><P
->By default Samba does not implement strict locking on each read/write
-call (although it did in previous versions). If you enable strict
-locking (using "strict locking = yes") then you may find that you
-suffer a severe performance hit on some systems.</P
-><P
->The performance hit will probably be greater on NFS mounted
-filesystems, but could be quite high even on local disks.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3029"
-></A
->22.7. Share modes</H2
-><P
->Some people find that opening files is very slow. This is often
-because of the "share modes" code needed to fully implement the dos
-share modes stuff. You can disable this code using "share modes =
-no". This will gain you a lot in opening and closing files but will
-mean that (in some cases) the system won't force a second user of a
-file to open the file read-only if the first has it open
-read-write. For many applications that do their own locking this
-doesn't matter, but for some it may. Most Windows applications
-depend heavily on "share modes" working correctly and it is
-recommended that the Samba share mode support be left at the
-default of "on".</P
-><P
->The share mode code in Samba has been re-written in the 1.9.17
-release following tests with the Ziff-Davis NetBench PC Benchmarking
-tool. It is now believed that Samba 1.9.17 implements share modes
-similarly to Windows NT.</P
-><P
->NOTE: In the most recent versions of Samba there is an option to use
-shared memory via mmap() to implement the share modes. This makes
-things much faster. See the Makefile for how to enable this.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3034"
-></A
->22.8. Log level</H2
-><P
->If you set the log level (also known as "debug level") higher than 2
-then you may suffer a large drop in performance. This is because the
-server flushes the log file after each operation, which can be very
-expensive. </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3037"
-></A
->22.9. Wide lines</H2
-><P
->The "wide links" option is now enabled by default, but if you disable
-it (for better security) then you may suffer a performance hit in
-resolving filenames. The performance loss is lessened if you have
-"getwd cache = yes", which is now the default.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3040"
-></A
->22.10. Read raw</H2
-><P
->The "read raw" operation is designed to be an optimised, low-latency
-file read operation. A server may choose to not support it,
-however. and Samba makes support for "read raw" optional, with it
-being enabled by default.</P
-><P
->In some cases clients don't handle "read raw" very well and actually
-get lower performance using it than they get using the conventional
-read operations. </P
-><P
->So you might like to try "read raw = no" and see what happens on your
-network. It might lower, raise or not affect your performance. Only
-testing can really tell.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3045"
-></A
->22.11. Write raw</H2
-><P
->The "write raw" operation is designed to be an optimised, low-latency
-file write operation. A server may choose to not support it,
-however. and Samba makes support for "write raw" optional, with it
-being enabled by default.</P
-><P
->Some machines may find "write raw" slower than normal write, in which
-case you may wish to change this option.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3049"
-></A
->22.12. Read prediction</H2
-><P
->Samba can do read prediction on some of the SMB commands. Read
-prediction means that Samba reads some extra data on the last file it
-read while waiting for the next SMB command to arrive. It can then
-respond more quickly when the next read request arrives.</P
-><P
->This is disabled by default. You can enable it by using "read
-prediction = yes".</P
-><P
->Note that read prediction is only used on files that were opened read
-only.</P
-><P
->Read prediction should particularly help for those silly clients (such
-as "Write" under NT) which do lots of very small reads on a file.</P
-><P
->Samba will not read ahead more data than the amount specified in the
-"read size" option. It always reads ahead on 1k block boundaries.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3056"
-></A
->22.13. Memory mapping</H2
-><P
->Samba supports reading files via memory mapping them. One some
-machines this can give a large boost to performance, on others it
-makes not difference at all, and on some it may reduce performance.</P
-><P
->To enable you you have to recompile Samba with the -DUSE_MMAP option
-on the FLAGS line of the Makefile.</P
-><P
->Note that memory mapping is only used on files opened read only, and
-is not used by the "read raw" operation. Thus you may find memory
-mapping is more effective if you disable "read raw" using "read raw =
-no".</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3061"
-></A
->22.14. Slow Clients</H2
-><P
->One person has reported that setting the protocol to COREPLUS rather
-than LANMAN2 gave a dramatic speed improvement (from 10k/s to 150k/s).</P
-><P
->I suspect that his PC's (386sx16 based) were asking for more data than
-they could chew. I suspect a similar speed could be had by setting
-"read raw = no" and "max xmit = 2048", instead of changing the
-protocol. Lowering the "read size" might also help.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3065"
-></A
->22.15. Slow Logins</H2
-><P
->Slow logins are almost always due to the password checking time. Using
-the lowest practical "password level" will improve things a lot. You
-could also enable the "UFC crypt" option in the Makefile.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3068"
-></A
->22.16. Client tuning</H2
-><P
->Often a speed problem can be traced to the client. The client (for
-example Windows for Workgroups) can often be tuned for better TCP
-performance.</P
-><P
->See your client docs for details. In particular, I have heard rumours
-that the WfWg options TCPWINDOWSIZE and TCPSEGMENTSIZE can have a
-large impact on performance.</P
-><P
->Also note that some people have found that setting DefaultRcvWindow in
-the [MSTCP] section of the SYSTEM.INI file under WfWg to 3072 gives a
-big improvement. I don't know why.</P
-><P
->My own experience wth DefaultRcvWindow is that I get much better
-performance with a large value (16384 or larger). Other people have
-reported that anything over 3072 slows things down enourmously. One
-person even reported a speed drop of a factor of 30 when he went from
-3072 to 8192. I don't know why.</P
-><P
->It probably depends a lot on your hardware, and the type of unix box
-you have at the other end of the link.</P
-><P
->Paul Cochrane has done some testing on client side tuning and come
-to the following conclusions:</P
-><P
->Install the W2setup.exe file from www.microsoft.com. This is an
-update for the winsock stack and utilities which improve performance.</P
-><P
->Configure the win95 TCPIP registry settings to give better
-perfomance. I use a program called MTUSPEED.exe which I got off the
-net. There are various other utilities of this type freely available.
-The setting which give the best performance for me are:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->MaxMTU Remove</P
-></LI
-><LI
-><P
->RWIN Remove</P
-></LI
-><LI
-><P
->MTUAutoDiscover Disable</P
-></LI
-><LI
-><P
->MTUBlackHoleDetect Disable</P
-></LI
-><LI
-><P
->Time To Live Enabled</P
-></LI
-><LI
-><P
->Time To Live - HOPS 32</P
-></LI
-><LI
-><P
->NDI Cache Size 0</P
-></LI
-></OL
-><P
->I tried virtually all of the items mentioned in the document and
-the only one which made a difference to me was the socket options. It
-turned out I was better off without any!!!!!</P
-><P
->In terms of overall speed of transfer, between various win95 clients
-and a DX2-66 20MB server with a crappy NE2000 compatible and old IDE
-drive (Kernel 2.0.30). The transfer rate was reasonable for 10 baseT.</P
-><P
->FIXME
-The figures are: Put Get
-P166 client 3Com card: 420-440kB/s 500-520kB/s
-P100 client 3Com card: 390-410kB/s 490-510kB/s
-DX4-75 client NE2000: 370-380kB/s 330-350kB/s</P
-><P
->I based these test on transfer two files a 4.5MB text file and a 15MB
-textfile. The results arn't bad considering the hardware Samba is
-running on. It's a crap machine!!!!</P
-><P
->The updates mentioned in 1 and 2 brought up the transfer rates from
-just over 100kB/s in some clients.</P
-><P
->A new client is a P333 connected via a 100MB/s card and hub. The
-transfer rates from this were good: 450-500kB/s on put and 600+kB/s
-on get.</P
-><P
->Looking at standard FTP throughput, Samba is a bit slower (100kB/s
-upwards). I suppose there is more going on in the samba protocol, but
-if it could get up to the rate of FTP the perfomance would be quite
-staggering.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3100"
-></A
->22.17. My Results</H2
-><P
->Some people want to see real numbers in a document like this, so here
-they are. I have a 486sx33 client running WfWg 3.11 with the 3.11b
-tcp/ip stack. It has a slow IDE drive and 20Mb of ram. It has a SMC
-Elite-16 ISA bus ethernet card. The only WfWg tuning I've done is to
-set DefaultRcvWindow in the [MSTCP] section of system.ini to 16384. My
-server is a 486dx3-66 running Linux. It also has 20Mb of ram and a SMC
-Elite-16 card. You can see my server config in the examples/tridge/
-subdirectory of the distribution.</P
-><P
->I get 490k/s on reading a 8Mb file with copy.
-I get 441k/s writing the same file to the samba server.</P
-><P
->Of course, there's a lot more to benchmarks than 2 raw throughput
-figures, but it gives you a ballpark figure.</P
-><P
->I've also tested Win95 and WinNT, and found WinNT gave me the best
-speed as a samba client. The fastest client of all (for me) is
-smbclient running on another linux box. Maybe I'll add those results
-here someday ...</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="PART"
-><A
-NAME="AEN3106"
-></A
-><DIV
-CLASS="TITLEPAGE"
-><H1
-CLASS="TITLE"
->IV. Appendixes</H1
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
->23. <A
-HREF="#PORTABILITY"
->Portability</A
-></DT
-><DD
-><DL
-><DT
->23.1. <A
-HREF="#AEN3115"
->HPUX</A
-></DT
-><DT
->23.2. <A
-HREF="#AEN3121"
->SCO Unix</A
-></DT
-><DT
->23.3. <A
-HREF="#AEN3125"
->DNIX</A
-></DT
-><DT
->23.4. <A
-HREF="#AEN3154"
->RedHat Linux Rembrandt-II</A
-></DT
-></DL
-></DD
-><DT
->24. <A
-HREF="#OTHER-CLIENTS"
->Samba and other CIFS clients</A
-></DT
-><DD
-><DL
-><DT
->24.1. <A
-HREF="#AEN3175"
->Macintosh clients?</A
-></DT
-><DT
->24.2. <A
-HREF="#AEN3184"
->OS2 Client</A
-></DT
-><DD
-><DL
-><DT
->24.2.1. <A
-HREF="#AEN3186"
->How can I configure OS/2 Warp Connect or
- OS/2 Warp 4 as a client for Samba?</A
-></DT
-><DT
->24.2.2. <A
-HREF="#AEN3201"
->How can I configure OS/2 Warp 3 (not Connect),
- OS/2 1.2, 1.3 or 2.x for Samba?</A
-></DT
-><DT
->24.2.3. <A
-HREF="#AEN3210"
->Are there any other issues when OS/2 (any version)
- is used as a client?</A
-></DT
-><DT
->24.2.4. <A
-HREF="#AEN3214"
->How do I get printer driver download working
- for OS/2 clients?</A
-></DT
-></DL
-></DD
-><DT
->24.3. <A
-HREF="#AEN3224"
->Windows for Workgroups</A
-></DT
-><DD
-><DL
-><DT
->24.3.1. <A
-HREF="#AEN3226"
->Use latest TCP/IP stack from Microsoft</A
-></DT
-><DT
->24.3.2. <A
-HREF="#AEN3231"
->Delete .pwl files after password change</A
-></DT
-><DT
->24.3.3. <A
-HREF="#AEN3236"
->Configure WfW password handling</A
-></DT
-><DT
->24.3.4. <A
-HREF="#AEN3240"
->Case handling of passwords</A
-></DT
-></DL
-></DD
-><DT
->24.4. <A
-HREF="#AEN3245"
->Windows '95/'98</A
-></DT
-><DT
->24.5. <A
-HREF="#AEN3261"
->Windows 2000 Service Pack 2</A
-></DT
-></DL
-></DD
-><DT
->25. <A
-HREF="#BUGREPORT"
->Reporting Bugs</A
-></DT
-><DD
-><DL
-><DT
->25.1. <A
-HREF="#AEN3285"
->Introduction</A
-></DT
-><DT
->25.2. <A
-HREF="#AEN3295"
->General info</A
-></DT
-><DT
->25.3. <A
-HREF="#AEN3301"
->Debug levels</A
-></DT
-><DT
->25.4. <A
-HREF="#AEN3318"
->Internal errors</A
-></DT
-><DT
->25.5. <A
-HREF="#AEN3328"
->Attaching to a running process</A
-></DT
-><DT
->25.6. <A
-HREF="#AEN3331"
->Patches</A
-></DT
-></DL
-></DD
-><DT
->26. <A
-HREF="#DIAGNOSIS"
->Diagnosing your samba server</A
-></DT
-><DD
-><DL
-><DT
->26.1. <A
-HREF="#AEN3354"
->Introduction</A
-></DT
-><DT
->26.2. <A
-HREF="#AEN3359"
->Assumptions</A
-></DT
-><DT
->26.3. <A
-HREF="#AEN3369"
->Tests</A
-></DT
-><DD
-><DL
-><DT
->26.3.1. <A
-HREF="#AEN3371"
->Test 1</A
-></DT
-><DT
->26.3.2. <A
-HREF="#AEN3377"
->Test 2</A
-></DT
-><DT
->26.3.3. <A
-HREF="#AEN3383"
->Test 3</A
-></DT
-><DT
->26.3.4. <A
-HREF="#AEN3398"
->Test 4</A
-></DT
-><DT
->26.3.5. <A
-HREF="#AEN3403"
->Test 5</A
-></DT
-><DT
->26.3.6. <A
-HREF="#AEN3409"
->Test 6</A
-></DT
-><DT
->26.3.7. <A
-HREF="#AEN3417"
->Test 7</A
-></DT
-><DT
->26.3.8. <A
-HREF="#AEN3443"
->Test 8</A
-></DT
-><DT
->26.3.9. <A
-HREF="#AEN3460"
->Test 9</A
-></DT
-><DT
->26.3.10. <A
-HREF="#AEN3468"
->Test 10</A
-></DT
-><DT
->26.3.11. <A
-HREF="#AEN3474"
->Test 11</A
-></DT
-></DL
-></DD
-><DT
->26.4. <A
-HREF="#AEN3479"
->Still having troubles?</A
-></DT
-></DL
-></DD
-></DL
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="PORTABILITY"
-></A
->Chapter 23. Portability</H1
-><P
->Samba works on a wide range of platforms but the interface all the
-platforms provide is not always compatible. This chapter contains
-platform-specific information about compiling and using samba.</P
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3115"
-></A
->23.1. HPUX</H2
-><P
->HP's implementation of supplementary groups is, er, non-standard (for
-hysterical reasons). There are two group files, /etc/group and
-/etc/logingroup; the system maps UIDs to numbers using the former, but
-initgroups() reads the latter. Most system admins who know the ropes
-symlink /etc/group to /etc/logingroup (hard link doesn't work for reasons
-too stupid to go into here). initgroups() will complain if one of the
-groups you're in in /etc/logingroup has what it considers to be an invalid
-ID, which means outside the range [0..UID_MAX], where UID_MAX is (I think)
-60000 currently on HP-UX. This precludes -2 and 65534, the usual 'nobody'
-GIDs.</P
-><P
->If you encounter this problem, make sure that the programs that are failing
-to initgroups() be run as users not in any groups with GIDs outside the
-allowed range.</P
-><P
->This is documented in the HP manual pages under setgroups(2) and passwd(4).</P
-><P
->On HPUX you must use gcc or the HP Ansi compiler. The free compiler
-that comes with HP-UX is not Ansi compliant and cannot compile
-Samba.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3121"
-></A
->23.2. SCO Unix</H2
-><P
->
-If you run an old version of SCO Unix then you may need to get important
-TCP/IP patches for Samba to work correctly. Without the patch, you may
-encounter corrupt data transfers using samba.</P
-><P
->The patch you need is UOD385 Connection Drivers SLS. It is available from
-SCO (ftp.sco.com, directory SLS, files uod385a.Z and uod385a.ltr.Z).</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3125"
-></A
->23.3. DNIX</H2
-><P
->DNIX has a problem with seteuid() and setegid(). These routines are
-needed for Samba to work correctly, but they were left out of the DNIX
-C library for some reason.</P
-><P
->For this reason Samba by default defines the macro NO_EID in the DNIX
-section of includes.h. This works around the problem in a limited way,
-but it is far from ideal, some things still won't work right.</P
-><P
->
-To fix the problem properly you need to assemble the following two
-functions and then either add them to your C library or link them into
-Samba.</P
-><P
->
-put this in the file <TT
-CLASS="FILENAME"
->setegid.s</TT
->:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> .globl _setegid
-_setegid:
- moveq #47,d0
- movl #100,a0
- moveq #1,d1
- movl 4(sp),a1
- trap #9
- bccs 1$
- jmp cerror
-1$:
- clrl d0
- rts</PRE
-></P
-><P
->put this in the file <TT
-CLASS="FILENAME"
->seteuid.s</TT
->:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> .globl _seteuid
-_seteuid:
- moveq #47,d0
- movl #100,a0
- moveq #0,d1
- movl 4(sp),a1
- trap #9
- bccs 1$
- jmp cerror
-1$:
- clrl d0
- rts</PRE
-></P
-><P
->after creating the above files you then assemble them using</P
-><P
-><B
-CLASS="COMMAND"
->as seteuid.s</B
-></P
-><P
-><B
-CLASS="COMMAND"
->as setegid.s</B
-></P
-><P
->that should produce the files <TT
-CLASS="FILENAME"
->seteuid.o</TT
-> and
-<TT
-CLASS="FILENAME"
->setegid.o</TT
-></P
-><P
->then you need to add these to the LIBSM line in the DNIX section of
-the Samba Makefile. Your LIBSM line will then look something like this:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->LIBSM = setegid.o seteuid.o -ln</PRE
-></P
-><P
->
-You should then remove the line:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->#define NO_EID</PRE
-></P
-><P
->from the DNIX section of <TT
-CLASS="FILENAME"
->includes.h</TT
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3154"
-></A
->23.4. RedHat Linux Rembrandt-II</H2
-><P
->By default RedHat Rembrandt-II during installation adds an
-entry to /etc/hosts as follows:
-<PRE
-CLASS="PROGRAMLISTING"
-> 127.0.0.1 loopback "hostname"."domainname"</PRE
-></P
-><P
->This causes Samba to loop back onto the loopback interface.
-The result is that Samba fails to communicate correctly with
-the world and therefor may fail to correctly negotiate who
-is the master browse list holder and who is the master browser.</P
-><P
->Corrective Action: Delete the entry after the word loopback
- in the line starting 127.0.0.1</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="OTHER-CLIENTS"
-></A
->Chapter 24. Samba and other CIFS clients</H1
-><P
->This chapter contains client-specific information.</P
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3175"
-></A
->24.1. Macintosh clients?</H2
-><P
->Yes. <A
-HREF="http://www.thursby.com/"
-TARGET="_top"
->Thursby</A
-> now have a CIFS Client / Server called DAVE - see</P
-><P
->They test it against Windows 95, Windows NT and samba for
-compatibility issues. At the time of writing, DAVE was at version
-1.0.1. The 1.0.0 to 1.0.1 update is available as a free download from
-the Thursby web site (the speed of finder copies has been greatly
-enhanced, and there are bug-fixes included).</P
-><P
->
-Alternatives - There are two free implementations of AppleTalk for
-several kinds of UNIX machnes, and several more commercial ones.
-These products allow you to run file services and print services
-natively to Macintosh users, with no additional support required on
-the Macintosh. The two free omplementations are
-<A
-HREF="http://www.umich.edu/~rsug/netatalk/"
-TARGET="_top"
->Netatalk</A
->, and
-<A
-HREF="http://www.cs.mu.oz.au/appletalk/atalk.html"
-TARGET="_top"
->CAP</A
->.
-What Samba offers MS
-Windows users, these packages offer to Macs. For more info on these
-packages, Samba, and Linux (and other UNIX-based systems) see
-<A
-HREF="http://www.eats.com/linux_mac_win.html"
-TARGET="_top"
->http://www.eats.com/linux_mac_win.html</A
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3184"
-></A
->24.2. OS2 Client</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN3186"
-></A
->24.2.1. How can I configure OS/2 Warp Connect or
- OS/2 Warp 4 as a client for Samba?</H3
-><P
->A more complete answer to this question can be
- found on <A
-HREF="http://carol.wins.uva.nl/~leeuw/samba/warp.html"
-TARGET="_top"
-> http://carol.wins.uva.nl/~leeuw/samba/warp.html</A
->.</P
-><P
->Basically, you need three components:</P
-><P
-></P
-><UL
-><LI
-><P
->The File and Print Client ('IBM Peer')
- </P
-></LI
-><LI
-><P
->TCP/IP ('Internet support')
- </P
-></LI
-><LI
-><P
->The "NetBIOS over TCP/IP" driver ('TCPBEUI')
- </P
-></LI
-></UL
-><P
->Installing the first two together with the base operating
- system on a blank system is explained in the Warp manual. If Warp
- has already been installed, but you now want to install the
- networking support, use the "Selective Install for Networking"
- object in the "System Setup" folder.</P
-><P
->Adding the "NetBIOS over TCP/IP" driver is not described
- in the manual and just barely in the online documentation. Start
- MPTS.EXE, click on OK, click on "Configure LAPS" and click
- on "IBM OS/2 NETBIOS OVER TCP/IP" in 'Protocols'. This line
- is then moved to 'Current Configuration'. Select that line,
- click on "Change number" and increase it from 0 to 1. Save this
- configuration.</P
-><P
->If the Samba server(s) is not on your local subnet, you
- can optionally add IP names and addresses of these servers
- to the "Names List", or specify a WINS server ('NetBIOS
- Nameserver' in IBM and RFC terminology). For Warp Connect you
- may need to download an update for 'IBM Peer' to bring it on
- the same level as Warp 4. See the webpage mentioned above.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3201"
-></A
->24.2.2. How can I configure OS/2 Warp 3 (not Connect),
- OS/2 1.2, 1.3 or 2.x for Samba?</H3
-><P
->You can use the free Microsoft LAN Manager 2.2c Client
- for OS/2 from
- <A
-HREF="ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/"
-TARGET="_top"
-> ftp://ftp.microsoft.com/BusSys/Clients/LANMAN.OS2/</A
->.
- See <A
-HREF="http://carol.wins.uva.nl/~leeuw/lanman.html"
-TARGET="_top"
-> http://carol.wins.uva.nl/~leeuw/lanman.html</A
-> for
- more information on how to install and use this client. In
- a nutshell, edit the file \OS2VER in the root directory of
- the OS/2 boot partition and add the lines:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> 20=setup.exe
- 20=netwksta.sys
- 20=netvdd.sys
- </PRE
-></P
-><P
->before you install the client. Also, don't use the
- included NE2000 driver because it is buggy. Try the NE2000
- or NS2000 driver from
- <A
-HREF="ftp://ftp.cdrom.com/pub/os2/network/ndis/"
-TARGET="_top"
-> ftp://ftp.cdrom.com/pub/os2/network/ndis/</A
-> instead.
- </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3210"
-></A
->24.2.3. Are there any other issues when OS/2 (any version)
- is used as a client?</H3
-><P
->When you do a NET VIEW or use the "File and Print
- Client Resource Browser", no Samba servers show up. This can
- be fixed by a patch from <A
-HREF="http://carol.wins.uva.nl/~leeuw/samba/fix.html"
-TARGET="_top"
-> http://carol.wins.uva.nl/~leeuw/samba/fix.html</A
->.
- The patch will be included in a later version of Samba. It also
- fixes a couple of other problems, such as preserving long
- filenames when objects are dragged from the Workplace Shell
- to the Samba server. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3214"
-></A
->24.2.4. How do I get printer driver download working
- for OS/2 clients?</H3
-><P
->First, create a share called [PRINTDRV] that is
- world-readable. Copy your OS/2 driver files there. Note
- that the .EA_ files must still be separate, so you will need
- to use the original install files, and not copy an installed
- driver from an OS/2 system.</P
-><P
->Install the NT driver first for that printer. Then,
- add to your smb.conf a parameter, os2 driver map =
- <TT
-CLASS="REPLACEABLE"
-><I
->filename</I
-></TT
->". Then, in the file
- specified by <TT
-CLASS="REPLACEABLE"
-><I
->filename</I
-></TT
->, map the
- name of the NT driver name to the OS/2 driver name as
- follows:</P
-><P
-><B
-CLASS="COMMAND"
->nt driver name = os2 "driver
- name"."device name"</B
->, e.g.:
- HP LaserJet 5L = LASERJET.HP LaserJet 5L</P
-><P
->You can have multiple drivers mapped in this file.</P
-><P
->If you only specify the OS/2 driver name, and not the
- device name, the first attempt to download the driver will
- actually download the files, but the OS/2 client will tell
- you the driver is not available. On the second attempt, it
- will work. This is fixed simply by adding the device name
- to the mapping, after which it will work on the first attempt.
- </P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3224"
-></A
->24.3. Windows for Workgroups</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN3226"
-></A
->24.3.1. Use latest TCP/IP stack from Microsoft</H3
-><P
->Use the latest TCP/IP stack from microsoft if you use Windows
-for workgroups.</P
-><P
->The early TCP/IP stacks had lots of bugs.</P
-><P
->
-Microsoft has released an incremental upgrade to their TCP/IP 32-Bit
-VxD drivers. The latest release can be found on their ftp site at
-ftp.microsoft.com, located in /peropsys/windows/public/tcpip/wfwt32.exe.
-There is an update.txt file there that describes the problems that were
-fixed. New files include WINSOCK.DLL, TELNET.EXE, WSOCK.386, VNBT.386,
-WSTCP.386, TRACERT.EXE, NETSTAT.EXE, and NBTSTAT.EXE.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3231"
-></A
->24.3.2. Delete .pwl files after password change</H3
-><P
->WfWg does a lousy job with passwords. I find that if I change my
-password on either the unix box or the PC the safest thing to do is to
-delete the .pwl files in the windows directory. The PC will complain about not finding the files, but will soon get over it, allowing you to enter the new password.</P
-><P
->
-If you don't do this you may find that WfWg remembers and uses the old
-password, even if you told it a new one.</P
-><P
->
-Often WfWg will totally ignore a password you give it in a dialog box.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3236"
-></A
->24.3.3. Configure WfW password handling</H3
-><P
->There is a program call admincfg.exe
-on the last disk (disk 8) of the WFW 3.11 disk set. To install it
-type EXPAND A:\ADMINCFG.EX_ C:\WINDOWS\ADMINCFG.EXE Then add an icon
-for it via the "Progam Manager" "New" Menu. This program allows you
-to control how WFW handles passwords. ie disable Password Caching etc
-for use with <B
-CLASS="COMMAND"
->security = user</B
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3240"
-></A
->24.3.4. Case handling of passwords</H3
-><P
->Windows for Workgroups uppercases the password before sending it to the server. Unix passwords can be case-sensitive though. Check the <A
-HREF="smb.conf.5.html"
-TARGET="_top"
->smb.conf(5)</A
-> information on <B
-CLASS="COMMAND"
->password level</B
-> to specify what characters samba should try to uppercase when checking.</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3245"
-></A
->24.4. Windows '95/'98</H2
-><P
->When using Windows 95 OEM SR2 the following updates are recommended where Samba
-is being used. Please NOTE that the above change will affect you once these
-updates have been installed.</P
-><P
->
-There are more updates than the ones mentioned here. You are referred to the
-Microsoft Web site for all currently available updates to your specific version
-of Windows 95.</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
->Kernel Update: KRNLUPD.EXE</P
-></LI
-><LI
-><P
->Ping Fix: PINGUPD.EXE</P
-></LI
-><LI
-><P
->RPC Update: RPCRTUPD.EXE</P
-></LI
-><LI
-><P
->TCP/IP Update: VIPUPD.EXE</P
-></LI
-><LI
-><P
->Redirector Update: VRDRUPD.EXE</P
-></LI
-></OL
-><P
->Also, if using MS OutLook it is desirable to install the OLEUPD.EXE fix. This
-fix may stop your machine from hanging for an extended period when exiting
-OutLook and you may also notice a significant speedup when accessing network
-neighborhood services.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3261"
-></A
->24.5. Windows 2000 Service Pack 2</H2
-><P
->
-There are several annoyances with Windows 2000 SP2. One of which
-only appears when using a Samba server to host user profiles
-to Windows 2000 SP2 clients in a Windows domain. This assumes
-that Samba is a member of the domain, but the problem will
-likely occur if it is not.</P
-><P
->
-In order to server profiles successfully to Windows 2000 SP2
-clients (when not operating as a PDC), Samba must have
-<B
-CLASS="COMMAND"
->nt acl support = no</B
->
-added to the file share which houses the roaming profiles.
-If this is not done, then the Windows 2000 SP2 client will
-complain about not being able to access the profile (Access
-Denied) and create multiple copies of it on disk (DOMAIN.user.001,
-DOMAIN.user.002, etc...). See the
-<A
-HREF="smb.conf.5.html"
-TARGET="_top"
->smb.conf(5)</A
-> man page
-for more details on this option. Also note that the
-<B
-CLASS="COMMAND"
->nt acl support</B
-> parameter was formally a global parameter in
-releases prior to Samba 2.2.2.</P
-><P
->
-The following is a minimal profile share:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> [profile]
- path = /export/profile
- create mask = 0600
- directory mask = 0700
- nt acl support = no
- read only = no</PRE
-></P
-><P
->The reason for this bug is that the Win2k SP2 client copies
-the security descriptor for the profile which contains
-the Samba server's SID, and not the domain SID. The client
-compares the SID for SAMBA\user and realizes it is
-different that the one assigned to DOMAIN\user. Hence the reason
-for the "access denied" message.</P
-><P
->By disabling the <B
-CLASS="COMMAND"
->nt acl support</B
-> parameter, Samba will send
-the Win2k client a response to the QuerySecurityDescriptor
-trans2 call which causes the client to set a default ACL
-for the profile. This default ACL includes </P
-><P
-><B
-CLASS="COMMAND"
->DOMAIN\user "Full Control"</B
-></P
-><P
-><SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->NOTE : This bug does not occur when using winbind to
-create accounts on the Samba host for Domain users.</I
-></SPAN
-></P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="BUGREPORT"
-></A
->Chapter 25. Reporting Bugs</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN3285"
-></A
->25.1. Introduction</H2
-><P
->The email address for bug reports for stable releases is <A
-HREF="samba@samba.org"
-TARGET="_top"
->samba@samba.org</A
->.
-Bug reports for alpha releases should go to <A
-HREF="mailto:samba-technical@samba.org"
-TARGET="_top"
->samba-technical@samba.org</A
->.</P
-><P
->Please take the time to read this file before you submit a bug
-report. Also, please see if it has changed between releases, as we
-may be changing the bug reporting mechanism at some time.</P
-><P
->Please also do as much as you can yourself to help track down the
-bug. Samba is maintained by a dedicated group of people who volunteer
-their time, skills and efforts. We receive far more mail about it than
-we can possibly answer, so you have a much higher chance of an answer
-and a fix if you send us a "developer friendly" bug report that lets
-us fix it fast. </P
-><P
->Do not assume that if you post the bug to the comp.protocols.smb
-newsgroup or the mailing list that we will read it. If you suspect that your
-problem is not a bug but a configuration problem then it is better to send
-it to the Samba mailing list, as there are (at last count) 5000 other users on
-that list that may be able to help you.</P
-><P
->You may also like to look though the recent mailing list archives,
-which are conveniently accessible on the Samba web pages
-at <A
-HREF="http://samba.org/samba/"
-TARGET="_top"
->http://samba.org/samba/</A
->.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3295"
-></A
->25.2. General info</H2
-><P
->Before submitting a bug report check your config for silly
-errors. Look in your log files for obvious messages that tell you that
-you've misconfigured something and run testparm to test your config
-file for correct syntax.</P
-><P
->Have you run through the <A
-HREF="Diagnosis.html"
-TARGET="_top"
->diagnosis</A
->?
-This is very important.</P
-><P
->If you include part of a log file with your bug report then be sure to
-annotate it with exactly what you were doing on the client at the
-time, and exactly what the results were.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3301"
-></A
->25.3. Debug levels</H2
-><P
->If the bug has anything to do with Samba behaving incorrectly as a
-server (like refusing to open a file) then the log files will probably
-be very useful. Depending on the problem a log level of between 3 and
-10 showing the problem may be appropriate. A higher level givesmore
-detail, but may use too much disk space.</P
-><P
->To set the debug level use <B
-CLASS="COMMAND"
->log level =</B
-> in your
-<TT
-CLASS="FILENAME"
->smb.conf</TT
->. You may also find it useful to set the log
-level higher for just one machine and keep separate logs for each machine.
-To do this use:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->log level = 10
-log file = /usr/local/samba/lib/log.%m
-include = /usr/local/samba/lib/smb.conf.%m</PRE
-></P
-><P
->then create a file
-<TT
-CLASS="FILENAME"
->/usr/local/samba/lib/smb.conf.machine</TT
-> where
-"machine" is the name of the client you wish to debug. In that file
-put any smb.conf commands you want, for example
-<B
-CLASS="COMMAND"
->log level=</B
-> may be useful. This also allows you to
-experiment with different security systems, protocol levels etc on just
-one machine.</P
-><P
->The <TT
-CLASS="FILENAME"
->smb.conf</TT
-> entry <B
-CLASS="COMMAND"
->log level =</B
->
-is synonymous with the entry <B
-CLASS="COMMAND"
->debuglevel =</B
-> that has been
-used in older versions of Samba and is being retained for backwards
-compatibility of smb.conf files.</P
-><P
->As the <B
-CLASS="COMMAND"
->log level =</B
-> value is increased you will record
-a significantly increasing level of debugging information. For most
-debugging operations you may not need a setting higher than 3. Nearly
-all bugs can be tracked at a setting of 10, but be prepared for a VERY
-large volume of log data.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3318"
-></A
->25.4. Internal errors</H2
-><P
->If you get a "INTERNAL ERROR" message in your log files it means that
-Samba got an unexpected signal while running. It is probably a
-segmentation fault and almost certainly means a bug in Samba (unless
-you have faulty hardware or system software)</P
-><P
->If the message came from smbd then it will probably be accompanied by
-a message which details the last SMB message received by smbd. This
-info is often very useful in tracking down the problem so please
-include it in your bug report.</P
-><P
->You should also detail how to reproduce the problem, if
-possible. Please make this reasonably detailed.</P
-><P
->You may also find that a core file appeared in a "corefiles"
-subdirectory of the directory where you keep your samba log
-files. This file is the most useful tool for tracking down the bug. To
-use it you do this:</P
-><P
-><B
-CLASS="COMMAND"
->gdb smbd core</B
-></P
-><P
->adding appropriate paths to smbd and core so gdb can find them. If you
-don't have gdb then try "dbx". Then within the debugger use the
-command "where" to give a stack trace of where the problem
-occurred. Include this in your mail.</P
-><P
->If you known any assembly language then do a "disass" of the routine
-where the problem occurred (if its in a library routine then
-disassemble the routine that called it) and try to work out exactly
-where the problem is by looking at the surrounding code. Even if you
-don't know assembly then incuding this info in the bug report can be
-useful. </P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3328"
-></A
->25.5. Attaching to a running process</H2
-><P
->Unfortunately some unixes (in particular some recent linux kernels)
-refuse to dump a core file if the task has changed uid (which smbd
-does often). To debug with this sort of system you could try to attach
-to the running process using "gdb smbd PID" where you get PID from
-smbstatus. Then use "c" to continue and try to cause the core dump
-using the client. The debugger should catch the fault and tell you
-where it occurred.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3331"
-></A
->25.6. Patches</H2
-><P
->The best sort of bug report is one that includes a fix! If you send us
-patches please use <B
-CLASS="COMMAND"
->diff -u</B
-> format if your version of
-diff supports it, otherwise use <B
-CLASS="COMMAND"
->diff -c4</B
->. Make sure
-your do the diff against a clean version of the source and let me know
-exactly what version you used. </P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="DIAGNOSIS"
-></A
->Chapter 26. Diagnosing your samba server</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN3354"
-></A
->26.1. Introduction</H2
-><P
->This file contains a list of tests you can perform to validate your
-Samba server. It also tells you what the likely cause of the problem
-is if it fails any one of these steps. If it passes all these tests
-then it is probably working fine.</P
-><P
->You should do ALL the tests, in the order shown. We have tried to
-carefully choose them so later tests only use capabilities verified in
-the earlier tests.</P
-><P
->If you send one of the samba mailing lists an email saying "it doesn't work"
-and you have not followed this test procedure then you should not be surprised
-your email is ignored.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3359"
-></A
->26.2. Assumptions</H2
-><P
->In all of the tests it is assumed you have a Samba server called
-BIGSERVER and a PC called ACLIENT both in workgroup TESTGROUP.</P
-><P
->The procedure is similar for other types of clients.</P
-><P
->It is also assumed you know the name of an available share in your
-smb.conf. I will assume this share is called "tmp". You can add a
-"tmp" share like by adding the following to smb.conf:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->&#13;[tmp]
- comment = temporary files
- path = /tmp
- read only = yes&#13;</PRE
-></P
-><P
->THESE TESTS ASSUME VERSION 3.0.0 OR LATER OF THE SAMBA SUITE. SOME
-COMMANDS SHOWN DID NOT EXIST IN EARLIER VERSIONS</P
-><P
->Please pay attention to the error messages you receive. If any error message
-reports that your server is being unfriendly you should first check that you
-IP name resolution is correctly set up. eg: Make sure your /etc/resolv.conf
-file points to name servers that really do exist.</P
-><P
->Also, if you do not have DNS server access for name resolution please check
-that the settings for your smb.conf file results in "dns proxy = no". The
-best way to check this is with "testparm smb.conf"</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3369"
-></A
->26.3. Tests</H2
-><DIV
-CLASS="SECT2"
-><H3
-CLASS="SECT2"
-><A
-NAME="AEN3371"
-></A
->26.3.1. Test 1</H3
-><P
->In the directory in which you store your smb.conf file, run the command
-"testparm smb.conf". If it reports any errors then your smb.conf
-configuration file is faulty.</P
-><P
->Note: Your smb.conf file may be located in: <TT
-CLASS="FILENAME"
->/etc/samba</TT
->
- Or in: <TT
-CLASS="FILENAME"
->/usr/local/samba/lib</TT
-></P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3377"
-></A
->26.3.2. Test 2</H3
-><P
->Run the command "ping BIGSERVER" from the PC and "ping ACLIENT" from
-the unix box. If you don't get a valid response then your TCP/IP
-software is not correctly installed. </P
-><P
->Note that you will need to start a "dos prompt" window on the PC to
-run ping.</P
-><P
->If you get a message saying "host not found" or similar then your DNS
-software or /etc/hosts file is not correctly setup. It is possible to
-run samba without DNS entries for the server and client, but I assume
-you do have correct entries for the remainder of these tests. </P
-><P
->Another reason why ping might fail is if your host is running firewall
-software. You will need to relax the rules to let in the workstation
-in question, perhaps by allowing access from another subnet (on Linux
-this is done via the ipfwadm program.)</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3383"
-></A
->26.3.3. Test 3</H3
-><P
->Run the command "smbclient -L BIGSERVER" on the unix box. You
-should get a list of available shares back. </P
-><P
->If you get a error message containing the string "Bad password" then
-you probably have either an incorrect "hosts allow", "hosts deny" or
-"valid users" line in your smb.conf, or your guest account is not
-valid. Check what your guest account is using "testparm" and
-temporarily remove any "hosts allow", "hosts deny", "valid users" or
-"invalid users" lines.</P
-><P
->If you get a "connection refused" response then the smbd server may
-not be running. If you installed it in inetd.conf then you probably edited
-that file incorrectly. If you installed it as a daemon then check that
-it is running, and check that the netbios-ssn port is in a LISTEN
-state using "netstat -a".</P
-><P
->If you get a "session request failed" then the server refused the
-connection. If it says "Your server software is being unfriendly" then
-its probably because you have invalid command line parameters to smbd,
-or a similar fatal problem with the initial startup of smbd. Also
-check your config file (smb.conf) for syntax errors with "testparm"
-and that the various directories where samba keeps its log and lock
-files exist.</P
-><P
->There are a number of reasons for which smbd may refuse or decline
-a session request. The most common of these involve one or more of
-the following smb.conf file entries:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> hosts deny = ALL
- hosts allow = xxx.xxx.xxx.xxx/yy
- bind interfaces only = Yes</PRE
-></P
-><P
->In the above, no allowance has been made for any session requests that
-will automatically translate to the loopback adaptor address 127.0.0.1.
-To solve this problem change these lines to:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
-> hosts deny = ALL
- hosts allow = xxx.xxx.xxx.xxx/yy 127.</PRE
-></P
-><P
->Do NOT use the "bind interfaces only" parameter where you may wish to
-use the samba password change facility, or where smbclient may need to
-access local service for name resolution or for local resource
-connections. (Note: the "bind interfaces only" parameter deficiency
-where it will not allow connections to the loopback address will be
-fixed soon).</P
-><P
->Another common cause of these two errors is having something already running
-on port 139, such as Samba (ie: smbd is running from inetd already) or
-something like Digital's Pathworks. Check your inetd.conf file before trying
-to start smbd as a daemon, it can avoid a lot of frustration!</P
-><P
->And yet another possible cause for failure of TEST 3 is when the subnet mask
-and / or broadcast address settings are incorrect. Please check that the
-network interface IP Address / Broadcast Address / Subnet Mask settings are
-correct and that Samba has correctly noted these in the log.nmb file.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3398"
-></A
->26.3.4. Test 4</H3
-><P
->Run the command "nmblookup -B BIGSERVER __SAMBA__". You should get the
-IP address of your Samba server back.</P
-><P
->If you don't then nmbd is incorrectly installed. Check your inetd.conf
-if you run it from there, or that the daemon is running and listening
-to udp port 137.</P
-><P
->One common problem is that many inetd implementations can't take many
-parameters on the command line. If this is the case then create a
-one-line script that contains the right parameters and run that from
-inetd.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3403"
-></A
->26.3.5. Test 5</H3
-><P
->run the command <B
-CLASS="COMMAND"
->nmblookup -B ACLIENT '*'</B
-></P
-><P
->You should get the PCs IP address back. If you don't then the client
-software on the PC isn't installed correctly, or isn't started, or you
-got the name of the PC wrong. </P
-><P
->If ACLIENT doesn't resolve via DNS then use the IP address of the
-client in the above test.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3409"
-></A
->26.3.6. Test 6</H3
-><P
->Run the command <B
-CLASS="COMMAND"
->nmblookup -d 2 '*'</B
-></P
-><P
->This time we are trying the same as the previous test but are trying
-it via a broadcast to the default broadcast address. A number of
-Netbios/TCPIP hosts on the network should respond, although Samba may
-not catch all of the responses in the short time it listens. You
-should see "got a positive name query response" messages from several
-hosts.</P
-><P
->If this doesn't give a similar result to the previous test then
-nmblookup isn't correctly getting your broadcast address through its
-automatic mechanism. In this case you should experiment use the
-"interfaces" option in smb.conf to manually configure your IP
-address, broadcast and netmask. </P
-><P
->If your PC and server aren't on the same subnet then you will need to
-use the -B option to set the broadcast address to the that of the PCs
-subnet.</P
-><P
->This test will probably fail if your subnet mask and broadcast address are
-not correct. (Refer to TEST 3 notes above).</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3417"
-></A
->26.3.7. Test 7</H3
-><P
->Run the command <B
-CLASS="COMMAND"
->smbclient //BIGSERVER/TMP</B
->. You should
-then be prompted for a password. You should use the password of the account
-you are logged into the unix box with. If you want to test with
-another account then add the -U &gt;accountname&lt; option to the end of
-the command line. eg:
-<B
-CLASS="COMMAND"
->smbclient //bigserver/tmp -Ujohndoe</B
-></P
-><P
->Note: It is possible to specify the password along with the username
-as follows:
-<B
-CLASS="COMMAND"
->smbclient //bigserver/tmp -Ujohndoe%secret</B
-></P
-><P
->Once you enter the password you should get the "smb&#62;" prompt. If you
-don't then look at the error message. If it says "invalid network
-name" then the service "tmp" is not correctly setup in your smb.conf.</P
-><P
->If it says "bad password" then the likely causes are:</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> you have shadow passords (or some other password system) but didn't
- compile in support for them in smbd
- </P
-></LI
-><LI
-><P
-> your "valid users" configuration is incorrect
- </P
-></LI
-><LI
-><P
-> you have a mixed case password and you haven't enabled the "password
- level" option at a high enough level
- </P
-></LI
-><LI
-><P
-> the "path =" line in smb.conf is incorrect. Check it with testparm
- </P
-></LI
-><LI
-><P
-> you enabled password encryption but didn't create the SMB encrypted
- password file
- </P
-></LI
-></OL
-><P
->Once connected you should be able to use the commands
-<B
-CLASS="COMMAND"
->dir</B
-> <B
-CLASS="COMMAND"
->get</B
-> <B
-CLASS="COMMAND"
->put</B
-> etc.
-Type <B
-CLASS="COMMAND"
->help &gt;command&lt;</B
-> for instructions. You should
-especially check that the amount of free disk space shown is correct
-when you type <B
-CLASS="COMMAND"
->dir</B
->.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3443"
-></A
->26.3.8. Test 8</H3
-><P
->On the PC type the command <B
-CLASS="COMMAND"
->net view \\BIGSERVER</B
->. You will
-need to do this from within a "dos prompt" window. You should get back a
-list of available shares on the server.</P
-><P
->If you get a "network name not found" or similar error then netbios
-name resolution is not working. This is usually caused by a problem in
-nmbd. To overcome it you could do one of the following (you only need
-to choose one of them):</P
-><P
-></P
-><OL
-TYPE="1"
-><LI
-><P
-> fixup the nmbd installation</P
-></LI
-><LI
-><P
-> add the IP address of BIGSERVER to the "wins server" box in the
- advanced tcp/ip setup on the PC.</P
-></LI
-><LI
-><P
-> enable windows name resolution via DNS in the advanced section of
- the tcp/ip setup</P
-></LI
-><LI
-><P
-> add BIGSERVER to your lmhosts file on the PC.</P
-></LI
-></OL
-><P
->If you get a "invalid network name" or "bad password error" then the
-same fixes apply as they did for the "smbclient -L" test above. In
-particular, make sure your "hosts allow" line is correct (see the man
-pages)</P
-><P
->Also, do not overlook that fact that when the workstation requests the
-connection to the samba server it will attempt to connect using the
-name with which you logged onto your Windows machine. You need to make
-sure that an account exists on your Samba server with that exact same
-name and password.</P
-><P
->If you get "specified computer is not receiving requests" or similar
-it probably means that the host is not contactable via tcp services.
-Check to see if the host is running tcp wrappers, and if so add an entry in
-the hosts.allow file for your client (or subnet, etc.)</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3460"
-></A
->26.3.9. Test 9</H3
-><P
->Run the command <B
-CLASS="COMMAND"
->net use x: \\BIGSERVER\TMP</B
->. You should
-be prompted for a password then you should get a "command completed
-successfully" message. If not then your PC software is incorrectly
-installed or your smb.conf is incorrect. make sure your "hosts allow"
-and other config lines in smb.conf are correct.</P
-><P
->It's also possible that the server can't work out what user name to
-connect you as. To see if this is the problem add the line "user =
-USERNAME" to the [tmp] section of smb.conf where "USERNAME" is the
-username corresponding to the password you typed. If you find this
-fixes things you may need the username mapping option. </P
-><P
->It might also be the case that your client only sends encrypted passwords
-and you have <B
-CLASS="COMMAND"
->encrypt passwords = no</B
-> in <TT
-CLASS="FILENAME"
->smb.conf</TT
->.
-Turn it back on to fix.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3468"
-></A
->26.3.10. Test 10</H3
-><P
->Run the command <B
-CLASS="COMMAND"
->nmblookup -M TESTGROUP</B
-> where
-TESTGROUP is the name of the workgroup that your Samba server and
-Windows PCs belong to. You should get back the IP address of the
-master browser for that workgroup.</P
-><P
->If you don't then the election process has failed. Wait a minute to
-see if it is just being slow then try again. If it still fails after
-that then look at the browsing options you have set in smb.conf. Make
-sure you have <B
-CLASS="COMMAND"
->preferred master = yes</B
-> to ensure that
-an election is held at startup.</P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3474"
-></A
->26.3.11. Test 11</H3
-><P
->From file manager try to browse the server. Your samba server should
-appear in the browse list of your local workgroup (or the one you
-specified in smb.conf). You should be able to double click on the name
-of the server and get a list of shares. If you get a "invalid
-password" error when you do then you are probably running WinNT and it
-is refusing to browse a server that has no encrypted password
-capability and is in user level security mode. In this case either set
-<B
-CLASS="COMMAND"
->security = server</B
-> AND
-<B
-CLASS="COMMAND"
->password server = Windows_NT_Machine</B
-> in your
-smb.conf file, or enable encrypted passwords AFTER compiling in support
-for encrypted passwords (refer to the Makefile).</P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3479"
-></A
->26.4. Still having troubles?</H2
-><P
->Try the mailing list or newsgroup, or use the ethereal utility to
-sniff the problem. The official samba mailing list can be reached at
-<A
-HREF="mailto:samba@samba.org"
-TARGET="_top"
->samba@samba.org</A
->. To find
-out more about samba and how to subscribe to the mailing list check
-out the samba web page at
-<A
-HREF="http://samba.org/samba"
-TARGET="_top"
->http://samba.org/samba</A
-></P
-><P
->Also look at the other docs in the Samba package!</P
-></DIV
-></DIV
-></DIV
-></DIV
-></BODY
-></HTML
-> \ No newline at end of file
diff --git a/docs/roadmap-3.html b/docs/roadmap-3.html
index 4028a7bbdc..00fd31b32e 100644
--- a/docs/roadmap-3.html
+++ b/docs/roadmap-3.html
@@ -56,7 +56,7 @@
<h3>Roadmap to 3.0</h3>
-<p><em>Page Last Updated</em> : $Date: 2003/01/16 02:20:24 $</em>
+<p><em>Page Last Updated</em> : $Date: 2002/11/01 15:24:20 $</em>
<p><em>Estimated shipdate</em> : When it is ready.
<p><em>Current Alpha Release</em> : <a href="http://www.samba.org/samba/ftp/alpha/samba-3.0alpha20.tar.gz">Samba-3.0alpha20</a>
<p><em>Goals for 3.0alpha21 Release</em> :
diff --git a/docs/textdocs/RPC_PLUGIN.txt b/docs/textdocs/RPC_PLUGIN.txt
deleted file mode 100644
index b8e59ecdd2..0000000000
--- a/docs/textdocs/RPC_PLUGIN.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-RPC Pluggable Modules How-To
-----------------------------
-
-About
------
-This document describes how to make use the new RPC Pluggable Modules features
-of Samba 3.0. This architecture was added to increase the maintainability of
-Samba allowing RPC Pipes to be worked on separately from the main CVS branch.
-The RPM architecture will also allow third-party vendors to add functionality
-to Samba through plug-ins.
-
-General Overview
-----------------
-When an RPC call is sent to smbd, smbd tries to load a shared library by the
-name librpc_<pipename>.so to handle the call if it doesn't know how to handle
-the call internally. For instance, LSA calls are handled by librpc_lsass.so.
-These shared libraries should be located in the <sambaroot>/lib/rpc. smbd then
-attempts to call the rpc_pipe_init function within the shared library.
-
-In the rpc_pipe_init function, the library should call
-rpc_pipe_register_commands(). This function takes the following arguments:
-
-int rpc_pipe_register_commands(const char *clnt, const char *srv,
- const struct api_struct *cmds, int size);
-
-clnt - the Client name of the named pipe.
-srv - the Server name of the named pipe.
-cmds - a list of api_structs that map RPC ordinal numbers to function calls.
-size - the number of api_structs contained in cmds.
-
-See rpc_server/srv_reg.c and rpc_server/srv_reg_nt.c for a small example of
-how to use this library.
-
-- Anthony Liguori <aliguor@us.ibm.com>
diff --git a/examples/LDAP/export_smbpasswd.pl b/examples/LDAP/export_smbpasswd.pl
new file mode 100644
index 0000000000..3f67dc6242
--- /dev/null
+++ b/examples/LDAP/export_smbpasswd.pl
@@ -0,0 +1,63 @@
+#!/usr/bin/perl
+##
+## Example script to export ldap entries into an smbpasswd file format
+## using the Mozilla PerLDAP module.
+##
+## writen by jerry@samba.org
+##
+
+use Mozilla::LDAP::Conn;
+use Mozilla::LDAP::Entry;
+
+######################################################
+## Set these values to whatever you need for your site
+##
+
+$DN="ou=people,dc=plainjoe,dc=org";
+$ROOTDN="cn=Manager,dc=plainjoe,dc=org";
+$rootpw = "secret";
+$LDAPSERVER="localhost";
+
+##
+## end local site variables
+######################################################
+
+
+$conn = new Mozilla::LDAP::Conn ("$LDAPSERVER", "389", $ROOTDN, $rootpw );
+die "Unable to connect to LDAP server $LDAPSERVER" unless $conn;
+
+print "##\n";
+print "## Autogenerated smbpasswd file via ldapsearch\n";
+print "## from $LDAPSERVER ($DN)\n";
+print "##\n";
+
+## scheck for the existence of the posixAccount first
+$result = $conn->search ("$DN", "sub", "(objectclass=smbPasswordEntry)");
+
+
+## loop over the entries we found
+while ($result) {
+
+ @uid = $result->getValue("uid");
+ @uidNumber = $result->getValue("uidNumber");
+ @lm_pw = $result->getValue("lmpassword");
+ @nt_pw = $result->getValue("ntpassword");
+ @acct = $result->getValue("acctFlags");
+ @pwdLastSet = $result->getValue("pwdLastSet");
+
+ if (($#uid+1) && ($#uidNumber+1)) {
+
+ $lm_pw[0] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if (! ($#lm_pw+1));
+ $nt_pw[0] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if (! ($#nt_pw+1));
+ $acct[0] = "[DU ]" if (! ($#acct+1));
+ $pwdLastSet[0] = "FFFFFFFF" if (! ($#pwdLastSet+1));
+
+ print "$uid[0]:$uidNumber[0]:$lm_pw[0]:$nt_pw[0]:$acct[0]:LCT-$pwdLastSet[0]\n";
+ }
+
+ $result = $conn->nextEntry();
+
+}
+
+$conn->close();
+exit 0;
diff --git a/examples/LDAP/import_smbpasswd.pl b/examples/LDAP/import_smbpasswd.pl
new file mode 100644
index 0000000000..14aeff967f
--- /dev/null
+++ b/examples/LDAP/import_smbpasswd.pl
@@ -0,0 +1,65 @@
+#!/usr/bin/perl
+##
+## Example script of how you could import and smbpasswd file into an LDAP
+## directory using the Mozilla PerLDAP module.
+##
+## writen by jerry@samba.org
+##
+
+use Mozilla::LDAP::Conn;
+use Mozilla::LDAP::Entry;
+
+#################################################
+## set these to a value appropriate for your site
+##
+
+$DN="ou=people,dc=plainjoe,dc=org";
+$ROOTDN="cn=Manager,dc=plainjoe,dc=org";
+$rootpw = "secret";
+$LDAPSERVER="localhost";
+
+##
+## end local site variables
+#################################################
+
+$conn = new Mozilla::LDAP::Conn ("$LDAPSERVER", "389", $ROOTDN, $rootpw );
+die "Unable to connect to LDAP server $LDAPSERVER" unless $conn;
+
+
+while ( $string = <STDIN> ) {
+ chop ($string);
+
+ ## get the account information
+ @smbentry = split (/:/, $string);
+
+ ## check for the existence of the posixAccount first
+
+ ## FIXME!! Should do a getownam() and let the NSS modules lookup the account
+ ## This way you can have a UNIX account in /etc/passwd and the smbpasswd i
+ ## entry in LDAP.
+ $result = $conn->search ("$DN", "sub", "(&(uid=$smbentry[0])(objectclass=posixAccount))");
+ if ( ! $result ) {
+ print STDERR "uid=$smbentry[0] does not have a posixAccount entry in the directory!\n";
+ next;
+ }
+
+ print "Updating [" . $result->getDN() . "]\n";
+
+ ## Do we need to add the 'objectclass: smbPasswordEntry' attribute?
+ if (! $result->hasValue("objectclass", "smbPasswordEntry")) {
+ $result->addValue("objectclass", "smbPasswordEntry");
+ }
+
+ ## Set other attribute values
+ $result->setValues ("lmPassword", $smbentry[2]);
+ $result->setValues ("ntPassword", $smbentry[3]);
+ $result->setValues ("acctFlags", $smbentry[4]);
+ $result->setValues ("pwdLastSet", substr($smbentry[5],4));
+
+ if (! $conn->update($result)) {
+ print "Error updating!\n";
+ }
+}
+
+$conn->close();
+exit 0;
diff --git a/examples/pdb/README b/examples/pdb/README
index 7fe4524882..561473129b 100644
--- a/examples/pdb/README
+++ b/examples/pdb/README
@@ -1,7 +1,46 @@
README for Samba Password Database (PDB) examples
====================================================
-Jelmer Vernooij <jelmer@nl.linux.org>
-Stefan (metze) Metzmacher <metze@metzemix.de>
+8-8-2002 Jelmer Vernooij <jelmer@samba.org>
+
+Added mysql and xml modules. See README in xml/ and mysql/ for details.
+
+21-6-2002 Stefan (metze) Metzmacher <metze@metzemix.de>
+
+I have added an interface versioning.
+
+Every module MUST have a pdb_version() function.
+
+this is defined in include/passdb.h:
+#define PDB_MODULE_VERSIONING_MAGIC \
+int pdb_version(void)\
+{\
+ return PASSDB_INTERFACE_VERSION;\
+}
+
+You MUST add this line inside a module:
+PDB_MODULE_VERSIONING_MAGIC
+
+21-6-2002 Stefan (metze) Metzmacher <metze@metzemix.de>
+
+The pdb_interface was changed:
+
+this function are deleted:
+static BOOL testsam_getsampwrid (struct pdb_methods *methods, SAM_ACCOUNT *user, uint32 rid)
+
+this function are added:
+static BOOL testsam_getsampwsid (struct pdb_methods *methods, SAM_ACCOUNT *user, DOM_SID sid)
+
+In the SAM_ACCOUNT struct:
+
+this fields are deleted:
+uint32 user_rid;
+uint32 group_rid;
+
+this fields are added:
+DOM_SID user_sid;
+DOM_SID group_sid;
+
+15-2-2002 Jelmer Vernooij <jelmer@nl.linux.org>
The pdb_test.c file in this directory contains a very basic example of
a pdb plugin. It just prints the name of the function that is executed using
@@ -11,5 +50,6 @@ future too..
To debug passdb backends, try to run gdb on the 'pdbedit' executable. That's really much easier than restarting smbd constantly and attaching with your debugger.
New passdb plugins should go into the samba lib directory, (/usr/lib/samba/ for
-most distributions). An example would be: /usr/lib/samba/test.so
+most distributions) and should be prefixed with 'pdb_'. An example would be:
+/usr/lib/samba/pdb_test.so
diff --git a/examples/pdb/pdb_test.c b/examples/pdb/pdb_test.c
index f5fb57ddb2..c5ba094e42 100644
--- a/examples/pdb/pdb_test.c
+++ b/examples/pdb/pdb_test.c
@@ -25,6 +25,9 @@ static int testsam_debug_level = DBGC_ALL;
#undef DBGC_CLASS
#define DBGC_CLASS testsam_debug_level
+/* define the version of the passdb interface */
+PDB_MODULE_VERSIONING_MAGIC
+
/***************************************************************
Start enumeration of the passwd list.
****************************************************************/
@@ -104,7 +107,7 @@ static NTSTATUS testsam_add_sam_account (struct pdb_methods *methods, SAM_ACCOUN
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS testsam_init(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const char *location)
+NTSTATUS pdb_init(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const char *location)
{
NTSTATUS nt_status;
@@ -138,12 +141,3 @@ NTSTATUS testsam_init(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const
return NT_STATUS_OK;
}
-
-int init_module(void);
-
-int init_module() {
- if(smb_register_passdb("testsam", testsam_init, PASSDB_INTERFACE_VERSION))
- return 0;
-
- return 1;
-}
diff --git a/examples/printing/smbprint.old b/examples/printing/smbprint.old
deleted file mode 100755
index 5a00a2a8aa..0000000000
--- a/examples/printing/smbprint.old
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/bin/sh
-
-# This script is an input filter for printcap printing on a unix machine. It
-# uses the smbclient program to print the file to the specified smb-based
-# server and service.
-# For example you could have a printcap entry like this
-#
-# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
-#
-# which would create a unix printer called "smb" that will print via this
-# script. You will need to create the spool directory /usr/spool/smb with
-# appropriate permissions and ownerships for your system.
-
-# Set these to the server and service you wish to print to
-# In this example I have a WfWg PC called "lapland" that has a printer
-# exported called "printer" with no password.
-
-#
-# Script further altered by hamiltom@ecnz.co.nz (Michael Hamilton)
-# so that the server, service, and password can be read from
-# a /usr/var/spool/lpd/PRINTNAME/.config file.
-#
-# Script further modified by Richard Sharpe to fix some things.
-# Get rid of the -x on the first line, and add parameters
-#
-# -t now causes translate to be used when sending files
-#
-# In order for this to work the /etc/printcap entry must include an
-# accounting file (af=...):
-#
-# cdcolour:\
-# :cm=CD IBM Colorjet on 6th:\
-# :sd=/var/spool/lpd/cdcolour:\
-# :af=/var/spool/lpd/cdcolour/acct:\
-# :if=/usr/local/etc/smbprint:\
-# :mx=0:\
-# :lp=/dev/null:
-#
-# The /usr/var/spool/lpd/PRINTNAME/.config file should contain:
-# server=PC_SERVER
-# service=PR_SHARENAME
-# password="password"
-#
-# E.g.
-# server=PAULS_PC
-# service=CJET_371
-# password=""
-
-#
-# Debugging log file, change to /dev/null if you like.
-#
-logfile=/tmp/smb-print.log
-# logfile=/dev/null
-
-
-#
-# The last parameter to the filter is the accounting file name.
-# Extract the directory name from the file name.
-# Concat this with /.config to get the config file.
-#
-TRANS=0
-eval acct_file=\${$#}
-spool_dir=`dirname $acct_file`
-config_file=$spool_dir/.config
-
-# Should read the following variables set in the config file:
-# server
-# service
-# password
-eval `cat $config_file`
-
-while getopts t c; do
- case $c in
- t)
- TRANS=1
- ;;
-
- '?') # Bad parameters, ignore it ...
- ;;
- esac
-done
-#
-# Some debugging help, change the >> to > if you want to same space.
-#
-echo "server $server, service $service" >> $logfile
-
-(
-# NOTE You may wish to add the line `echo translate' if you want automatic
-# CR/LF translation when printing.
- if [ $TRANS -eq 1 ]; then
- echo translate
- fi
- echo "print -"
- cat
-) | /usr/local/samba/bin/smbclient "\\\\$server\\$service" $password -U $server -N -P >> $logfile
diff --git a/examples/sam/.cvsignore b/examples/sam/.cvsignore
deleted file mode 100644
index f3c7a7c5da..0000000000
--- a/examples/sam/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-Makefile
diff --git a/examples/sam/Makefile.in b/examples/sam/Makefile.in
deleted file mode 100644
index d5df346a8c..0000000000
--- a/examples/sam/Makefile.in
+++ /dev/null
@@ -1,28 +0,0 @@
-CC = @CC@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-LDFLAGS = @LDFLAGS@
-LDSHFLAGS = -shared
-srcdir = @builddir@
-FLAGS = $(CFLAGS) -Iinclude -I$(srcdir)/include -I$(srcdir)/ubiqx -I$(srcdir)/smbwrapper -I. $(CPPFLAGS) -I$(srcdir)
-
-SAM_OBJS = sam_skel.so
-
-# Default target
-
-default: $(SAM_OBJS)
-
-# Pattern rules
-
-%.so: %.o
- $(CC) $(LDSHFLAGS) $(LDFLAGS) -o $@ $<
-
-%.o: %.c
- $(CC) $(FLAGS) -c $<
-
-# Misc targets
-
-clean:
- rm -rf .libs
- rm -f core *~ *% *.bak \
- $(SAM_OBJ) $(SAM_OBJS)
diff --git a/examples/sam/README b/examples/sam/README
deleted file mode 100644
index 9e9fbb26db..0000000000
--- a/examples/sam/README
+++ /dev/null
@@ -1,29 +0,0 @@
-README for Samba SAM Database examples
-====================================================
-26-08-2002 Stefan (metze) Metzmacher <metze@metzemix.de>
-
-Every module MUST have a sam_version() function.
-
-this is defined in include/sam.h:
-#define SAM_MODULE_VERSIONING_MAGIC \
-int sam_version(void)\
-{\
- return SAM_INTERFACE_VERSION;\
-}
-
-You MUST add this line inside a module:
-SAM_MODULE_VERSIONING_MAGIC
-
-
-The sam_skel.c file in this directory contains a very basic example of
-a SAM plugin. It just prints the name of the function that is executed using
-DEBUG. Maybe it's nice to include some of the arguments to the function in the
-future too..
-
-New SAM plugins should go into the samba lib directory, (/usr/lib/samba/
-for most distributions) and should be prefixed with 'sam_' and should go into the
-subdir sam/. The SAM subsystem will search in /usr/lib/samba/sam and fall back to
-/usr/lib/samba/ .
-An example path would be:
-/usr/lib/samba/sam/sam_skel.so
-
diff --git a/examples/sam/sam_skel.c b/examples/sam/sam_skel.c
deleted file mode 100644
index da3a375894..0000000000
--- a/examples/sam/sam_skel.c
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- this is a skeleton for SAM backend modules.
-
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Jelmer Vernooij 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-static int sam_skel_debug_level = DBGC_SAM;
-
-#undef DBGC_CLASS
-#define DBGC_CLASS sam_skel_debug_level
-
-/* define the version of the SAM interface */
-SAM_MODULE_VERSIONING_MAGIC
-
-/* General API */
-
-NTSTATUS sam_skel_get_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_set_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-NTSTATUS sam_skel_lookup_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, char **name, uint32 *type)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_lookup_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const char *name, DOM_SID **sid, uint32 *type)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Domain API */
-
-NTSTATUS sam_skel_update_domain(const SAM_METHODS *sam_methods, const SAM_DOMAIN_HANDLE *domain)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_domain_handle(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, SAM_DOMAIN_HANDLE **domain)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Account API */
-
-NTSTATUS sam_skel_create_account(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *group_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_add_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_update_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_delete_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_enum_accounts(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-NTSTATUS sam_skel_get_account_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_account_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Group API */
-
-NTSTATUS sam_skel_create_group(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_add_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_update_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_delete_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_enum_groups(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_group_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_get_group_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-NTSTATUS sam_skel_add_member_to_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_delete_member_from_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_skel_enum_groupmembers(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-NTSTATUS sam_skel_get_groups_of_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups)
-{
- DEBUG(0,("sam_skel: %s was called!\n",__FUNCTION__));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_init(SAM_METHODS *sam_methods, const char *module_params)
-{
- /* Functions your SAM module doesn't provide should be set
- * to NULL */
-
- sam_methods->sam_get_sec_desc = sam_skel_get_sec_desc;
- sam_methods->sam_set_sec_desc = sam_skel_set_sec_desc;
-
- sam_methods->sam_lookup_sid = sam_skel_lookup_sid;
- sam_methods->sam_lookup_name = sam_skel_lookup_name;
-
- /* Domain API */
-
- sam_methods->sam_update_domain = sam_skel_update_domain;
- sam_methods->sam_get_domain_handle = sam_skel_get_domain_handle;
-
- /* Account API */
-
- sam_methods->sam_create_account = sam_skel_create_account;
- sam_methods->sam_add_account = sam_skel_add_account;
- sam_methods->sam_update_account = sam_skel_update_account;
- sam_methods->sam_delete_account = sam_skel_delete_account;
- sam_methods->sam_enum_accounts = sam_skel_enum_accounts;
-
- sam_methods->sam_get_account_by_sid = sam_skel_get_account_by_sid;
- sam_methods->sam_get_account_by_name = sam_skel_get_account_by_name;
-
- /* Group API */
-
- sam_methods->sam_create_group = sam_skel_create_group;
- sam_methods->sam_add_group = sam_skel_add_group;
- sam_methods->sam_update_group = sam_skel_update_group;
- sam_methods->sam_delete_group = sam_skel_delete_group;
- sam_methods->sam_enum_groups = sam_skel_enum_groups;
- sam_methods->sam_get_group_by_sid = sam_skel_get_group_by_sid;
- sam_methods->sam_get_group_by_name = sam_skel_get_group_by_name;
-
- sam_methods->sam_add_member_to_group = sam_skel_add_member_to_group;
- sam_methods->sam_delete_member_from_group = sam_skel_delete_member_from_group;
- sam_methods->sam_enum_groupmembers = sam_skel_enum_groupmembers;
-
- sam_methods->sam_get_groups_of_sid = sam_skel_get_groups_of_sid;
-
- sam_methods->free_private_data = NULL;
-
-
- sam_skel_debug_level = debug_add_class("sam_skel");
- if (sam_skel_debug_level == -1) {
- sam_skel_debug_level = DBGC_SAM;
- DEBUG(0, ("sam_skel: Couldn't register custom debugging class!\n"));
- } else DEBUG(2, ("sam_skel: Debug class number of 'sam_skel': %d\n", sam_skel_debug_level));
-
- if(module_params)
- DEBUG(0, ("Starting 'sam_skel' with parameters '%s' for domain %s\n", module_params, sam_methods->domain_name));
- else
- DEBUG(0, ("Starting 'sam_skel' for domain %s without paramters\n", sam_methods->domain_name));
-
- return NT_STATUS_OK;
-}
diff --git a/source3/Makefile.in b/source3/Makefile.in
index 7e7dd6fbd7..db9203e7cb 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -3,7 +3,6 @@
# Copyright Andrew Tridgell 1992-1998
# Copyright (C) 2001 by Martin Pool <mbp@samba.org>
# Copyright Andrew Barteltt 2002
-# Copyright (C) 2003 Anthony Liguori <aliguor@us.ibm.com>
###########################################################################
prefix=@prefix@
@@ -50,7 +49,6 @@ SBINDIR = @sbindir@
LIBDIR = @libdir@
VFSLIBDIR = $(LIBDIR)/vfs
PDBLIBDIR = $(LIBDIR)/pdb
-RPCLIBDIR = $(LIBDIR)/rpc
CONFIGDIR = @configdir@
VARDIR = @localstatedir@
MANDIR = @mandir@
@@ -99,8 +97,7 @@ PATH_FLAGS1 = -DCONFIGFILE=\"$(CONFIGFILE)\" -DSBINDIR=\"$(SBINDIR)\"
PATH_FLAGS2 = $(PATH_FLAGS1) -DBINDIR=\"$(BINDIR)\" -DDRIVERFILE=\"$(DRIVERFILE)\"
PATH_FLAGS3 = $(PATH_FLAGS2) -DLMHOSTSFILE=\"$(LMHOSTSFILE)\"
PATH_FLAGS4 = $(PATH_FLAGS3) -DSWATDIR=\"$(SWATDIR)\" -DLOCKDIR=\"$(LOCKDIR)\" -DPIDDIR=\"$(PIDDIR)\"
-PATH_FLAGS5 = $(PATH_FLAGS4) -DLIBDIR=\"$(LIBDIR)\" \
- -DLOGFILEBASE=\"$(LOGFILEBASE)\" -DSHLIBEXT=\"@SHLIBEXT@\"
+PATH_FLAGS5 = $(PATH_FLAGS4) -DLIBDIR=\"$(LIBDIR)\" -DLOGFILEBASE=\"$(LOGFILEBASE)\"
PATH_FLAGS6 = $(PATH_FLAGS5) -DCONFIGDIR=\"$(CONFIGDIR)\"
PATH_FLAGS = $(PATH_FLAGS6) $(PASSWD_FLAGS)
@@ -114,8 +111,7 @@ BIN_PROGS1 = bin/smbclient@EXEEXT@ bin/net@EXEEXT@ bin/smbspool@EXEEXT@ \
BIN_PROGS2 = bin/smbcontrol@EXEEXT@ bin/smbtree@EXEEXT@ bin/tdbbackup@EXEEXT@ \
bin/nmblookup@EXEEXT@ bin/pdbedit@EXEEXT@
BIN_PROGS3 = bin/smbpasswd@EXEEXT@ bin/rpcclient@EXEEXT@ bin/smbcacls@EXEEXT@ \
- bin/profiles@EXEEXT@ bin/smbgroupedit@EXEEXT@ bin/ntlm_auth@EXEEXT@ \
- bin/editreg@EXEEXT@
+ bin/profiles@EXEEXT@ bin/smbgroupedit@EXEEXT@
TORTURE_PROGS = bin/smbtorture@EXEEXT@ bin/msgtest@EXEEXT@ \
bin/masktest@EXEEXT@ bin/locktest@EXEEXT@ \
@@ -130,9 +126,8 @@ SCRIPTS = $(srcdir)/script/smbtar $(srcdir)/script/addtosmbpass $(srcdir)/script
QUOTAOBJS=@QUOTAOBJS@
-VFS_MODULES = bin/vfs_audit.@SHLIBEXT@ bin/vfs_recycle.@SHLIBEXT@ bin/vfs_netatalk.@SHLIBEXT@ bin/vfs_fake_perms.@SHLIBEXT@
+VFS_MODULES = bin/vfs_audit.@SHLIBEXT@ bin/vfs_recycle.@SHLIBEXT@ bin/vfs_netatalk.@SHLIBEXT@
PDB_MODULES = @MODULE_MYSQL@ @MODULE_XML@
-MODULES = bin/developer.@SHLIBEXT@
######################################################################
# object file lists
@@ -158,8 +153,7 @@ LIB_OBJ = lib/charcnv.o lib/debug.o lib/fault.o \
lib/md5.o lib/hmacmd5.o lib/iconv.o lib/smbpasswd.o \
nsswitch/wb_client.o nsswitch/wb_common.o \
lib/pam_errors.o intl/lang_tdb.o lib/account_pol.o \
- lib/adt_tree.o lib/gencache.o $(TDB_OBJ) \
- lib/module.o lib/genparser.o lib/genparser_samba.o
+ lib/adt_tree.o lib/gencache.o $(TDB_OBJ)
LIB_SMBD_OBJ = lib/system_smbd.o lib/util_smbd.o
@@ -168,7 +162,7 @@ READLINE_OBJ = lib/readline.o
POPT_LIB_OBJ = lib/popt_common.o
UBIQX_OBJ = ubiqx/ubi_BinTree.o ubiqx/ubi_Cache.o ubiqx/ubi_SplayTree.o \
- ubiqx/ubi_dLinkList.o ubiqx/ubi_sLinkList.o
+ ubiqx/ubi_dLinkList.o ubiqx/ubi_sLinkList.o ubiqx/debugparse.o
PARAM_OBJ = param/loadparm.o param/params.o dynconfig.o
@@ -192,8 +186,7 @@ LIBSMB_OBJ = libsmb/clientgen.o libsmb/cliconnect.o libsmb/clifile.o \
libsmb/smberr.o libsmb/credentials.o libsmb/pwd_cache.o \
libsmb/clioplock.o libsmb/errormap.o libsmb/clirap2.o \
libsmb/passchange.o libsmb/unexpected.o libsmb/doserr.o \
- libsmb/namecache.o libsmb/trustdom_cache.o libsmb/ntlmssp.o \
- $(RPC_PARSE_OBJ1)
+ libsmb/namecache.o $(RPC_PARSE_OBJ1)
LIBMSRPC_OBJ = rpc_client/cli_lsarpc.o rpc_client/cli_samr.o \
rpc_client/cli_netlogon.o rpc_client/cli_srvsvc.o \
@@ -204,52 +197,20 @@ LIBMSRPC_OBJ = rpc_client/cli_lsarpc.o rpc_client/cli_samr.o \
LIBMSRPC_SERVER_OBJ = libsmb/trust_passwd.o
+LIBMSRPC_PICOBJ = $(LIBMSRPC_OBJ:.o=.po)
+
REGOBJS_OBJ = registry/reg_objects.o
REGISTRY_OBJ = registry/reg_frontend.o registry/reg_cachehook.o registry/reg_printing.o \
registry/reg_db.o
-RPC_LSA_OBJ = rpc_server/srv_lsa.o rpc_server/srv_lsa_nt.o
-
-RPC_NETLOG_OBJ = rpc_server/srv_netlog.o rpc_server/srv_netlog_nt.o
-
-RPC_SAMR_OBJ = rpc_server/srv_samr.o rpc_server/srv_samr_nt.o \
- rpc_server/srv_samr_util.o
-
-RPC_REG_OBJ = rpc_server/srv_reg.o rpc_server/srv_reg_nt.o
-
-RPC_SVC_OBJ = rpc_server/srv_srvsvc.o rpc_server/srv_srvsvc_nt.o
-
-RPC_WKS_OBJ = rpc_server/srv_wkssvc.o rpc_server/srv_wkssvc_nt.o
-
-RPC_DFS_OBJ = rpc_server/srv_dfs.o rpc_server/srv_dfs_nt.o
-RPC_SPOOLSS_OBJ = rpc_server/srv_spoolss.o rpc_server/srv_spoolss_nt.o
-
-RPC_PIPE_OBJ = rpc_server/srv_pipe_hnd.o rpc_server/srv_util.o \
- rpc_server/srv_pipe.o rpc_server/srv_lsa_hnd.o
-
-# These are like they are to avoid a dependency on GNU MAKE
-@LSA_DYNAMIC_YES@RPC_MODULES1 = bin/librpc_lsarpc.@SHLIBEXT@
-@NETLOG_DYNAMIC_YES@RPC_MODULES2 = bin/librpc_NETLOGON.@SHLIBEXT@
-@SAMR_DYNAMIC_YES@RPC_MODULES3 = bin/librpc_samr.@SHLIBEXT@
-@SVC_DYNAMIC_YES@RPC_MODULES4 = bin/librpc_srvsvc.@SHLIBEXT@
-@WKS_DYNAMIC_YES@RPC_MODULES5 = bin/librpc_wkssvc.@SHLIBEXT@
-@REG_DYNAMIC_YES@RPC_MODULES6 = bin/librpc_winreg.@SHLIBEXT@
-@SPOOLSS_DYNAMIC_YES@RPC_MODULES7 = bin/librpc_spoolss.@SHLIBEXT@
-@DFS_DYNAMIC_YES@RPC_MODULES8 = bin/librpc_netdfs.@SHLIBEXT@
-RPC_MODULES = $(RPC_MODULES1) $(RPC_MODULES2) $(RPC_MODULES3) $(RPC_MODULES4) \
- $(RPC_MODULES5) $(RPC_MODULES6) $(RPC_MODULES7) $(RPC_MODULES8)
-
-@LSA_DYNAMIC_NO@RPC_PIPE_OBJ1 = $(RPC_LSA_OBJ)
-@NETLOG_DYNAMIC_NO@RPC_PIPE_OBJ2 = $(RPC_NETLOG_OBJ)
-@SAMR_DYNAMIC_NO@RPC_PIPE_OBJ3 = $(RPC_SAMR_OBJ)
-@SVC_DYNAMIC_NO@RPC_PIPE_OBJ4 = $(RPC_SVC_OBJ)
-@WKS_DYNAMIC_NO@RPC_PIPE_OBJ5 = $(RPC_WKS_OBJ)
-@REG_DYNAMIC_NO@RPC_PIPE_OBJ6 = $(RPC_REG_OBJ)
-@SPOOLSS_DYNAMIC_NO@RPC_PIPE_OBJ7 = $(RPC_SPOOLSS_OBJ)
-@DFS_DYNAMIC_NO@RPC_PIPE_OBJ8 = $(RPC_DFS_OBJ)
-RPC_SERVER_OBJ = $(RPC_PIPE_OBJ1) $(RPC_PIPE_OBJ2) $(RPC_PIPE_OBJ3) \
- $(RPC_PIPE_OBJ4) $(RPC_PIPE_OBJ5) $(RPC_PIPE_OBJ6) $(RPC_PIPE_OBJ7) \
- $(RPC_PIPE_OBJ8) $(RPC_PIPE_OBJ)
+RPC_SERVER_OBJ = rpc_server/srv_lsa.o rpc_server/srv_lsa_nt.o \
+ rpc_server/srv_lsa_hnd.o rpc_server/srv_netlog.o rpc_server/srv_netlog_nt.o \
+ rpc_server/srv_pipe_hnd.o rpc_server/srv_reg.o rpc_server/srv_reg_nt.o \
+ rpc_server/srv_samr.o rpc_server/srv_samr_nt.o rpc_server/srv_samr_util.o \
+ rpc_server/srv_srvsvc.o rpc_server/srv_srvsvc_nt.o \
+ rpc_server/srv_util.o rpc_server/srv_wkssvc.o rpc_server/srv_wkssvc_nt.o \
+ rpc_server/srv_pipe.o rpc_server/srv_dfs.o rpc_server/srv_dfs_nt.o \
+ rpc_server/srv_spoolss.o rpc_server/srv_spoolss_nt.o
# this includes only the low level parse code, not stuff
# that requires knowledge of security contexts
@@ -264,7 +225,7 @@ RPC_PARSE_OBJ = rpc_parse/parse_lsa.o rpc_parse/parse_net.o \
$(REGOBJS_OBJ)
-RPC_CLIENT_OBJ = rpc_client/cli_pipe.o
+RPC_CLIENT_OBJ = rpc_client/cli_pipe.o
LOCKING_OBJ = locking/locking.o locking/brlock.o locking/posix.o
@@ -272,20 +233,12 @@ PASSDB_GET_SET_OBJ = passdb/pdb_get_set.o
PASSDB_OBJ = $(PASSDB_GET_SET_OBJ) passdb/passdb.o passdb/pdb_interface.o \
passdb/machine_sid.o passdb/pdb_smbpasswd.o \
- passdb/pdb_tdb.o passdb/pdb_ldap.o \
+ passdb/pdb_tdb.o passdb/pdb_ldap.o passdb/pdb_plugin.o \
passdb/pdb_unix.o passdb/util_sam_sid.o \
passdb/pdb_compat.o passdb/pdb_nisplus.o
-XML_OBJ = modules/xml.o
-MYSQL_OBJ = modules/mysql.o
-DEVEL_HELP_OBJ = modules/developer.o
-
-SAM_STATIC_MODULES = sam/sam_plugin.o sam/sam_skel.o sam/sam_ads.o
-
-SAM_OBJ = sam/account.o sam/get_set_account.o sam/get_set_group.o \
- sam/get_set_domain.o sam/interface.o $(SAM_STATIC_MODULES)
-
-SAMTEST_OBJ = torture/samtest.o torture/cmd_sam.o $(SAM_OBJ) $(LIB_OBJ) $(PARAM_OBJ) $(LIBSMB_OBJ) $(UBIQX_OBJ) $(READLINE_OBJ) lib/util_seaccess.o $(LIBADS_OBJ) $(PASSDB_OBJ) $(SECRETS_OBJ) $(GROUPDB_OBJ)
+PDB_XML_OBJ = passdb/pdb_xml.o
+PDB_MYSQL_OBJ = passdb/pdb_mysql.o
GROUPDB_OBJ = groupdb/mapping.o
@@ -303,7 +256,7 @@ UNIGRP_OBJ = libsmb/netlogon_unigrp.o
AUTH_OBJ = auth/auth.o auth/auth_sam.o auth/auth_server.o auth/auth_domain.o \
auth/auth_rhosts.o auth/auth_unix.o auth/auth_util.o auth/auth_winbind.o \
- auth/auth_builtin.o auth/auth_compat.o auth/auth_ntlmssp.o \
+ auth/auth_builtin.o auth/auth_compat.o \
$(PLAINTEXT_AUTH_OBJ) $(UNIGRP_OBJ)
MANGLE_OBJ = smbd/mangle.o smbd/mangle_hash.o smbd/mangle_map.o smbd/mangle_hash2.o
@@ -499,7 +452,6 @@ VFSTEST_OBJ = torture/cmd_vfs.o torture/vfstest.o $(SMBD_OBJ_BASE) $(READLINE_OB
VFS_AUDIT_OBJ = modules/vfs_audit.o
VFS_RECYCLE_OBJ = modules/vfs_recycle.o
VFS_NETATALK_OBJ = modules/vfs_netatalk.o
-VFS_FAKE_PERMS_OBJ = modules/vfs_fake_perms.o
LOCKTEST2_OBJ = torture/locktest2.o $(LOCKING_OBJ) $(LIBSMB_OBJ) $(PARAM_OBJ) \
$(UBIQX_OBJ) $(LIB_OBJ)
@@ -529,14 +481,12 @@ PROTO_OBJ = $(SMBD_OBJ_MAIN) \
$(SMBD_OBJ_SRV) $(NMBD_OBJ1) $(SWAT_OBJ1) $(LIB_OBJ) $(LIBSMB_OBJ) \
$(SMBW_OBJ1) $(SMBWRAPPER_OBJ1) $(SMBTORTURE_OBJ1) $(RPCCLIENT_OBJ1) \
$(LIBMSRPC_OBJ) $(LIBMSRPC_SERVER_OBJ) $(RPC_CLIENT_OBJ) \
- $(RPC_PIPE_OBJ) $(RPC_PARSE_OBJ) \
+ $(RPC_SERVER_OBJ) $(RPC_PARSE_OBJ) \
$(AUTH_OBJ) $(PARAM_OBJ) $(LOCKING_OBJ) $(SECRETS_OBJ) \
$(PRINTING_OBJ) $(PRINTBACKEND_OBJ) $(OPLOCK_OBJ) $(NOTIFY_OBJ) \
$(QUOTAOBJS) $(PASSDB_OBJ) $(GROUPDB_OBJ) $(MSDFS_OBJ) \
$(READLINE_OBJ) $(PROFILE_OBJ) $(LIBADS_OBJ) $(LIBADS_SERVER_OBJ) \
- $(LIB_SMBD_OBJ) $(SAM_OBJ) $(REGISTRY_OBJ) $(POPT_LIB_OBJ) \
- $(RPC_LSA_OBJ) $(RPC_NETLOG_OBJ) $(RPC_SAMR_OBJ) $(RPC_REG_OBJ) \
- $(RPC_SVC_OBJ) $(RPC_WKS_OBJ) $(RPC_DFS_OBJ) $(RPC_SPOOLSS_OBJ)
+ $(LIB_SMBD_OBJ) $(REGISTRY_OBJ) $(POPT_LIB_OBJ)
NSS_OBJ_0 = nsswitch/wins.o $(PARAM_OBJ) $(UBIQX_OBJ) $(LIBSMB_OBJ) \
$(LIB_OBJ) $(NSSWINS_OBJ)
@@ -589,13 +539,11 @@ POPT_OBJS=popt/findme.o popt/popt.o popt/poptconfig.o \
TDBBACKUP_OBJ = tdb/tdbbackup.o $(TDBBASE_OBJ)
-NTLM_AUTH_OBJ = utils/ntlm_auth.o $(LIBSMB_OBJ) $(POPT_LIB_OBJ)
-
######################################################################
# now the rules...
######################################################################
all : SHOWFLAGS proto_exists $(SBIN_PROGS) $(BIN_PROGS) $(SHLIBS) \
- $(TORTURE_PROGS) @EXTRA_ALL_TARGETS@
+ @EXTRA_ALL_TARGETS@
pam_smbpass : SHOWFLAGS bin/pam_smbpass.@SHLIBEXT@
@@ -627,9 +575,9 @@ nsswitch : SHOWFLAGS bin/winbindd@EXEEXT@ bin/wbinfo@EXEEXT@ nsswitch/libnss_win
wins : SHOWFLAGS nsswitch/libnss_wins.@SHLIBEXT@
-modules: SHOWFLAGS proto_exists $(VFS_MODULES) $(PDB_MODULES) $(MODULES) \
- $(RPC_MODULES)
-everything: all libsmbclient debug2html smbfilter talloctort
+modules: SHOWFLAGS proto_exists $(VFS_MODULES) $(PDB_MODULES)
+
+everything: all libsmbclient debug2html smbfilter talloctort modules torture
.SUFFIXES:
.SUFFIXES: .c .o .po .po32 .lo
@@ -700,7 +648,7 @@ bin/.dummy:
bin/smbd@EXEEXT@: $(SMBD_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
- $(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(PRINTLIBS) \
+ @$(CC) $(FLAGS) -o $@ $(SMBD_OBJ) $(LDFLAGS) $(DYNEXP) $(PRINTLIBS) \
$(AUTHLIBS) $(LIBS) @BUILD_POPT@
bin/nmbd@EXEEXT@: $(NMBD_OBJ) @BUILD_POPT@ bin/.dummy
@@ -732,10 +680,6 @@ bin/profiles@EXEEXT@: utils/profiles.o bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ utils/profiles.o $(LDFLAGS) $(LIBS)
-bin/editreg@EXEEXT@: utils/editreg.o bin/.dummy
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ utils/editreg.o $(LDFLAGS) $(LIBS)
-
bin/smbspool@EXEEXT@: $(CUPS_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(CUPS_OBJ) $(LDFLAGS) $(LIBS)
@@ -780,10 +724,6 @@ bin/pdbedit@EXEEXT@: $(PDBEDIT_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(PDBEDIT_OBJ) $(LDFLAGS) $(DYNEXP) $(LIBS) @BUILD_POPT@
-bin/samtest@EXEEXT@: $(SAMTEST_OBJ) @BUILD_POPT@ bin/.dummy
- @echo Linking $@
- @$(CC) $(FLAGS) -o $@ $(SAMTEST_OBJ) $(LDFLAGS) $(DYNEXP) $(TERMLDFLAGS) $(TERMLIBS) $(DYNEXP) $(LIBS) @BUILD_POPT@
-
bin/smbgroupedit@EXEEXT@: $(SMBGROUPEDIT_OBJ) bin/.dummy
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(SMBGROUPEDIT_OBJ) $(LDFLAGS) $(LIBS)
@@ -874,46 +814,6 @@ bin/libbigballofmud.@SHLIBEXT@: $(LIBBIGBALLOFMUD_PICOBJS)
libsmbclient: bin/libsmbclient.a bin/libsmbclient.@SHLIBEXT@
-bin/librpc_lsarpc.@SHLIBEXT@: $(RPC_LSA_OBJ)
- @echo "Linking $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_LSA_OBJ) -lc \
- @SONAMEFLAG@`basename $@`
-
-bin/librpc_samr.@SHLIBEXT@: $(RPC_SAMR_OBJ)
- @echo "Linking $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_SAMR_OBJ) -lc \
- @SONAMEFLAG@`basename $@`
-
-bin/librpc_srvsvc.@SHLIBEXT@: $(RPC_SVC_OBJ)
- @echo "Linking $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_SVC_OBJ) -lc \
- @SONAMEFLAG@`basename $@`
-
-bin/librpc_wkssvc.@SHLIBEXT@: $(RPC_WKS_OBJ)
- @echo "Linking $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_WKS_OBJ) -lc \
- @SONAMEFLAG@`basename $@`
-
-bin/librpc_NETLOGON.@SHLIBEXT@: $(RPC_NETLOG_OBJ)
- @echo "Linking $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_NETLOG_OBJ) -lc \
- @SONAMEFLAG@`basename $@`
-
-bin/librpc_winreg.@SHLIBEXT@: $(RPC_REG_OBJ)
- @echo "Linking $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_REG_OBJ) -lc \
- @SONAMEFLAG@`basename $@`
-
-bin/librpc_spoolss.@SHLIBEXT@: $(RPC_SPOOLSS_OBJ)
- @echo "Linking $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_SPOOLSS_OBJ) -lc \
- @SONAMEFLAG@`basename $@`
-
-bin/librpc_netdfs.@SHLIBEXT@: $(RPC_DFS_OBJ)
- @echo "Linking $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(RPC_DFS_OBJ) -lc \
- @SONAMEFLAG@`basename $@`
-
nsswitch/libnss_wins.@SHLIBEXT@: $(NSS_OBJ)
@echo "Linking $@"
@$(SHLD) $(LDSHFLAGS) -o $@ $(NSS_OBJ) -lc \
@@ -938,19 +838,14 @@ nsswitch/pam_winbind.@SHLIBEXT@: $(PAM_WINBIND_OBJ) bin/.dummy
@$(SHLD) $(LDSHFLAGS) -o $@ $(PAM_WINBIND_OBJ) \
@SONAMEFLAG@`basename $@` -lpam
-bin/mysql.@SHLIBEXT@: $(MYSQL_OBJ)
+bin/pdb_mysql.@SHLIBEXT@: $(PDB_MYSQL_OBJ)
@echo "Building plugin $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(MYSQL_OBJ) @MYSQL_LIBS@ \
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(PDB_MYSQL_OBJ) @MYSQL_LIBS@ \
@SONAMEFLAG@`basename $@`
-bin/developer.@SHLIBEXT@: $(DEVEL_HELP_OBJ)
+bin/pdb_xml.@SHLIBEXT@: $(PDB_XML_OBJ)
@echo "Building plugin $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(DEVEL_HELP_OBJ) \
- @SONAMEFLAG@`basename $@`
-
-bin/xml.@SHLIBEXT@: $(XML_OBJ)
- @echo "Building plugin $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(XML_OBJ) @XML_LIBS@ \
+ @$(SHLD) $(LDSHFLAGS) -o $@ $(PDB_XML_OBJ) @XML_LIBS@ \
@SONAMEFLAG@`basename $@`
bin/vfs_audit.@SHLIBEXT@: $(VFS_AUDIT_OBJ)
@@ -968,23 +863,12 @@ bin/vfs_netatalk.@SHLIBEXT@: $(VFS_NETATALK_OBJ)
@$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_NETATALK_OBJ) \
@SONAMEFLAG@`basename $@`
-bin/vfs_fake_perms.@SHLIBEXT@: $(VFS_FAKE_PERMS_OBJ)
- @echo "Building plugin $@"
- @$(SHLD) $(LDSHFLAGS) -o $@ $(VFS_FAKE_PERMS_OBJ) \
- @SONAMEFLAG@`basename $@`
-
bin/wbinfo@EXEEXT@: $(WBINFO_OBJ) $(PARAM_OBJ) $(LIB_OBJ) \
$(UBIQX_OBJ) $(SECRETS_OBJ) @BUILD_POPT@ bin/.dummy
@echo Linking $@
@$(LINK) -o $@ $(WBINFO_OBJ) $(PARAM_OBJ) $(LIB_OBJ) \
$(UBIQX_OBJ) $(SECRETS_OBJ) $(LIBS) @BUILD_POPT@
-bin/ntlm_auth@EXEEXT@: $(NTLM_AUTH_OBJ) $(PARAM_OBJ) $(LIB_OBJ) \
- $(UBIQX_OBJ) @BUILD_POPT@ bin/.dummy
- @echo Linking $@
- @$(LINK) -o $@ $(NTLM_AUTH_OBJ) $(PARAM_OBJ) $(LIB_OBJ) \
- $(UBIQX_OBJ) $(LIBS) @BUILD_POPT@
-
bin/pam_smbpass.@SHLIBEXT@: $(PAM_SMBPASS_PICOOBJ)
@echo "Linking shared library $@"
$(SHLD) $(LDSHFLAGS) -o $@ $(PAM_SMBPASS_PICOOBJ) -lpam $(DYNEXP) $(LIBS) -lc
@@ -998,6 +882,8 @@ bin/tdbbackup@EXEEXT@: $(TDBBACKUP_OBJ) bin/.dummy
install: installbin installman installscripts installdat installswat
+install-everything: install installmodules
+
# DESTDIR is used here to prevent packagers wasting their time
# duplicating the Makefile. Remove it and you will have the privelege
# of package each samba release for muliple versions of multiple
@@ -1019,7 +905,6 @@ installbin: all installdirs
installmodules: all installdirs
@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(VFSLIBDIR) $(VFS_MODULES)
@$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(PDBLIBDIR) $(PDB_MODULES)
- @$(SHELL) $(srcdir)/script/installmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(RPCLIBDIR) $(RPC_MODULES)
installscripts: installdirs
@$(SHELL) $(srcdir)/script/installscripts.sh $(INSTALLPERMS) $(DESTDIR)$(BINDIR) $(SCRIPTS)
@@ -1118,9 +1003,8 @@ uninstallbin:
@$(SHELL) $(srcdir)/script/uninstallbin.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(VARDIR) $(DESTDIR)$(BIN_PROGS)
uninstallmodules:
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(VFSLIBDIR) $(DESTDIR)$(VFS_MODULES)
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(PDBLIBDIR) $(DESTDIR)$(PDB_MODULES)
- @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(MODULES)
+ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(PDBLIBDIR) $(DESTDIR)$(VFS_MODULES)
+ @$(SHELL) $(srcdir)/script/uninstallmodules.sh $(INSTALLPERMS) $(DESTDIR)$(BASEDIR) $(DESTDIR)$(VFSLIBDIR) $(DESTDIR)$(PDB_MODULES)
uninstallscripts:
@$(SHELL) $(srcdir)/script/uninstallscripts.sh $(INSTALLPERMS) $(DESTDIR)$(BINDIR) $(SCRIPTS)
@@ -1130,7 +1014,7 @@ TOPFILES=dynconfig.o dynconfig.po
clean: delheaders python_clean
-rm -f core */*~ *~ */*.o */*.po */*.po32 */*.@SHLIBEXT@ \
- $(TOPFILES) $(BIN_PROGS) $(SBIN_PROGS) $(MODULES) $(TORTURE_PROGS) .headers.stamp
+ $(TOPFILES) $(BIN_PROGS) $(SBIN_PROGS) $(VFS_MODULES) $(PDB_MODULES) $(TORTURE_PROGS) .headers.stamp
# Making this target will just make sure that the prototype files
# exist, not necessarily that they are up to date. Since they're
@@ -1138,8 +1022,7 @@ clean: delheaders python_clean
# afterwards.
proto_exists: include/proto.h include/wrepld_proto.h include/build_env.h \
nsswitch/winbindd_proto.h web/swat_proto.h \
- client/client_proto.h utils/net_proto.h \
- include/tdbsam2_parse_info.h
+ client/client_proto.h utils/net_proto.h
delheaders:
@echo Removing prototype headers
@@ -1147,12 +1030,10 @@ delheaders:
@/bin/rm -f $(srcdir)/include/wrepld_proto.h $(srcdir)/nsswitch/winbindd_proto.h
@/bin/rm -f $(srcdir)/web/swat_proto.h
@/bin/rm -f $(srcdir)/client/client_proto.h $(srcdir)/utils/net_proto.h
- @/bin/rm -f $(srcdir)/include/tdbsam2_parse_info.h
@/bin/rm -f include/proto.h include/build_env.h include/wrepld_proto.h \
nsswitch/winbindd_proto.h web/swat_proto.h \
- client/client_proto.h utils/net_proto.h \
- include/tdbsam2_parse_info.h
+ client/client_proto.h utils/net_proto.h
include/proto.h:
@echo Building include/proto.h
@@ -1190,11 +1071,6 @@ utils/net_proto.h:
-h _CLIENT_PROTO_H_ utils/net_proto.h \
$(NET_OBJ1)
-include/tdbsam2_parse_info.h:
- @cd $(srcdir) && script/genstruct.pl \
- -o include/tdbsam2_parse_info.h $(CC) -E -O2 -g \
- include/tdbsam2.h
-
# "make headers" or "make proto" calls a subshell because we need to
# make sure these commands are executed in sequence even for a
# parallel make.
@@ -1206,8 +1082,7 @@ headers:
$(MAKE) nsswitch/winbindd_proto.h; \
$(MAKE) web/swat_proto.h; \
$(MAKE) client/client_proto.h; \
- $(MAKE) utils/net_proto.h; \
- $(MAKE) include/tdbsam2_parse_info.h
+ $(MAKE) utils/net_proto.h
proto: headers
@@ -1220,7 +1095,7 @@ ctags:
ctags `find $(srcdir) -name "*.[ch]" | grep -v /CVS/`
realclean: clean delheaders
- -rm -f config.log $(BIN_PROGS) $(MODULES) $(SBIN_PROGS) bin/.dummy script/findsmb
+ -rm -f config.log $(BIN_PROGS) $(SBIN_PROGS) bin/.dummy script/findsmb
distclean: realclean
-rm -f include/stamp-h
diff --git a/source3/auth/auth.c b/source3/auth/auth.c
index 2abdec3a39..3c4448445a 100644
--- a/source3/auth/auth.c
+++ b/source3/auth/auth.c
@@ -31,7 +31,6 @@ static const struct auth_init_function_entry builtin_auth_init_functions[] = {
{ "hostsequiv", auth_init_hostsequiv },
{ "sam", auth_init_sam },
{ "samstrict", auth_init_samstrict },
- { "samstrict_dc", auth_init_samstrict_dc },
{ "unix", auth_init_unix },
{ "smbserver", auth_init_smbserver },
{ "ntdomain", auth_init_ntdomain },
@@ -58,8 +57,7 @@ static const uint8 *get_ntlm_challenge(struct auth_context *auth_context)
TALLOC_CTX *mem_ctx;
if (auth_context->challenge.length) {
- DEBUG(5, ("get_ntlm_challenge (auth subsystem): returning previous challenge by module %s (normal)\n",
- auth_context->challenge_set_by));
+ DEBUG(5, ("get_ntlm_challenge (auth subsystem): returning previous challenge (normal)\n"));
return auth_context->challenge.data;
}
@@ -192,12 +190,6 @@ static NTSTATUS check_ntlm_password(const struct auth_context *auth_context,
DEBUG(3, ("check_ntlm_password: mapped user is: [%s]\\[%s]@[%s]\n",
user_info->domain.str, user_info->internal_username.str, user_info->wksta_name.str));
-
- if (auth_context->challenge.length != 8) {
- DEBUG(0, ("check_ntlm_password: Invalid challenge stored for this auth context - cannot continue\n"));
- return NT_STATUS_LOGON_FAILURE;
- }
-
if (auth_context->challenge_set_by)
DEBUG(10, ("check_ntlm_password: auth_context challenge created by %s\n",
auth_context->challenge_set_by));
@@ -449,7 +441,6 @@ NTSTATUS make_auth_context_fixed(struct auth_context **auth_context, uchar chal[
}
(*auth_context)->challenge = data_blob(chal, 8);
- (*auth_context)->challenge_set_by = "fixed";
return nt_status;
}
diff --git a/source3/auth/auth_sam.c b/source3/auth/auth_sam.c
index 9650dc0940..79fded870e 100644
--- a/source3/auth/auth_sam.c
+++ b/source3/auth/auth_sam.c
@@ -480,8 +480,6 @@ static NTSTATUS check_samstrict_security(const struct auth_context *auth_context
unless it is one of our aliases. */
if (!is_myname(user_info->domain.str)) {
- DEBUG(7,("The requested user domain is not the local server name. [%s]\\[%s]\n",
- user_info->domain.str,user_info->internal_username.str));
return NT_STATUS_NO_SUCH_USER;
}
@@ -500,45 +498,4 @@ NTSTATUS auth_init_samstrict(struct auth_context *auth_context, const char *para
return NT_STATUS_OK;
}
-/****************************************************************************
-Check SAM security (above) but with a few extra checks if we're a DC.
-****************************************************************************/
-
-static NTSTATUS check_samstrict_dc_security(const struct auth_context *auth_context,
- void *my_private_data,
- TALLOC_CTX *mem_ctx,
- const auth_usersupplied_info *user_info,
- auth_serversupplied_info **server_info)
-{
- if (!user_info || !auth_context) {
- return NT_STATUS_LOGON_FAILURE;
- }
-
- /* If we are a domain member, we must not
- attempt to check the password locally,
- unless it is one of our aliases, empty
- or our domain if we are a logon server.*/
-
-
- if ((!is_myworkgroup(user_info->domain.str))&&
- (!is_myname(user_info->domain.str))) {
- DEBUG(7,("The requested user domain is not the local server name or our domain. [%s]\\[%s]\n",
- user_info->domain.str,user_info->internal_username.str));
- return NT_STATUS_NO_SUCH_USER;
- }
-
- return check_sam_security(auth_context, my_private_data, mem_ctx, user_info, server_info);
-}
-
-/* module initialisation */
-NTSTATUS auth_init_samstrict_dc(struct auth_context *auth_context, const char *param, auth_methods **auth_method)
-{
- if (!make_auth_methods(auth_context, auth_method)) {
- return NT_STATUS_NO_MEMORY;
- }
-
- (*auth_method)->auth = check_samstrict_dc_security;
- (*auth_method)->name = "samstrict_dc";
- return NT_STATUS_OK;
-}
diff --git a/source3/client/smbmount.c b/source3/client/smbmount.c
index f90c56859f..2c70f3ff50 100644
--- a/source3/client/smbmount.c
+++ b/source3/client/smbmount.c
@@ -687,17 +687,6 @@ static void parse_mount_smb(int argc, char **argv)
int val;
char *p;
- /* FIXME: This function can silently fail if the arguments are
- * not in the expected order.
-
- > The arguments syntax of smbmount 2.2.3a (smbfs of Debian stable)
- > requires that one gives "-o" before further options like username=...
- > . Without -o, the username=.. setting is *silently* ignored. I've
- > spent about an hour trying to find out why I couldn't log in now..
-
- */
-
-
if (argc < 2 || argv[1][0] == '-') {
usage();
exit(1);
diff --git a/source3/configure b/source3/configure
index 232520cd70..e503e1d3d5 100755
--- a/source3/configure
+++ b/source3/configure
@@ -35,8 +35,6 @@ ac_help="$ac_help
ac_help="$ac_help
--enable-dmalloc Enable heap debugging [default=no]"
ac_help="$ac_help
- --enable-dynrpc Enable dynamic RPC modules [default=no]"
-ac_help="$ac_help
--enable-cups Turn on CUPS support (default=auto)"
ac_help="$ac_help
--with-readline[=DIR] Look for readline include/libs in DIR (default=auto) "
@@ -75,8 +73,6 @@ ac_help="$ac_help
ac_help="$ac_help
--with-pam_smbpass Build a PAM module to allow other applications to use our smbpasswd file (default=no)"
ac_help="$ac_help
- --with-sam Build new (experimental) SAM database (default=no)"
-ac_help="$ac_help
--with-ldapsam Include LDAP SAM 2.2 compatible configuration (default=no)"
ac_help="$ac_help
--with-tdbsam Include experimental TDB SAM support (default=no)"
@@ -788,38 +784,6 @@ fi
-
-LSA_DYNAMIC_YES="#"
-LSA_DYNAMIC_NO=
-
-
-NETLOG_DYNAMIC_YES="#"
-NETLOG_DYNAMIC_NO=
-
-
-SAMR_DYNAMIC_YES="#"
-SAMR_DYNAMIC_NO=
-
-
-SVC_DYNAMIC_YES="#"
-SVC_DYNAMIC_NO=
-
-
-WKS_DYNAMIC_YES="#"
-WKS_DYNAMIC_NO=
-
-
-REG_DYNAMIC_YES="#"
-REG_DYNAMIC_NO=
-
-
-SPOOLSS_DYNAMIC_YES="#"
-SPOOLSS_DYNAMIC_NO=
-
-
-DFS_DYNAMIC_YES="#"
-DFS_DYNAMIC_NO=
-
# compile with optimization and without debugging by default
CFLAGS="-O ${CFLAGS}"
@@ -870,85 +834,10 @@ EOF
LIBS="$LIBS -ldmalloc"
fi
-# Check whether --enable-dynrpc or --disable-dynrpc was given.
-if test "${enable_dynrpc+set}" = set; then
- enableval="$enable_dynrpc"
- :
-fi
-
-
-if test x$enable_dynrpc = xyes
-then
- enable_dynrpc=lsa,samr,reg,wks,netlog,dfs
-fi
-
-if test x$enable_dynrpc != xno
-then
- for i in `echo $enable_dynrpc | sed -e's/,/ /g'`
- do case $i in lsa)
- LSA_DYNAMIC_YES=
- LSA_DYNAMIC_NO="#"
- cat >> confdefs.h <<\EOF
-#define RPC_LSA_DYNAMIC 1
-EOF
-
- ;; samr)
- SAMR_DYNAMIC_YES=
- SAMR_DYNAMIC_NO="#"
- cat >> confdefs.h <<\EOF
-#define RPC_SAMR_DYNAMIC 1
-EOF
-
- ;; svc)
- SVC_DYNAMIC_YES=
- SVC_DYNAMIC_NO="#"
- cat >> confdefs.h <<\EOF
-#define RPC_SVC_DYNAMIC 1
-EOF
-
- ;; wks)
- WKS_DYNAMIC_YES=
- WKS_DYNAMIC_NO="#"
- cat >> confdefs.h <<\EOF
-#define RPC_WKS_DYNAMIC 1
-EOF
-
- ;; netlog)
- NETLOG_DYNAMIC_YES=
- NETLOG_DYNAMIC_NO="#"
- cat >> confdefs.h <<\EOF
-#define RPC_NETLOG_DYNAMIC 1
-EOF
-
- ;; reg)
- REG_DYNAMIC_YES=
- REG_DYNAMIC_NO="#"
- cat >> confdefs.h <<\EOF
-#define RPC_REG_DYNAMIC 1
-EOF
-
- ;; spoolss)
- SPOOLSS_DYNAMIC_YES=
- SPOOLSS_DYNAMIC_NO="#"
- cat >> confdefs.h <<\EOF
-#define RPC_SPOOLSS_DYNAMIC 1
-EOF
-
- ;; dfs)
- DFS_DYNAMIC_YES=
- DFS_DYNAMIC_NO="#"
- cat >> confdefs.h <<\EOF
-#define RPC_DFS_DYNAMIC 1
-EOF
-
- ;; esac
- done
-fi
-
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:952: checking for $ac_word" >&5
+echo "configure:841: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -978,7 +867,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:982: checking for $ac_word" >&5
+echo "configure:871: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1029,7 +918,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1033: checking for $ac_word" >&5
+echo "configure:922: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1061,7 +950,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1065: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:954: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1072,12 +961,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1076 "configure"
+#line 965 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1103,12 +992,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1107: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:996: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1112: checking whether we are using GNU C" >&5
+echo "configure:1001: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1117,7 +1006,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1121: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1010: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1136,7 +1025,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1140: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1029: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1198,7 +1087,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1202: checking for a BSD compatible install" >&5
+echo "configure:1091: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1255,7 +1144,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1259: checking for $ac_word" >&5
+echo "configure:1148: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1287,7 +1176,7 @@ done
LD=ld
echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
-echo "configure:1291: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1180: checking if the linker ($LD) is GNU ld" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1303,7 +1192,7 @@ echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1307: checking for POSIXized ISC" >&5
+echo "configure:1196: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -1325,12 +1214,12 @@ fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1329: checking for Cygwin environment" >&5
+echo "configure:1218: checking for Cygwin environment" >&5
if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1334 "configure"
+#line 1223 "configure"
#include "confdefs.h"
int main() {
@@ -1341,7 +1230,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:1345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1234: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -1358,19 +1247,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:1362: checking for mingw32 environment" >&5
+echo "configure:1251: checking for mingw32 environment" >&5
if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1367 "configure"
+#line 1256 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:1374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1263: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1389,7 +1278,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:1393: checking for executable suffix" >&5
+echo "configure:1282: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1399,7 +1288,7 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:1403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:1292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
*.c | *.o | *.obj) ;;
@@ -1422,10 +1311,10 @@ ac_exeext=$EXEEXT
if test "x$CC" != xcc; then
echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6
-echo "configure:1426: checking whether $CC and cc understand -c and -o together" >&5
+echo "configure:1315: checking whether $CC and cc understand -c and -o together" >&5
else
echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6
-echo "configure:1429: checking whether cc understands -c and -o together" >&5
+echo "configure:1318: checking whether cc understands -c and -o together" >&5
fi
set dummy $CC; ac_cc="`echo $2 |
sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`"
@@ -1437,16 +1326,16 @@ else
# We do the test twice because some compilers refuse to overwrite an
# existing .o file with -o, though they will create one.
ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5'
-if { (eval echo configure:1441: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
- test -f conftest.o && { (eval echo configure:1442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+if { (eval echo configure:1330: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+ test -f conftest.o && { (eval echo configure:1331: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
then
eval ac_cv_prog_cc_${ac_cc}_c_o=yes
if test "x$CC" != xcc; then
# Test first that cc exists at all.
- if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1447: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1336: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
ac_try='cc -c conftest.c -o conftest.o 1>&5'
- if { (eval echo configure:1449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
- test -f conftest.o && { (eval echo configure:1450: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
+ if { (eval echo configure:1338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } &&
+ test -f conftest.o && { (eval echo configure:1339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; };
then
# cc works too.
:
@@ -1480,20 +1369,20 @@ fi
echo $ac_n "checking that the C compiler understands volatile""... $ac_c" 1>&6
-echo "configure:1484: checking that the C compiler understands volatile" >&5
+echo "configure:1373: checking that the C compiler understands volatile" >&5
if eval "test \"`echo '$''{'samba_cv_volatile'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1490 "configure"
+#line 1379 "configure"
#include "confdefs.h"
#include <sys/types.h>
int main() {
volatile int i = 0
; return 0; }
EOF
-if { (eval echo configure:1497: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1386: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_volatile=yes
else
@@ -1542,7 +1431,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:1546: checking host system type" >&5
+echo "configure:1435: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1563,7 +1452,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:1567: checking target system type" >&5
+echo "configure:1456: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1581,7 +1470,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1585: checking build system type" >&5
+echo "configure:1474: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1615,7 +1504,7 @@ esac
echo $ac_n "checking config.cache system type""... $ac_c" 1>&6
-echo "configure:1619: checking config.cache system type" >&5
+echo "configure:1508: checking config.cache system type" >&5
if { test x"${ac_cv_host_system_type+set}" = x"set" &&
test x"$ac_cv_host_system_type" != x"$host"; } ||
{ test x"${ac_cv_build_system_type+set}" = x"set" &&
@@ -1643,7 +1532,7 @@ case "$host_os" in
*hpux*)
echo $ac_n "checking whether ${CC-cc} accepts -Ae""... $ac_c" 1>&6
-echo "configure:1647: checking whether ${CC-cc} accepts -Ae" >&5
+echo "configure:1536: checking whether ${CC-cc} accepts -Ae" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_Ae'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1804,14 +1693,14 @@ EOF
*sysv4*)
if test $host = mips-sni-sysv4 ; then
echo $ac_n "checking for LFS support""... $ac_c" 1>&6
-echo "configure:1808: checking for LFS support" >&5
+echo "configure:1697: checking for LFS support" >&5
old_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
if test "$cross_compiling" = yes; then
SINIX_LFS_SUPPORT=cross
else
cat > conftest.$ac_ext <<EOF
-#line 1815 "configure"
+#line 1704 "configure"
#include "confdefs.h"
#include <unistd.h>
@@ -1823,7 +1712,7 @@ exit(1);
#endif
}
EOF
-if { (eval echo configure:1827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
SINIX_LFS_SUPPORT=yes
else
@@ -1854,14 +1743,14 @@ EOF
#
*linux*)
echo $ac_n "checking for LFS support""... $ac_c" 1>&6
-echo "configure:1858: checking for LFS support" >&5
+echo "configure:1747: checking for LFS support" >&5
old_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
if test "$cross_compiling" = yes; then
LINUX_LFS_SUPPORT=cross
else
cat > conftest.$ac_ext <<EOF
-#line 1865 "configure"
+#line 1754 "configure"
#include "confdefs.h"
#include <unistd.h>
@@ -1899,7 +1788,7 @@ main() {
}
EOF
-if { (eval echo configure:1903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
LINUX_LFS_SUPPORT=yes
else
@@ -1932,14 +1821,14 @@ EOF
*hurd*)
echo $ac_n "checking for LFS support""... $ac_c" 1>&6
-echo "configure:1936: checking for LFS support" >&5
+echo "configure:1825: checking for LFS support" >&5
old_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
if test "$cross_compiling" = yes; then
GLIBC_LFS_SUPPORT=cross
else
cat > conftest.$ac_ext <<EOF
-#line 1943 "configure"
+#line 1832 "configure"
#include "confdefs.h"
#include <unistd.h>
@@ -1951,7 +1840,7 @@ exit(1);
#endif
}
EOF
-if { (eval echo configure:1955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
GLIBC_LFS_SUPPORT=yes
else
@@ -1981,21 +1870,21 @@ EOF
esac
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1985: checking for inline" >&5
+echo "configure:1874: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 1992 "configure"
+#line 1881 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:1999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1888: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -2021,7 +1910,7 @@ EOF
esac
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2025: checking how to run the C preprocessor" >&5
+echo "configure:1914: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -2036,13 +1925,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 2040 "configure"
+#line 1929 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2046: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1935: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -2053,13 +1942,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 2057 "configure"
+#line 1946 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2063: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1952: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -2070,13 +1959,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 2074 "configure"
+#line 1963 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2080: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1969: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -2101,12 +1990,12 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2105: checking for ANSI C header files" >&5
+echo "configure:1994: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2110 "configure"
+#line 1999 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -2114,7 +2003,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2118: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2007: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2131,7 +2020,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 2135 "configure"
+#line 2024 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -2149,7 +2038,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 2153 "configure"
+#line 2042 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2170,7 +2059,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2174 "configure"
+#line 2063 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2181,7 +2070,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:2185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -2209,12 +2098,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:2213: checking for $ac_hdr that defines DIR" >&5
+echo "configure:2102: checking for $ac_hdr that defines DIR" >&5
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2218 "configure"
+#line 2107 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
@@ -2222,7 +2111,7 @@ int main() {
DIR *dirp = 0;
; return 0; }
EOF
-if { (eval echo configure:2226: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
@@ -2247,7 +2136,7 @@ done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:2251: checking for opendir in -ldir" >&5
+echo "configure:2140: checking for opendir in -ldir" >&5
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2255,7 +2144,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2259 "configure"
+#line 2148 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2266,7 +2155,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:2270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2288,7 +2177,7 @@ fi
else
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:2292: checking for opendir in -lx" >&5
+echo "configure:2181: checking for opendir in -lx" >&5
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2296,7 +2185,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2300 "configure"
+#line 2189 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2307,7 +2196,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:2311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2330,12 +2219,12 @@ fi
fi
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:2334: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:2223: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2339 "configure"
+#line 2228 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
@@ -2344,7 +2233,7 @@ int main() {
struct tm *tp;
; return 0; }
EOF
-if { (eval echo configure:2348: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2237: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
@@ -2365,12 +2254,12 @@ EOF
fi
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:2369: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:2258: checking for sys/wait.h that is POSIX.1 compatible" >&5
if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2374 "configure"
+#line 2263 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -2386,7 +2275,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
-if { (eval echo configure:2390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2279: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@@ -2410,17 +2299,17 @@ for ac_hdr in arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2414: checking for $ac_hdr" >&5
+echo "configure:2303: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2419 "configure"
+#line 2308 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2424: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2313: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2450,17 +2339,17 @@ for ac_hdr in unistd.h utime.h grp.h sys/id.h limits.h memory.h net/if.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2454: checking for $ac_hdr" >&5
+echo "configure:2343: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2459 "configure"
+#line 2348 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2464: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2353: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2490,17 +2379,17 @@ for ac_hdr in compat.h rpc/rpc.h rpcsvc/nis.h rpcsvc/yp_prot.h rpcsvc/ypclnt.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2494: checking for $ac_hdr" >&5
+echo "configure:2383: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2499 "configure"
+#line 2388 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2504: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2530,17 +2419,17 @@ for ac_hdr in sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2534: checking for $ac_hdr" >&5
+echo "configure:2423: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2539 "configure"
+#line 2428 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2544: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2433: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2570,17 +2459,17 @@ for ac_hdr in sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h std
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2574: checking for $ac_hdr" >&5
+echo "configure:2463: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2579 "configure"
+#line 2468 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2473: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2610,17 +2499,17 @@ for ac_hdr in sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h term
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2614: checking for $ac_hdr" >&5
+echo "configure:2503: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2619 "configure"
+#line 2508 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2624: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2513: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2650,17 +2539,17 @@ for ac_hdr in sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2654: checking for $ac_hdr" >&5
+echo "configure:2543: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2659 "configure"
+#line 2548 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2664: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2553: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2690,17 +2579,17 @@ for ac_hdr in security/pam_modules.h security/_pam_macros.h ldap.h lber.h dlfcn.
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2694: checking for $ac_hdr" >&5
+echo "configure:2583: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2699 "configure"
+#line 2588 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2704: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2593: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2730,17 +2619,17 @@ for ac_hdr in sys/syslog.h syslog.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2734: checking for $ac_hdr" >&5
+echo "configure:2623: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2739 "configure"
+#line 2628 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2744: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2633: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2774,14 +2663,14 @@ done
case "$host_os" in
*hpux*)
cat > conftest.$ac_ext <<EOF
-#line 2778 "configure"
+#line 2667 "configure"
#include "confdefs.h"
#include <shadow.h>
int main() {
struct spwd testme
; return 0; }
EOF
-if { (eval echo configure:2785: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2674: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_shadow_h=yes
else
@@ -2803,17 +2692,17 @@ for ac_hdr in shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2807: checking for $ac_hdr" >&5
+echo "configure:2696: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2812 "configure"
+#line 2701 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2817: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2843,17 +2732,17 @@ for ac_hdr in nss.h nss_common.h ns_api.h sys/security.h security/pam_appl.h sec
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2847: checking for $ac_hdr" >&5
+echo "configure:2736: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2852 "configure"
+#line 2741 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2857: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2883,17 +2772,17 @@ for ac_hdr in stropts.h poll.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2887: checking for $ac_hdr" >&5
+echo "configure:2776: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2892 "configure"
+#line 2781 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2923,17 +2812,17 @@ for ac_hdr in sys/capability.h syscall.h sys/syscall.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2927: checking for $ac_hdr" >&5
+echo "configure:2816: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2932 "configure"
+#line 2821 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2937: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2963,17 +2852,17 @@ for ac_hdr in sys/acl.h sys/cdefs.h glob.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2967: checking for $ac_hdr" >&5
+echo "configure:2856: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2972 "configure"
+#line 2861 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2977: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3005,17 +2894,17 @@ for ac_hdr in utmp.h utmpx.h lastlog.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3009: checking for $ac_hdr" >&5
+echo "configure:2898: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3014 "configure"
+#line 2903 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2908: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3047,17 +2936,17 @@ for ac_hdr in sys/fs/vx_quota.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3051: checking for $ac_hdr" >&5
+echo "configure:2940: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3056 "configure"
+#line 2945 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3061: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2950: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3089,17 +2978,17 @@ for ac_hdr in linux/xqm.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3093: checking for $ac_hdr" >&5
+echo "configure:2982: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3098 "configure"
+#line 2987 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3103: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2992: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3129,17 +3018,17 @@ for ac_hdr in xfs/xqm.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3133: checking for $ac_hdr" >&5
+echo "configure:3022: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3138 "configure"
+#line 3027 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3143: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3032: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3167,7 +3056,7 @@ done
echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:3171: checking size of int" >&5
+echo "configure:3060: checking size of int" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3175,7 +3064,7 @@ else
ac_cv_sizeof_int=cross
else
cat > conftest.$ac_ext <<EOF
-#line 3179 "configure"
+#line 3068 "configure"
#include "confdefs.h"
#include <stdio.h>
int main()
@@ -3186,7 +3075,7 @@ int main()
return(0);
}
EOF
-if { (eval echo configure:3190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_int=`cat conftestval`
else
@@ -3206,7 +3095,7 @@ EOF
echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:3210: checking size of long" >&5
+echo "configure:3099: checking size of long" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3214,7 +3103,7 @@ else
ac_cv_sizeof_long=cross
else
cat > conftest.$ac_ext <<EOF
-#line 3218 "configure"
+#line 3107 "configure"
#include "confdefs.h"
#include <stdio.h>
int main()
@@ -3225,7 +3114,7 @@ int main()
return(0);
}
EOF
-if { (eval echo configure:3229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_long=`cat conftestval`
else
@@ -3245,7 +3134,7 @@ EOF
echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:3249: checking size of short" >&5
+echo "configure:3138: checking size of short" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3253,7 +3142,7 @@ else
ac_cv_sizeof_short=cross
else
cat > conftest.$ac_ext <<EOF
-#line 3257 "configure"
+#line 3146 "configure"
#include "confdefs.h"
#include <stdio.h>
int main()
@@ -3264,7 +3153,7 @@ int main()
return(0);
}
EOF
-if { (eval echo configure:3268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_short=`cat conftestval`
else
@@ -3285,12 +3174,12 @@ EOF
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:3289: checking for working const" >&5
+echo "configure:3178: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3294 "configure"
+#line 3183 "configure"
#include "confdefs.h"
int main() {
@@ -3339,7 +3228,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:3343: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -3360,21 +3249,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:3364: checking for inline" >&5
+echo "configure:3253: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 3371 "configure"
+#line 3260 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:3378: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3267: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -3400,14 +3289,14 @@ EOF
esac
echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:3404: checking whether byte ordering is bigendian" >&5
+echo "configure:3293: checking whether byte ordering is bigendian" >&5
if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_bigendian=unknown
# See if sys/param.h defines the BYTE_ORDER macro.
cat > conftest.$ac_ext <<EOF
-#line 3411 "configure"
+#line 3300 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -3418,11 +3307,11 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:3422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3311: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# It does; now see whether it defined to BIG_ENDIAN or not.
cat > conftest.$ac_ext <<EOF
-#line 3426 "configure"
+#line 3315 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -3433,7 +3322,7 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:3437: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3326: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_bigendian=yes
else
@@ -3453,7 +3342,7 @@ if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 3457 "configure"
+#line 3346 "configure"
#include "confdefs.h"
main () {
/* Are we little or big endian? From Harbison&Steele. */
@@ -3466,7 +3355,7 @@ main () {
exit (u.c[sizeof (long) - 1] == 1);
}
EOF
-if { (eval echo configure:3470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_bigendian=no
else
@@ -3490,14 +3379,14 @@ EOF
fi
echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6
-echo "configure:3494: checking whether char is unsigned" >&5
+echo "configure:3383: checking whether char is unsigned" >&5
if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$GCC" = yes; then
# GCC predefines this symbol on systems where it applies.
cat > conftest.$ac_ext <<EOF
-#line 3501 "configure"
+#line 3390 "configure"
#include "confdefs.h"
#ifdef __CHAR_UNSIGNED__
yes
@@ -3519,7 +3408,7 @@ if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 3523 "configure"
+#line 3412 "configure"
#include "confdefs.h"
/* volatile prevents gcc2 from optimizing the test away on sparcs. */
#if !defined(__STDC__) || __STDC__ != 1
@@ -3529,7 +3418,7 @@ main() {
volatile char c = 255; exit(c < 0);
}
EOF
-if { (eval echo configure:3533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_char_unsigned=yes
else
@@ -3554,12 +3443,12 @@ fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3558: checking return type of signal handlers" >&5
+echo "configure:3447: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3563 "configure"
+#line 3452 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -3576,7 +3465,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3580: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -3595,12 +3484,12 @@ EOF
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3599: checking for uid_t in sys/types.h" >&5
+echo "configure:3488: checking for uid_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3604 "configure"
+#line 3493 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -3629,12 +3518,12 @@ EOF
fi
echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3633: checking for mode_t" >&5
+echo "configure:3522: checking for mode_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3638 "configure"
+#line 3527 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3662,12 +3551,12 @@ EOF
fi
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3666: checking for off_t" >&5
+echo "configure:3555: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3671 "configure"
+#line 3560 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3695,12 +3584,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3699: checking for size_t" >&5
+echo "configure:3588: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3704 "configure"
+#line 3593 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3728,12 +3617,12 @@ EOF
fi
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3732: checking for pid_t" >&5
+echo "configure:3621: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3737 "configure"
+#line 3626 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3761,12 +3650,12 @@ EOF
fi
echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
-echo "configure:3765: checking for st_rdev in struct stat" >&5
+echo "configure:3654: checking for st_rdev in struct stat" >&5
if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3770 "configure"
+#line 3659 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -3774,7 +3663,7 @@ int main() {
struct stat s; s.st_rdev;
; return 0; }
EOF
-if { (eval echo configure:3778: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3667: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_struct_st_rdev=yes
else
@@ -3795,12 +3684,12 @@ EOF
fi
echo $ac_n "checking for d_off in dirent""... $ac_c" 1>&6
-echo "configure:3799: checking for d_off in dirent" >&5
+echo "configure:3688: checking for d_off in dirent" >&5
if eval "test \"`echo '$''{'ac_cv_dirent_d_off'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3804 "configure"
+#line 3693 "configure"
#include "confdefs.h"
#include <unistd.h>
@@ -3810,7 +3699,7 @@ int main() {
struct dirent d; d.d_off;
; return 0; }
EOF
-if { (eval echo configure:3814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3703: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_dirent_d_off=yes
else
@@ -3831,12 +3720,12 @@ EOF
fi
echo $ac_n "checking for ino_t""... $ac_c" 1>&6
-echo "configure:3835: checking for ino_t" >&5
+echo "configure:3724: checking for ino_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_ino_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3840 "configure"
+#line 3729 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3864,12 +3753,12 @@ EOF
fi
echo $ac_n "checking for loff_t""... $ac_c" 1>&6
-echo "configure:3868: checking for loff_t" >&5
+echo "configure:3757: checking for loff_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_loff_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3873 "configure"
+#line 3762 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3897,12 +3786,12 @@ EOF
fi
echo $ac_n "checking for offset_t""... $ac_c" 1>&6
-echo "configure:3901: checking for offset_t" >&5
+echo "configure:3790: checking for offset_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_offset_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3906 "configure"
+#line 3795 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3930,12 +3819,12 @@ EOF
fi
echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:3934: checking for ssize_t" >&5
+echo "configure:3823: checking for ssize_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3939 "configure"
+#line 3828 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3963,12 +3852,12 @@ EOF
fi
echo $ac_n "checking for wchar_t""... $ac_c" 1>&6
-echo "configure:3967: checking for wchar_t" >&5
+echo "configure:3856: checking for wchar_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_wchar_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3972 "configure"
+#line 3861 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4010,7 +3899,7 @@ if test x$enable_cups != xno; then
# Extract the first word of "cups-config", so it can be a program name with args.
set dummy cups-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4014: checking for $ac_word" >&5
+echo "configure:3903: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CUPS_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4058,14 +3947,14 @@ fi
# we need dlopen/dlclose/dlsym/dlerror for PAM, the password database plugins and the plugin loading code
echo $ac_n "checking for library containing dlopen""... $ac_c" 1>&6
-echo "configure:4062: checking for library containing dlopen" >&5
+echo "configure:3951: checking for library containing dlopen" >&5
if eval "test \"`echo '$''{'ac_cv_search_dlopen'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_dlopen="no"
cat > conftest.$ac_ext <<EOF
-#line 4069 "configure"
+#line 3958 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4076,7 +3965,7 @@ int main() {
dlopen()
; return 0; }
EOF
-if { (eval echo configure:4080: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_dlopen="none required"
else
@@ -4087,7 +3976,7 @@ rm -f conftest*
test "$ac_cv_search_dlopen" = "no" && for i in dl; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4091 "configure"
+#line 3980 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4098,7 +3987,7 @@ int main() {
dlopen()
; return 0; }
EOF
-if { (eval echo configure:4102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_dlopen="-l$i"
break
@@ -4123,13 +4012,13 @@ fi
############################################
# check if the compiler can do immediate structures
echo $ac_n "checking for immediate structures""... $ac_c" 1>&6
-echo "configure:4127: checking for immediate structures" >&5
+echo "configure:4016: checking for immediate structures" >&5
if eval "test \"`echo '$''{'samba_cv_immediate_structures'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4133 "configure"
+#line 4022 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4147,7 +4036,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:4151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4040: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_immediate_structures=yes
else
@@ -4170,13 +4059,13 @@ fi
############################################
# check for unix domain sockets
echo $ac_n "checking for unix domain sockets""... $ac_c" 1>&6
-echo "configure:4174: checking for unix domain sockets" >&5
+echo "configure:4063: checking for unix domain sockets" >&5
if eval "test \"`echo '$''{'samba_cv_unixsocket'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4180 "configure"
+#line 4069 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -4191,7 +4080,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:4195: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4084: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_unixsocket=yes
else
@@ -4213,13 +4102,13 @@ fi
echo $ac_n "checking for socklen_t type""... $ac_c" 1>&6
-echo "configure:4217: checking for socklen_t type" >&5
+echo "configure:4106: checking for socklen_t type" >&5
if eval "test \"`echo '$''{'samba_cv_socklen_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4223 "configure"
+#line 4112 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -4232,7 +4121,7 @@ int main() {
socklen_t i = 0
; return 0; }
EOF
-if { (eval echo configure:4236: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_socklen_t=yes
else
@@ -4253,13 +4142,13 @@ EOF
fi
echo $ac_n "checking for sig_atomic_t type""... $ac_c" 1>&6
-echo "configure:4257: checking for sig_atomic_t type" >&5
+echo "configure:4146: checking for sig_atomic_t type" >&5
if eval "test \"`echo '$''{'samba_cv_sig_atomic_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4263 "configure"
+#line 4152 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -4272,7 +4161,7 @@ int main() {
sig_atomic_t i = 0
; return 0; }
EOF
-if { (eval echo configure:4276: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4165: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_sig_atomic_t=yes
else
@@ -4295,20 +4184,20 @@ fi
# stupid headers have the functions but no declaration. grrrr.
echo $ac_n "checking for errno declaration""... $ac_c" 1>&6
-echo "configure:4299: checking for errno declaration" >&5
+echo "configure:4188: checking for errno declaration" >&5
if eval "test \"`echo '$''{'ac_cv_have_errno_decl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4305 "configure"
+#line 4194 "configure"
#include "confdefs.h"
#include <errno.h>
int main() {
int i = (int)errno
; return 0; }
EOF
-if { (eval echo configure:4312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4201: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_errno_decl=yes
else
@@ -4330,20 +4219,20 @@ EOF
echo $ac_n "checking for setresuid declaration""... $ac_c" 1>&6
-echo "configure:4334: checking for setresuid declaration" >&5
+echo "configure:4223: checking for setresuid declaration" >&5
if eval "test \"`echo '$''{'ac_cv_have_setresuid_decl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4340 "configure"
+#line 4229 "configure"
#include "confdefs.h"
#include <unistd.h>
int main() {
int i = (int)setresuid
; return 0; }
EOF
-if { (eval echo configure:4347: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4236: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_setresuid_decl=yes
else
@@ -4365,20 +4254,20 @@ EOF
echo $ac_n "checking for setresgid declaration""... $ac_c" 1>&6
-echo "configure:4369: checking for setresgid declaration" >&5
+echo "configure:4258: checking for setresgid declaration" >&5
if eval "test \"`echo '$''{'ac_cv_have_setresgid_decl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4375 "configure"
+#line 4264 "configure"
#include "confdefs.h"
#include <unistd.h>
int main() {
int i = (int)setresgid
; return 0; }
EOF
-if { (eval echo configure:4382: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4271: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_setresgid_decl=yes
else
@@ -4400,20 +4289,20 @@ EOF
echo $ac_n "checking for asprintf declaration""... $ac_c" 1>&6
-echo "configure:4404: checking for asprintf declaration" >&5
+echo "configure:4293: checking for asprintf declaration" >&5
if eval "test \"`echo '$''{'ac_cv_have_asprintf_decl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4410 "configure"
+#line 4299 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
int i = (int)asprintf
; return 0; }
EOF
-if { (eval echo configure:4417: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4306: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_asprintf_decl=yes
else
@@ -4435,20 +4324,20 @@ EOF
echo $ac_n "checking for vasprintf declaration""... $ac_c" 1>&6
-echo "configure:4439: checking for vasprintf declaration" >&5
+echo "configure:4328: checking for vasprintf declaration" >&5
if eval "test \"`echo '$''{'ac_cv_have_vasprintf_decl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4445 "configure"
+#line 4334 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
int i = (int)vasprintf
; return 0; }
EOF
-if { (eval echo configure:4452: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4341: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_vasprintf_decl=yes
else
@@ -4470,20 +4359,20 @@ EOF
echo $ac_n "checking for vsnprintf declaration""... $ac_c" 1>&6
-echo "configure:4474: checking for vsnprintf declaration" >&5
+echo "configure:4363: checking for vsnprintf declaration" >&5
if eval "test \"`echo '$''{'ac_cv_have_vsnprintf_decl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4480 "configure"
+#line 4369 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
int i = (int)vsnprintf
; return 0; }
EOF
-if { (eval echo configure:4487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4376: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_vsnprintf_decl=yes
else
@@ -4505,20 +4394,20 @@ EOF
echo $ac_n "checking for snprintf declaration""... $ac_c" 1>&6
-echo "configure:4509: checking for snprintf declaration" >&5
+echo "configure:4398: checking for snprintf declaration" >&5
if eval "test \"`echo '$''{'ac_cv_have_snprintf_decl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4515 "configure"
+#line 4404 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
int i = (int)snprintf
; return 0; }
EOF
-if { (eval echo configure:4522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4411: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_snprintf_decl=yes
else
@@ -4542,7 +4431,7 @@ EOF
# and glibc has setresuid under linux but the function does
# nothing until kernel 2.1.44! very dumb.
echo $ac_n "checking for real setresuid""... $ac_c" 1>&6
-echo "configure:4546: checking for real setresuid" >&5
+echo "configure:4435: checking for real setresuid" >&5
if eval "test \"`echo '$''{'samba_cv_have_setresuid'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4551,12 +4440,12 @@ else
samba_cv_have_setresuid=cross
else
cat > conftest.$ac_ext <<EOF
-#line 4555 "configure"
+#line 4444 "configure"
#include "confdefs.h"
#include <errno.h>
main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}
EOF
-if { (eval echo configure:4560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_have_setresuid=yes
else
@@ -4581,7 +4470,7 @@ fi
# Do the same check for setresguid...
#
echo $ac_n "checking for real setresgid""... $ac_c" 1>&6
-echo "configure:4585: checking for real setresgid" >&5
+echo "configure:4474: checking for real setresgid" >&5
if eval "test \"`echo '$''{'samba_cv_have_setresgid'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4590,13 +4479,13 @@ else
samba_cv_have_setresgid=cross
else
cat > conftest.$ac_ext <<EOF
-#line 4594 "configure"
+#line 4483 "configure"
#include "confdefs.h"
#include <unistd.h>
#include <errno.h>
main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}
EOF
-if { (eval echo configure:4600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_have_setresgid=yes
else
@@ -4619,7 +4508,7 @@ EOF
fi
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:4623: checking for 8-bit clean memcmp" >&5
+echo "configure:4512: checking for 8-bit clean memcmp" >&5
if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4627,7 +4516,7 @@ else
ac_cv_func_memcmp_clean=no
else
cat > conftest.$ac_ext <<EOF
-#line 4631 "configure"
+#line 4520 "configure"
#include "confdefs.h"
main()
@@ -4637,7 +4526,7 @@ main()
}
EOF
-if { (eval echo configure:4641: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_memcmp_clean=yes
else
@@ -4659,14 +4548,14 @@ test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
# test for where we get crypt() from
echo $ac_n "checking for library containing crypt""... $ac_c" 1>&6
-echo "configure:4663: checking for library containing crypt" >&5
+echo "configure:4552: checking for library containing crypt" >&5
if eval "test \"`echo '$''{'ac_cv_search_crypt'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_crypt="no"
cat > conftest.$ac_ext <<EOF
-#line 4670 "configure"
+#line 4559 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4677,7 +4566,7 @@ int main() {
crypt()
; return 0; }
EOF
-if { (eval echo configure:4681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_crypt="none required"
else
@@ -4688,7 +4577,7 @@ rm -f conftest*
test "$ac_cv_search_crypt" = "no" && for i in crypt; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4692 "configure"
+#line 4581 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4699,7 +4588,7 @@ int main() {
crypt()
; return 0; }
EOF
-if { (eval echo configure:4703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_crypt="-l$i"
break
@@ -4730,7 +4619,7 @@ test "${with_readline+set}" != "set" && with_readline=yes
# test for where we get readline() from
echo $ac_n "checking whether to use readline""... $ac_c" 1>&6
-echo "configure:4734: checking whether to use readline" >&5
+echo "configure:4623: checking whether to use readline" >&5
# Check whether --with-readline or --without-readline was given.
if test "${with_readline+set}" = set; then
withval="$with_readline"
@@ -4742,17 +4631,17 @@ if test "${with_readline+set}" = set; then
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4746: checking for $ac_hdr" >&5
+echo "configure:4635: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4751 "configure"
+#line 4640 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4756: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4645: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4782,17 +4671,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4786: checking for $ac_hdr" >&5
+echo "configure:4675: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4791 "configure"
+#line 4680 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4796: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4685: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4823,17 +4712,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4827: checking for $ac_hdr" >&5
+echo "configure:4716: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4832 "configure"
+#line 4721 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4837: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4726: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4856,7 +4745,7 @@ EOF
for termlib in ncurses curses termcap terminfo termlib; do
echo $ac_n "checking for tgetent in -l${termlib}""... $ac_c" 1>&6
-echo "configure:4860: checking for tgetent in -l${termlib}" >&5
+echo "configure:4749: checking for tgetent in -l${termlib}" >&5
ac_lib_var=`echo ${termlib}'_'tgetent | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4864,7 +4753,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-l${termlib} $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4868 "configure"
+#line 4757 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4875,7 +4764,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:4879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4897,7 +4786,7 @@ fi
done
echo $ac_n "checking for rl_callback_handler_install in -lreadline""... $ac_c" 1>&6
-echo "configure:4901: checking for rl_callback_handler_install in -lreadline" >&5
+echo "configure:4790: checking for rl_callback_handler_install in -lreadline" >&5
ac_lib_var=`echo readline'_'rl_callback_handler_install | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4905,7 +4794,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lreadline $TERMLIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4909 "configure"
+#line 4798 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4916,7 +4805,7 @@ int main() {
rl_callback_handler_install()
; return 0; }
EOF
-if { (eval echo configure:4920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4967,17 +4856,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4971: checking for $ac_hdr" >&5
+echo "configure:4860: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4976 "configure"
+#line 4865 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4981: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4870: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5007,17 +4896,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5011: checking for $ac_hdr" >&5
+echo "configure:4900: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5016 "configure"
+#line 4905 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5021: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4910: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5048,17 +4937,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5052: checking for $ac_hdr" >&5
+echo "configure:4941: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5057 "configure"
+#line 4946 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5062: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4951: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5081,7 +4970,7 @@ EOF
for termlib in ncurses curses termcap terminfo termlib; do
echo $ac_n "checking for tgetent in -l${termlib}""... $ac_c" 1>&6
-echo "configure:5085: checking for tgetent in -l${termlib}" >&5
+echo "configure:4974: checking for tgetent in -l${termlib}" >&5
ac_lib_var=`echo ${termlib}'_'tgetent | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5089,7 +4978,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-l${termlib} $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5093 "configure"
+#line 4982 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5100,7 +4989,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:5104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5122,7 +5011,7 @@ fi
done
echo $ac_n "checking for rl_callback_handler_install in -lreadline""... $ac_c" 1>&6
-echo "configure:5126: checking for rl_callback_handler_install in -lreadline" >&5
+echo "configure:5015: checking for rl_callback_handler_install in -lreadline" >&5
ac_lib_var=`echo readline'_'rl_callback_handler_install | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5130,7 +5019,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lreadline $TERMLIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5134 "configure"
+#line 5023 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5141,7 +5030,7 @@ int main() {
rl_callback_handler_install()
; return 0; }
EOF
-if { (eval echo configure:5145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5191,7 +5080,7 @@ fi
# code will generate warnings on one of them unless we have a few
# special cases.
echo $ac_n "checking for rl_completion_matches in -lreadline""... $ac_c" 1>&6
-echo "configure:5195: checking for rl_completion_matches in -lreadline" >&5
+echo "configure:5084: checking for rl_completion_matches in -lreadline" >&5
ac_lib_var=`echo readline'_'rl_completion_matches | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5199,7 +5088,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lreadline $TERMLIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5203 "configure"
+#line 5092 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5210,7 +5099,7 @@ int main() {
rl_completion_matches()
; return 0; }
EOF
-if { (eval echo configure:5214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5243,12 +5132,12 @@ fi
for ac_func in connect
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5247: checking for $ac_func" >&5
+echo "configure:5136: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5252 "configure"
+#line 5141 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5271,7 +5160,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5299,7 +5188,7 @@ if test x"$ac_cv_func_connect" = x"no"; then
case "$LIBS" in
*-lnsl*) ;;
*) echo $ac_n "checking for printf in -lnsl_s""... $ac_c" 1>&6
-echo "configure:5303: checking for printf in -lnsl_s" >&5
+echo "configure:5192: checking for printf in -lnsl_s" >&5
ac_lib_var=`echo nsl_s'_'printf | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5307,7 +5196,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl_s $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5311 "configure"
+#line 5200 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5318,7 +5207,7 @@ int main() {
printf()
; return 0; }
EOF
-if { (eval echo configure:5322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5349,7 +5238,7 @@ fi
case "$LIBS" in
*-lnsl*) ;;
*) echo $ac_n "checking for printf in -lnsl""... $ac_c" 1>&6
-echo "configure:5353: checking for printf in -lnsl" >&5
+echo "configure:5242: checking for printf in -lnsl" >&5
ac_lib_var=`echo nsl'_'printf | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5357,7 +5246,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5361 "configure"
+#line 5250 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5368,7 +5257,7 @@ int main() {
printf()
; return 0; }
EOF
-if { (eval echo configure:5372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5261: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5399,7 +5288,7 @@ fi
case "$LIBS" in
*-lsocket*) ;;
*) echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:5403: checking for connect in -lsocket" >&5
+echo "configure:5292: checking for connect in -lsocket" >&5
ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5407,7 +5296,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5411 "configure"
+#line 5300 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5418,7 +5307,7 @@ int main() {
connect()
; return 0; }
EOF
-if { (eval echo configure:5422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5449,7 +5338,7 @@ fi
case "$LIBS" in
*-linet*) ;;
*) echo $ac_n "checking for connect in -linet""... $ac_c" 1>&6
-echo "configure:5453: checking for connect in -linet" >&5
+echo "configure:5342: checking for connect in -linet" >&5
ac_lib_var=`echo inet'_'connect | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5457,7 +5346,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-linet $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5461 "configure"
+#line 5350 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5468,7 +5357,7 @@ int main() {
connect()
; return 0; }
EOF
-if { (eval echo configure:5472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5361: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5511,14 +5400,14 @@ fi
# test for where we get yp_get_default_domain() from
echo $ac_n "checking for library containing yp_get_default_domain""... $ac_c" 1>&6
-echo "configure:5515: checking for library containing yp_get_default_domain" >&5
+echo "configure:5404: checking for library containing yp_get_default_domain" >&5
if eval "test \"`echo '$''{'ac_cv_search_yp_get_default_domain'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_yp_get_default_domain="no"
cat > conftest.$ac_ext <<EOF
-#line 5522 "configure"
+#line 5411 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5529,7 +5418,7 @@ int main() {
yp_get_default_domain()
; return 0; }
EOF
-if { (eval echo configure:5533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_yp_get_default_domain="none required"
else
@@ -5540,7 +5429,7 @@ rm -f conftest*
test "$ac_cv_search_yp_get_default_domain" = "no" && for i in nsl; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5544 "configure"
+#line 5433 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -5551,7 +5440,7 @@ int main() {
yp_get_default_domain()
; return 0; }
EOF
-if { (eval echo configure:5555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_yp_get_default_domain="-l$i"
break
@@ -5574,12 +5463,12 @@ fi
for ac_func in yp_get_default_domain
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5578: checking for $ac_func" >&5
+echo "configure:5467: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5583 "configure"
+#line 5472 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5602,7 +5491,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5631,12 +5520,12 @@ done
for ac_func in execl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5635: checking for $ac_func" >&5
+echo "configure:5524: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5640 "configure"
+#line 5529 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5659,7 +5548,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5690,12 +5579,12 @@ fi
for ac_func in dlopen dlclose dlsym dlerror waitpid getcwd strdup strndup strnlen strtoul strerror chown fchown chmod fchmod chroot link mknod mknod64
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5694: checking for $ac_func" >&5
+echo "configure:5583: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5699 "configure"
+#line 5588 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5718,7 +5607,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5745,12 +5634,12 @@ done
for ac_func in fstat strchr utime utimes getrlimit fsync bzero memset strlcpy strlcat setpgid
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5749: checking for $ac_func" >&5
+echo "configure:5638: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5754 "configure"
+#line 5643 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5773,7 +5662,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5800,12 +5689,12 @@ done
for ac_func in memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5804: checking for $ac_func" >&5
+echo "configure:5693: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5809 "configure"
+#line 5698 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5828,7 +5717,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5855,12 +5744,12 @@ done
for ac_func in strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5859: checking for $ac_func" >&5
+echo "configure:5748: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5864 "configure"
+#line 5753 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5883,7 +5772,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5910,12 +5799,12 @@ done
for ac_func in initgroups select poll rdchk getgrnam getgrent pathconf realpath
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5914: checking for $ac_func" >&5
+echo "configure:5803: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5919 "configure"
+#line 5808 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5938,7 +5827,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5965,12 +5854,12 @@ done
for ac_func in setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate stat64 fstat64
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5969: checking for $ac_func" >&5
+echo "configure:5858: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5974 "configure"
+#line 5863 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5993,7 +5882,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6020,12 +5909,12 @@ done
for ac_func in lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64 readdir64
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6024: checking for $ac_func" >&5
+echo "configure:5913: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6029 "configure"
+#line 5918 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6048,7 +5937,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5941: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6075,12 +5964,12 @@ done
for ac_func in fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6079: checking for $ac_func" >&5
+echo "configure:5968: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6084 "configure"
+#line 5973 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6103,7 +5992,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6130,12 +6019,12 @@ done
for ac_func in srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6134: checking for $ac_func" >&5
+echo "configure:6023: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6139 "configure"
+#line 6028 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6158,7 +6047,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6185,12 +6074,12 @@ done
for ac_func in syslog vsyslog getgrouplist timegm
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6189: checking for $ac_func" >&5
+echo "configure:6078: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6194 "configure"
+#line 6083 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6213,7 +6102,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6241,12 +6130,12 @@ done
for ac_func in setbuffer shmget shm_open
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6245: checking for $ac_func" >&5
+echo "configure:6134: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6250 "configure"
+#line 6139 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6269,7 +6158,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6298,12 +6187,12 @@ done
for ac_func in syscall
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6302: checking for $ac_func" >&5
+echo "configure:6191: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6307 "configure"
+#line 6196 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6326,7 +6215,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6354,12 +6243,12 @@ done
for ac_func in _dup _dup2 _opendir _readdir _seekdir _telldir _closedir
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6358: checking for $ac_func" >&5
+echo "configure:6247: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6363 "configure"
+#line 6252 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6382,7 +6271,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6409,12 +6298,12 @@ done
for ac_func in __dup __dup2 __opendir __readdir __seekdir __telldir __closedir
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6413: checking for $ac_func" >&5
+echo "configure:6302: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6418 "configure"
+#line 6307 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6437,7 +6326,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6464,12 +6353,12 @@ done
for ac_func in __getcwd _getcwd
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6468: checking for $ac_func" >&5
+echo "configure:6357: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6473 "configure"
+#line 6362 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6492,7 +6381,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6519,12 +6408,12 @@ done
for ac_func in __xstat __fxstat __lxstat
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6523: checking for $ac_func" >&5
+echo "configure:6412: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6528 "configure"
+#line 6417 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6547,7 +6436,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6574,12 +6463,12 @@ done
for ac_func in _stat _lstat _fstat __stat __lstat __fstat
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6578: checking for $ac_func" >&5
+echo "configure:6467: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6583 "configure"
+#line 6472 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6602,7 +6491,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6629,12 +6518,12 @@ done
for ac_func in _acl __acl _facl __facl _open __open _chdir __chdir
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6633: checking for $ac_func" >&5
+echo "configure:6522: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6638 "configure"
+#line 6527 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6657,7 +6546,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6684,12 +6573,12 @@ done
for ac_func in _close __close _fchdir __fchdir _fcntl __fcntl
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6688: checking for $ac_func" >&5
+echo "configure:6577: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6693 "configure"
+#line 6582 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6712,7 +6601,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6739,12 +6628,12 @@ done
for ac_func in getdents _getdents __getdents _lseek __lseek _read __read
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6743: checking for $ac_func" >&5
+echo "configure:6632: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6748 "configure"
+#line 6637 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6767,7 +6656,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6791,15 +6680,15 @@ else
fi
done
-for ac_func in getdirentries _write __write _fork __fork
+for ac_func in _write __write _fork __fork
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6798: checking for $ac_func" >&5
+echo "configure:6687: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6803 "configure"
+#line 6692 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6822,7 +6711,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6849,12 +6738,12 @@ done
for ac_func in _stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6853: checking for $ac_func" >&5
+echo "configure:6742: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6858 "configure"
+#line 6747 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6877,7 +6766,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6770: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6904,12 +6793,12 @@ done
for ac_func in __sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6908: checking for $ac_func" >&5
+echo "configure:6797: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6913 "configure"
+#line 6802 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6932,7 +6821,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6959,12 +6848,12 @@ done
for ac_func in pread _pread __pread pread64 _pread64 __pread64
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6963: checking for $ac_func" >&5
+echo "configure:6852: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6968 "configure"
+#line 6857 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6987,7 +6876,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7014,12 +6903,12 @@ done
for ac_func in pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7018: checking for $ac_func" >&5
+echo "configure:6907: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7023 "configure"
+#line 6912 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7042,7 +6931,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6935: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7069,12 +6958,12 @@ done
for ac_func in open64 _open64 __open64 creat64
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7073: checking for $ac_func" >&5
+echo "configure:6962: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7078 "configure"
+#line 6967 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7097,7 +6986,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6990: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7128,9 +7017,9 @@ done
if test x$ac_cv_func_stat64 = xno ; then
echo $ac_n "checking for stat64 in <sys/stat.h>""... $ac_c" 1>&6
-echo "configure:7132: checking for stat64 in <sys/stat.h>" >&5
+echo "configure:7021: checking for stat64 in <sys/stat.h>" >&5
cat > conftest.$ac_ext <<EOF
-#line 7134 "configure"
+#line 7023 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -7142,7 +7031,7 @@ int main() {
struct stat64 st64; exit(stat64(".",&st64));
; return 0; }
EOF
-if { (eval echo configure:7146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_stat64=yes
else
@@ -7161,9 +7050,9 @@ fi
if test x$ac_cv_func_lstat64 = xno ; then
echo $ac_n "checking for lstat64 in <sys/stat.h>""... $ac_c" 1>&6
-echo "configure:7165: checking for lstat64 in <sys/stat.h>" >&5
+echo "configure:7054: checking for lstat64 in <sys/stat.h>" >&5
cat > conftest.$ac_ext <<EOF
-#line 7167 "configure"
+#line 7056 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -7175,7 +7064,7 @@ int main() {
struct stat64 st64; exit(lstat64(".",&st64));
; return 0; }
EOF
-if { (eval echo configure:7179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_lstat64=yes
else
@@ -7194,9 +7083,9 @@ fi
if test x$ac_cv_func_fstat64 = xno ; then
echo $ac_n "checking for fstat64 in <sys/stat.h>""... $ac_c" 1>&6
-echo "configure:7198: checking for fstat64 in <sys/stat.h>" >&5
+echo "configure:7087: checking for fstat64 in <sys/stat.h>" >&5
cat > conftest.$ac_ext <<EOF
-#line 7200 "configure"
+#line 7089 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -7208,7 +7097,7 @@ int main() {
struct stat64 st64; exit(fstat64(0,&st64));
; return 0; }
EOF
-if { (eval echo configure:7212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_fstat64=yes
else
@@ -7228,7 +7117,7 @@ fi
#####################################
# we might need the resolv library on some systems
echo $ac_n "checking for dn_expand in -lresolv""... $ac_c" 1>&6
-echo "configure:7232: checking for dn_expand in -lresolv" >&5
+echo "configure:7121: checking for dn_expand in -lresolv" >&5
ac_lib_var=`echo resolv'_'dn_expand | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -7236,7 +7125,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lresolv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7240 "configure"
+#line 7129 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7247,7 +7136,7 @@ int main() {
dn_expand()
; return 0; }
EOF
-if { (eval echo configure:7251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -7285,12 +7174,12 @@ case "$LIBS" in
*-lsecurity*) for ac_func in putprpwnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7289: checking for $ac_func" >&5
+echo "configure:7178: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7294 "configure"
+#line 7183 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7313,7 +7202,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7338,7 +7227,7 @@ fi
done
;;
*) echo $ac_n "checking for putprpwnam in -lsecurity""... $ac_c" 1>&6
-echo "configure:7342: checking for putprpwnam in -lsecurity" >&5
+echo "configure:7231: checking for putprpwnam in -lsecurity" >&5
ac_lib_var=`echo security'_'putprpwnam | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -7346,7 +7235,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsecurity $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7350 "configure"
+#line 7239 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7357,7 +7246,7 @@ int main() {
putprpwnam()
; return 0; }
EOF
-if { (eval echo configure:7361: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -7387,12 +7276,12 @@ fi
for ac_func in putprpwnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7391: checking for $ac_func" >&5
+echo "configure:7280: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7396 "configure"
+#line 7285 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7415,7 +7304,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7308: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7446,12 +7335,12 @@ case "$LIBS" in
*-lsec*) for ac_func in putprpwnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7450: checking for $ac_func" >&5
+echo "configure:7339: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7455 "configure"
+#line 7344 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7474,7 +7363,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7499,7 +7388,7 @@ fi
done
;;
*) echo $ac_n "checking for putprpwnam in -lsec""... $ac_c" 1>&6
-echo "configure:7503: checking for putprpwnam in -lsec" >&5
+echo "configure:7392: checking for putprpwnam in -lsec" >&5
ac_lib_var=`echo sec'_'putprpwnam | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -7507,7 +7396,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsec $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7511 "configure"
+#line 7400 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7518,7 +7407,7 @@ int main() {
putprpwnam()
; return 0; }
EOF
-if { (eval echo configure:7522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -7548,12 +7437,12 @@ fi
for ac_func in putprpwnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7552: checking for $ac_func" >&5
+echo "configure:7441: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7557 "configure"
+#line 7446 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7576,7 +7465,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7608,12 +7497,12 @@ case "$LIBS" in
*-lsecurity*) for ac_func in set_auth_parameters
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7612: checking for $ac_func" >&5
+echo "configure:7501: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7617 "configure"
+#line 7506 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7636,7 +7525,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7661,7 +7550,7 @@ fi
done
;;
*) echo $ac_n "checking for set_auth_parameters in -lsecurity""... $ac_c" 1>&6
-echo "configure:7665: checking for set_auth_parameters in -lsecurity" >&5
+echo "configure:7554: checking for set_auth_parameters in -lsecurity" >&5
ac_lib_var=`echo security'_'set_auth_parameters | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -7669,7 +7558,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsecurity $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7673 "configure"
+#line 7562 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7680,7 +7569,7 @@ int main() {
set_auth_parameters()
; return 0; }
EOF
-if { (eval echo configure:7684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -7710,12 +7599,12 @@ fi
for ac_func in set_auth_parameters
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7714: checking for $ac_func" >&5
+echo "configure:7603: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7719 "configure"
+#line 7608 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7738,7 +7627,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7769,12 +7658,12 @@ case "$LIBS" in
*-lsec*) for ac_func in set_auth_parameters
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7773: checking for $ac_func" >&5
+echo "configure:7662: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7778 "configure"
+#line 7667 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7797,7 +7686,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7822,7 +7711,7 @@ fi
done
;;
*) echo $ac_n "checking for set_auth_parameters in -lsec""... $ac_c" 1>&6
-echo "configure:7826: checking for set_auth_parameters in -lsec" >&5
+echo "configure:7715: checking for set_auth_parameters in -lsec" >&5
ac_lib_var=`echo sec'_'set_auth_parameters | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -7830,7 +7719,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsec $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7834 "configure"
+#line 7723 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -7841,7 +7730,7 @@ int main() {
set_auth_parameters()
; return 0; }
EOF
-if { (eval echo configure:7845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -7871,12 +7760,12 @@ fi
for ac_func in set_auth_parameters
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7875: checking for $ac_func" >&5
+echo "configure:7764: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7880 "configure"
+#line 7769 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7899,7 +7788,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7792: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7932,12 +7821,12 @@ case "$LIBS" in
*-lgen*) for ac_func in getspnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:7936: checking for $ac_func" >&5
+echo "configure:7825: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7941 "configure"
+#line 7830 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -7960,7 +7849,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:7964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -7985,7 +7874,7 @@ fi
done
;;
*) echo $ac_n "checking for getspnam in -lgen""... $ac_c" 1>&6
-echo "configure:7989: checking for getspnam in -lgen" >&5
+echo "configure:7878: checking for getspnam in -lgen" >&5
ac_lib_var=`echo gen'_'getspnam | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -7993,7 +7882,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lgen $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 7997 "configure"
+#line 7886 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8004,7 +7893,7 @@ int main() {
getspnam()
; return 0; }
EOF
-if { (eval echo configure:8008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8034,12 +7923,12 @@ fi
for ac_func in getspnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8038: checking for $ac_func" >&5
+echo "configure:7927: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8043 "configure"
+#line 7932 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8062,7 +7951,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8094,12 +7983,12 @@ case "$LIBS" in
*-lsecurity*) for ac_func in getspnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8098: checking for $ac_func" >&5
+echo "configure:7987: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8103 "configure"
+#line 7992 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8122,7 +8011,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8147,7 +8036,7 @@ fi
done
;;
*) echo $ac_n "checking for getspnam in -lsecurity""... $ac_c" 1>&6
-echo "configure:8151: checking for getspnam in -lsecurity" >&5
+echo "configure:8040: checking for getspnam in -lsecurity" >&5
ac_lib_var=`echo security'_'getspnam | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8155,7 +8044,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsecurity $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8159 "configure"
+#line 8048 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8166,7 +8055,7 @@ int main() {
getspnam()
; return 0; }
EOF
-if { (eval echo configure:8170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8196,12 +8085,12 @@ fi
for ac_func in getspnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8200: checking for $ac_func" >&5
+echo "configure:8089: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8205 "configure"
+#line 8094 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8224,7 +8113,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8255,12 +8144,12 @@ case "$LIBS" in
*-lsec*) for ac_func in getspnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8259: checking for $ac_func" >&5
+echo "configure:8148: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8264 "configure"
+#line 8153 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8283,7 +8172,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8287: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8176: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8308,7 +8197,7 @@ fi
done
;;
*) echo $ac_n "checking for getspnam in -lsec""... $ac_c" 1>&6
-echo "configure:8312: checking for getspnam in -lsec" >&5
+echo "configure:8201: checking for getspnam in -lsec" >&5
ac_lib_var=`echo sec'_'getspnam | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8316,7 +8205,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsec $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8320 "configure"
+#line 8209 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8327,7 +8216,7 @@ int main() {
getspnam()
; return 0; }
EOF
-if { (eval echo configure:8331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8357,12 +8246,12 @@ fi
for ac_func in getspnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8361: checking for $ac_func" >&5
+echo "configure:8250: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8366 "configure"
+#line 8255 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8385,7 +8274,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8417,12 +8306,12 @@ case "$LIBS" in
*-lsecurity*) for ac_func in bigcrypt
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8421: checking for $ac_func" >&5
+echo "configure:8310: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8426 "configure"
+#line 8315 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8445,7 +8334,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8470,7 +8359,7 @@ fi
done
;;
*) echo $ac_n "checking for bigcrypt in -lsecurity""... $ac_c" 1>&6
-echo "configure:8474: checking for bigcrypt in -lsecurity" >&5
+echo "configure:8363: checking for bigcrypt in -lsecurity" >&5
ac_lib_var=`echo security'_'bigcrypt | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8478,7 +8367,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsecurity $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8482 "configure"
+#line 8371 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8489,7 +8378,7 @@ int main() {
bigcrypt()
; return 0; }
EOF
-if { (eval echo configure:8493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8519,12 +8408,12 @@ fi
for ac_func in bigcrypt
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8523: checking for $ac_func" >&5
+echo "configure:8412: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8528 "configure"
+#line 8417 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8547,7 +8436,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8440: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8578,12 +8467,12 @@ case "$LIBS" in
*-lsec*) for ac_func in bigcrypt
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8582: checking for $ac_func" >&5
+echo "configure:8471: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8587 "configure"
+#line 8476 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8606,7 +8495,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8631,7 +8520,7 @@ fi
done
;;
*) echo $ac_n "checking for bigcrypt in -lsec""... $ac_c" 1>&6
-echo "configure:8635: checking for bigcrypt in -lsec" >&5
+echo "configure:8524: checking for bigcrypt in -lsec" >&5
ac_lib_var=`echo sec'_'bigcrypt | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8639,7 +8528,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsec $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8643 "configure"
+#line 8532 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8650,7 +8539,7 @@ int main() {
bigcrypt()
; return 0; }
EOF
-if { (eval echo configure:8654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8680,12 +8569,12 @@ fi
for ac_func in bigcrypt
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8684: checking for $ac_func" >&5
+echo "configure:8573: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8689 "configure"
+#line 8578 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8708,7 +8597,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8740,12 +8629,12 @@ case "$LIBS" in
*-lsecurity*) for ac_func in getprpwnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8744: checking for $ac_func" >&5
+echo "configure:8633: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8749 "configure"
+#line 8638 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8768,7 +8657,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8793,7 +8682,7 @@ fi
done
;;
*) echo $ac_n "checking for getprpwnam in -lsecurity""... $ac_c" 1>&6
-echo "configure:8797: checking for getprpwnam in -lsecurity" >&5
+echo "configure:8686: checking for getprpwnam in -lsecurity" >&5
ac_lib_var=`echo security'_'getprpwnam | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8801,7 +8690,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsecurity $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8805 "configure"
+#line 8694 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8812,7 +8701,7 @@ int main() {
getprpwnam()
; return 0; }
EOF
-if { (eval echo configure:8816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8842,12 +8731,12 @@ fi
for ac_func in getprpwnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8846: checking for $ac_func" >&5
+echo "configure:8735: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8851 "configure"
+#line 8740 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8870,7 +8759,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8901,12 +8790,12 @@ case "$LIBS" in
*-lsec*) for ac_func in getprpwnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8905: checking for $ac_func" >&5
+echo "configure:8794: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8910 "configure"
+#line 8799 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -8929,7 +8818,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:8933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8822: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -8954,7 +8843,7 @@ fi
done
;;
*) echo $ac_n "checking for getprpwnam in -lsec""... $ac_c" 1>&6
-echo "configure:8958: checking for getprpwnam in -lsec" >&5
+echo "configure:8847: checking for getprpwnam in -lsec" >&5
ac_lib_var=`echo sec'_'getprpwnam | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8962,7 +8851,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsec $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8966 "configure"
+#line 8855 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -8973,7 +8862,7 @@ int main() {
getprpwnam()
; return 0; }
EOF
-if { (eval echo configure:8977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -9003,12 +8892,12 @@ fi
for ac_func in getprpwnam
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9007: checking for $ac_func" >&5
+echo "configure:8896: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9012 "configure"
+#line 8901 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -9031,7 +8920,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:9035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -9075,7 +8964,7 @@ SHLIBEXT="so"
# Assume non-shared by default and override below
BLDSHARED="false"
echo $ac_n "checking ability to build shared libraries""... $ac_c" 1>&6
-echo "configure:9079: checking ability to build shared libraries" >&5
+echo "configure:8968: checking ability to build shared libraries" >&5
# and these are for particular systems
case "$host_os" in
@@ -9270,7 +9159,7 @@ EOF
*dgux*) # Extract the first word of "groff", so it can be a program name with args.
set dummy groff; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:9274: checking for $ac_word" >&5
+echo "configure:9163: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ROFF'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9352,17 +9241,17 @@ esac
echo "$ac_t""$BLDSHARED" 1>&6
echo $ac_n "checking linker flags for shared libraries""... $ac_c" 1>&6
-echo "configure:9356: checking linker flags for shared libraries" >&5
+echo "configure:9245: checking linker flags for shared libraries" >&5
echo "$ac_t""$LDSHFLAGS" 1>&6
echo $ac_n "checking compiler flags for position-independent code""... $ac_c" 1>&6
-echo "configure:9359: checking compiler flags for position-independent code" >&5
+echo "configure:9248: checking compiler flags for position-independent code" >&5
echo "$ac_t""$PICFLAGS" 1>&6
#######################################################
# test whether building a shared library actually works
if test $BLDSHARED = true; then
echo $ac_n "checking whether building shared libraries actually works""... $ac_c" 1>&6
-echo "configure:9366: checking whether building shared libraries actually works" >&5
+echo "configure:9255: checking whether building shared libraries actually works" >&5
if eval "test \"`echo '$''{'ac_cv_shlib_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9389,6 +9278,7 @@ if test $ac_cv_shlib_works = no; then
fi
fi
+
# this updates our target list if we can build shared libs
if test $BLDSHARED = true; then
LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
@@ -9399,7 +9289,7 @@ fi
################
echo $ac_n "checking for long long""... $ac_c" 1>&6
-echo "configure:9403: checking for long long" >&5
+echo "configure:9293: checking for long long" >&5
if eval "test \"`echo '$''{'samba_cv_have_longlong'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9408,12 +9298,12 @@ if test "$cross_compiling" = yes; then
samba_cv_have_longlong=cross
else
cat > conftest.$ac_ext <<EOF
-#line 9412 "configure"
+#line 9302 "configure"
#include "confdefs.h"
#include <stdio.h>
main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }
EOF
-if { (eval echo configure:9417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_have_longlong=yes
else
@@ -9440,20 +9330,20 @@ fi
# AIX needs this.
echo $ac_n "checking for LL suffix on long long integers""... $ac_c" 1>&6
-echo "configure:9444: checking for LL suffix on long long integers" >&5
+echo "configure:9334: checking for LL suffix on long long integers" >&5
if eval "test \"`echo '$''{'samba_cv_compiler_supports_ll'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9450 "configure"
+#line 9340 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
long long i = 0x8000000000LL
; return 0; }
EOF
-if { (eval echo configure:9457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9347: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_compiler_supports_ll=yes
else
@@ -9475,7 +9365,7 @@ fi
echo $ac_n "checking for 64 bit off_t""... $ac_c" 1>&6
-echo "configure:9479: checking for 64 bit off_t" >&5
+echo "configure:9369: checking for 64 bit off_t" >&5
if eval "test \"`echo '$''{'samba_cv_SIZEOF_OFF_T'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9484,13 +9374,13 @@ if test "$cross_compiling" = yes; then
samba_cv_SIZEOF_OFF_T=cross
else
cat > conftest.$ac_ext <<EOF
-#line 9488 "configure"
+#line 9378 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/stat.h>
main() { exit((sizeof(off_t) == 8) ? 0 : 1); }
EOF
-if { (eval echo configure:9494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_SIZEOF_OFF_T=yes
else
@@ -9513,7 +9403,7 @@ EOF
fi
echo $ac_n "checking for off64_t""... $ac_c" 1>&6
-echo "configure:9517: checking for off64_t" >&5
+echo "configure:9407: checking for off64_t" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_OFF64_T'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9522,7 +9412,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_OFF64_T=cross
else
cat > conftest.$ac_ext <<EOF
-#line 9526 "configure"
+#line 9416 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -9532,7 +9422,7 @@ else
#include <sys/stat.h>
main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }
EOF
-if { (eval echo configure:9536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_OFF64_T=yes
else
@@ -9555,7 +9445,7 @@ EOF
fi
echo $ac_n "checking for 64 bit ino_t""... $ac_c" 1>&6
-echo "configure:9559: checking for 64 bit ino_t" >&5
+echo "configure:9449: checking for 64 bit ino_t" >&5
if eval "test \"`echo '$''{'samba_cv_SIZEOF_INO_T'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9564,13 +9454,13 @@ if test "$cross_compiling" = yes; then
samba_cv_SIZEOF_INO_T=cross
else
cat > conftest.$ac_ext <<EOF
-#line 9568 "configure"
+#line 9458 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/stat.h>
main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }
EOF
-if { (eval echo configure:9574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_SIZEOF_INO_T=yes
else
@@ -9593,7 +9483,7 @@ EOF
fi
echo $ac_n "checking for ino64_t""... $ac_c" 1>&6
-echo "configure:9597: checking for ino64_t" >&5
+echo "configure:9487: checking for ino64_t" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_INO64_T'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9602,7 +9492,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_INO64_T=cross
else
cat > conftest.$ac_ext <<EOF
-#line 9606 "configure"
+#line 9496 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -9612,7 +9502,7 @@ else
#include <sys/stat.h>
main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }
EOF
-if { (eval echo configure:9616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9506: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_INO64_T=yes
else
@@ -9635,7 +9525,7 @@ EOF
fi
echo $ac_n "checking for dev64_t""... $ac_c" 1>&6
-echo "configure:9639: checking for dev64_t" >&5
+echo "configure:9529: checking for dev64_t" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_DEV64_T'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9644,7 +9534,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_DEV64_T=cross
else
cat > conftest.$ac_ext <<EOF
-#line 9648 "configure"
+#line 9538 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -9654,7 +9544,7 @@ else
#include <sys/stat.h>
main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }
EOF
-if { (eval echo configure:9658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_DEV64_T=yes
else
@@ -9677,13 +9567,13 @@ EOF
fi
echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6
-echo "configure:9681: checking for struct dirent64" >&5
+echo "configure:9571: checking for struct dirent64" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_STRUCT_DIRENT64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9687 "configure"
+#line 9577 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -9695,7 +9585,7 @@ int main() {
struct dirent64 de;
; return 0; }
EOF
-if { (eval echo configure:9699: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9589: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_STRUCT_DIRENT64=yes
else
@@ -9716,7 +9606,7 @@ EOF
fi
echo $ac_n "checking for major macro""... $ac_c" 1>&6
-echo "configure:9720: checking for major macro" >&5
+echo "configure:9610: checking for major macro" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_DEVICE_MAJOR_FN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9725,7 +9615,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_DEVICE_MAJOR_FN=cross
else
cat > conftest.$ac_ext <<EOF
-#line 9729 "configure"
+#line 9619 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -9734,7 +9624,7 @@ else
#include <sys/types.h>
main() { dev_t dev; int i = major(dev); return 0; }
EOF
-if { (eval echo configure:9738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_DEVICE_MAJOR_FN=yes
else
@@ -9757,7 +9647,7 @@ EOF
fi
echo $ac_n "checking for minor macro""... $ac_c" 1>&6
-echo "configure:9761: checking for minor macro" >&5
+echo "configure:9651: checking for minor macro" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_DEVICE_MINOR_FN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9766,7 +9656,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_DEVICE_MINOR_FN=cross
else
cat > conftest.$ac_ext <<EOF
-#line 9770 "configure"
+#line 9660 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -9775,7 +9665,7 @@ else
#include <sys/types.h>
main() { dev_t dev; int i = minor(dev); return 0; }
EOF
-if { (eval echo configure:9779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_DEVICE_MINOR_FN=yes
else
@@ -9798,7 +9688,7 @@ EOF
fi
echo $ac_n "checking for unsigned char""... $ac_c" 1>&6
-echo "configure:9802: checking for unsigned char" >&5
+echo "configure:9692: checking for unsigned char" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UNSIGNED_CHAR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9807,12 +9697,12 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_UNSIGNED_CHAR=cross
else
cat > conftest.$ac_ext <<EOF
-#line 9811 "configure"
+#line 9701 "configure"
#include "confdefs.h"
#include <stdio.h>
main() { char c; c=250; exit((c > 0)?0:1); }
EOF
-if { (eval echo configure:9816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_UNSIGNED_CHAR=yes
else
@@ -9835,13 +9725,13 @@ EOF
fi
echo $ac_n "checking for sin_len in sock""... $ac_c" 1>&6
-echo "configure:9839: checking for sin_len in sock" >&5
+echo "configure:9729: checking for sin_len in sock" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_SOCK_SIN_LEN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9845 "configure"
+#line 9735 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
@@ -9850,7 +9740,7 @@ int main() {
struct sockaddr_in sock; sock.sin_len = sizeof(sock);
; return 0; }
EOF
-if { (eval echo configure:9854: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9744: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_SOCK_SIN_LEN=yes
else
@@ -9871,13 +9761,13 @@ EOF
fi
echo $ac_n "checking whether seekdir returns void""... $ac_c" 1>&6
-echo "configure:9875: checking whether seekdir returns void" >&5
+echo "configure:9765: checking whether seekdir returns void" >&5
if eval "test \"`echo '$''{'samba_cv_SEEKDIR_RETURNS_VOID'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9881 "configure"
+#line 9771 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <dirent.h>
@@ -9886,7 +9776,7 @@ int main() {
return 0;
; return 0; }
EOF
-if { (eval echo configure:9890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_SEEKDIR_RETURNS_VOID=yes
else
@@ -9907,20 +9797,20 @@ EOF
fi
echo $ac_n "checking for __FUNCTION__ macro""... $ac_c" 1>&6
-echo "configure:9911: checking for __FUNCTION__ macro" >&5
+echo "configure:9801: checking for __FUNCTION__ macro" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_FUNCTION_MACRO'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9917 "configure"
+#line 9807 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
printf("%s\n", __FUNCTION__);
; return 0; }
EOF
-if { (eval echo configure:9924: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9814: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_FUNCTION_MACRO=yes
else
@@ -9941,7 +9831,7 @@ EOF
fi
echo $ac_n "checking if gettimeofday takes tz argument""... $ac_c" 1>&6
-echo "configure:9945: checking if gettimeofday takes tz argument" >&5
+echo "configure:9835: checking if gettimeofday takes tz argument" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_GETTIMEOFDAY_TZ'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9950,14 +9840,14 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_GETTIMEOFDAY_TZ=cross
else
cat > conftest.$ac_ext <<EOF
-#line 9954 "configure"
+#line 9844 "configure"
#include "confdefs.h"
#include <sys/time.h>
#include <unistd.h>
main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}
EOF
-if { (eval echo configure:9961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_GETTIMEOFDAY_TZ=yes
else
@@ -9980,13 +9870,13 @@ EOF
fi
echo $ac_n "checking for __va_copy""... $ac_c" 1>&6
-echo "configure:9984: checking for __va_copy" >&5
+echo "configure:9874: checking for __va_copy" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_VA_COPY'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9990 "configure"
+#line 9880 "configure"
#include "confdefs.h"
#include <stdarg.h>
va_list ap1,ap2;
@@ -9994,7 +9884,7 @@ int main() {
__va_copy(ap1,ap2);
; return 0; }
EOF
-if { (eval echo configure:9998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
samba_cv_HAVE_VA_COPY=yes
else
@@ -10015,7 +9905,7 @@ EOF
fi
echo $ac_n "checking for C99 vsnprintf""... $ac_c" 1>&6
-echo "configure:10019: checking for C99 vsnprintf" >&5
+echo "configure:9909: checking for C99 vsnprintf" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_C99_VSNPRINTF'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10024,7 +9914,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_C99_VSNPRINTF=cross
else
cat > conftest.$ac_ext <<EOF
-#line 10028 "configure"
+#line 9918 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -10051,7 +9941,7 @@ void foo(const char *format, ...) {
main() { foo("hello"); }
EOF
-if { (eval echo configure:10055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_C99_VSNPRINTF=yes
else
@@ -10074,7 +9964,7 @@ EOF
fi
echo $ac_n "checking for broken readdir""... $ac_c" 1>&6
-echo "configure:10078: checking for broken readdir" >&5
+echo "configure:9968: checking for broken readdir" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_BROKEN_READDIR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10083,7 +9973,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_BROKEN_READDIR=cross
else
cat > conftest.$ac_ext <<EOF
-#line 10087 "configure"
+#line 9977 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <dirent.h>
@@ -10091,7 +9981,7 @@ main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
di->d_name[0] == 0) exit(0); exit(1);}
EOF
-if { (eval echo configure:10095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:9985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_BROKEN_READDIR=yes
else
@@ -10114,13 +10004,13 @@ EOF
fi
echo $ac_n "checking for utimbuf""... $ac_c" 1>&6
-echo "configure:10118: checking for utimbuf" >&5
+echo "configure:10008: checking for utimbuf" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UTIMBUF'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10124 "configure"
+#line 10014 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utime.h>
@@ -10128,7 +10018,7 @@ int main() {
struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));
; return 0; }
EOF
-if { (eval echo configure:10132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UTIMBUF=yes
else
@@ -10152,12 +10042,12 @@ fi
for ac_func in pututline pututxline updwtmp updwtmpx getutmpx
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10156: checking for $ac_func" >&5
+echo "configure:10046: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10161 "configure"
+#line 10051 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -10180,7 +10070,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:10184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -10206,13 +10096,13 @@ done
echo $ac_n "checking for ut_name in utmp""... $ac_c" 1>&6
-echo "configure:10210: checking for ut_name in utmp" >&5
+echo "configure:10100: checking for ut_name in utmp" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_NAME'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10216 "configure"
+#line 10106 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
@@ -10220,7 +10110,7 @@ int main() {
struct utmp ut; ut.ut_name[0] = 'a';
; return 0; }
EOF
-if { (eval echo configure:10224: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10114: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UT_UT_NAME=yes
else
@@ -10241,13 +10131,13 @@ EOF
fi
echo $ac_n "checking for ut_user in utmp""... $ac_c" 1>&6
-echo "configure:10245: checking for ut_user in utmp" >&5
+echo "configure:10135: checking for ut_user in utmp" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_USER'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10251 "configure"
+#line 10141 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
@@ -10255,7 +10145,7 @@ int main() {
struct utmp ut; ut.ut_user[0] = 'a';
; return 0; }
EOF
-if { (eval echo configure:10259: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UT_UT_USER=yes
else
@@ -10276,13 +10166,13 @@ EOF
fi
echo $ac_n "checking for ut_id in utmp""... $ac_c" 1>&6
-echo "configure:10280: checking for ut_id in utmp" >&5
+echo "configure:10170: checking for ut_id in utmp" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_ID'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10286 "configure"
+#line 10176 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
@@ -10290,7 +10180,7 @@ int main() {
struct utmp ut; ut.ut_id[0] = 'a';
; return 0; }
EOF
-if { (eval echo configure:10294: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UT_UT_ID=yes
else
@@ -10311,13 +10201,13 @@ EOF
fi
echo $ac_n "checking for ut_host in utmp""... $ac_c" 1>&6
-echo "configure:10315: checking for ut_host in utmp" >&5
+echo "configure:10205: checking for ut_host in utmp" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_HOST'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10321 "configure"
+#line 10211 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
@@ -10325,7 +10215,7 @@ int main() {
struct utmp ut; ut.ut_host[0] = 'a';
; return 0; }
EOF
-if { (eval echo configure:10329: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10219: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UT_UT_HOST=yes
else
@@ -10346,13 +10236,13 @@ EOF
fi
echo $ac_n "checking for ut_time in utmp""... $ac_c" 1>&6
-echo "configure:10350: checking for ut_time in utmp" >&5
+echo "configure:10240: checking for ut_time in utmp" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_TIME'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10356 "configure"
+#line 10246 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
@@ -10360,7 +10250,7 @@ int main() {
struct utmp ut; time_t t; ut.ut_time = t;
; return 0; }
EOF
-if { (eval echo configure:10364: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UT_UT_TIME=yes
else
@@ -10381,13 +10271,13 @@ EOF
fi
echo $ac_n "checking for ut_tv in utmp""... $ac_c" 1>&6
-echo "configure:10385: checking for ut_tv in utmp" >&5
+echo "configure:10275: checking for ut_tv in utmp" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_TV'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10391 "configure"
+#line 10281 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
@@ -10395,7 +10285,7 @@ int main() {
struct utmp ut; struct timeval tv; ut.ut_tv = tv;
; return 0; }
EOF
-if { (eval echo configure:10399: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10289: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UT_UT_TV=yes
else
@@ -10416,13 +10306,13 @@ EOF
fi
echo $ac_n "checking for ut_type in utmp""... $ac_c" 1>&6
-echo "configure:10420: checking for ut_type in utmp" >&5
+echo "configure:10310: checking for ut_type in utmp" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_TYPE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10426 "configure"
+#line 10316 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
@@ -10430,7 +10320,7 @@ int main() {
struct utmp ut; ut.ut_type = 0;
; return 0; }
EOF
-if { (eval echo configure:10434: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10324: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UT_UT_TYPE=yes
else
@@ -10451,13 +10341,13 @@ EOF
fi
echo $ac_n "checking for ut_pid in utmp""... $ac_c" 1>&6
-echo "configure:10455: checking for ut_pid in utmp" >&5
+echo "configure:10345: checking for ut_pid in utmp" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_PID'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10461 "configure"
+#line 10351 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
@@ -10465,7 +10355,7 @@ int main() {
struct utmp ut; ut.ut_pid = 0;
; return 0; }
EOF
-if { (eval echo configure:10469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10359: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UT_UT_PID=yes
else
@@ -10486,13 +10376,13 @@ EOF
fi
echo $ac_n "checking for ut_exit in utmp""... $ac_c" 1>&6
-echo "configure:10490: checking for ut_exit in utmp" >&5
+echo "configure:10380: checking for ut_exit in utmp" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_EXIT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10496 "configure"
+#line 10386 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
@@ -10500,7 +10390,7 @@ int main() {
struct utmp ut; ut.ut_exit.e_exit = 0;
; return 0; }
EOF
-if { (eval echo configure:10504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10394: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UT_UT_EXIT=yes
else
@@ -10521,13 +10411,13 @@ EOF
fi
echo $ac_n "checking for ut_addr in utmp""... $ac_c" 1>&6
-echo "configure:10525: checking for ut_addr in utmp" >&5
+echo "configure:10415: checking for ut_addr in utmp" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UT_UT_ADDR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10531 "configure"
+#line 10421 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
@@ -10535,7 +10425,7 @@ int main() {
struct utmp ut; ut.ut_addr = 0;
; return 0; }
EOF
-if { (eval echo configure:10539: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10429: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UT_UT_ADDR=yes
else
@@ -10557,13 +10447,13 @@ fi
if test x$ac_cv_func_pututline = xyes ; then
echo $ac_n "checking whether pututline returns pointer""... $ac_c" 1>&6
-echo "configure:10561: checking whether pututline returns pointer" >&5
+echo "configure:10451: checking whether pututline returns pointer" >&5
if eval "test \"`echo '$''{'samba_cv_PUTUTLINE_RETURNS_UTMP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10567 "configure"
+#line 10457 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmp.h>
@@ -10571,7 +10461,7 @@ int main() {
struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);
; return 0; }
EOF
-if { (eval echo configure:10575: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_PUTUTLINE_RETURNS_UTMP=yes
else
@@ -10593,13 +10483,13 @@ EOF
fi
echo $ac_n "checking for ut_syslen in utmpx""... $ac_c" 1>&6
-echo "configure:10597: checking for ut_syslen in utmpx" >&5
+echo "configure:10487: checking for ut_syslen in utmpx" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UX_UT_SYSLEN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10603 "configure"
+#line 10493 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <utmpx.h>
@@ -10607,7 +10497,7 @@ int main() {
struct utmpx ux; ux.ut_syslen = 0;
; return 0; }
EOF
-if { (eval echo configure:10611: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10501: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UX_UT_SYSLEN=yes
else
@@ -10631,7 +10521,7 @@ fi
#################################################
# check for libiconv support
echo $ac_n "checking whether to use libiconv""... $ac_c" 1>&6
-echo "configure:10635: checking whether to use libiconv" >&5
+echo "configure:10525: checking whether to use libiconv" >&5
# Check whether --with-libiconv or --without-libiconv was given.
if test "${with_libiconv+set}" = set; then
withval="$with_libiconv"
@@ -10644,7 +10534,7 @@ if test "${with_libiconv+set}" = set; then
CFLAGS="$CFLAGS -I$withval/include"
LDFLAGS="$LDFLAGS -L$withval/lib"
echo $ac_n "checking for iconv_open in -liconv""... $ac_c" 1>&6
-echo "configure:10648: checking for iconv_open in -liconv" >&5
+echo "configure:10538: checking for iconv_open in -liconv" >&5
ac_lib_var=`echo iconv'_'iconv_open | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -10652,7 +10542,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-liconv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 10656 "configure"
+#line 10546 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -10663,7 +10553,7 @@ int main() {
iconv_open()
; return 0; }
EOF
-if { (eval echo configure:10667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -10706,7 +10596,7 @@ fi
############
# check for iconv in libc
echo $ac_n "checking for working iconv""... $ac_c" 1>&6
-echo "configure:10710: checking for working iconv" >&5
+echo "configure:10600: checking for working iconv" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_NATIVE_ICONV'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10715,7 +10605,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_NATIVE_ICONV=cross
else
cat > conftest.$ac_ext <<EOF
-#line 10719 "configure"
+#line 10609 "configure"
#include "confdefs.h"
#include <iconv.h>
@@ -10726,7 +10616,7 @@ main() {
}
EOF
-if { (eval echo configure:10730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_NATIVE_ICONV=yes
else
@@ -10750,7 +10640,7 @@ fi
echo $ac_n "checking for Linux kernel oplocks""... $ac_c" 1>&6
-echo "configure:10754: checking for Linux kernel oplocks" >&5
+echo "configure:10644: checking for Linux kernel oplocks" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_OPLOCKS_LINUX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10759,7 +10649,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross
else
cat > conftest.$ac_ext <<EOF
-#line 10763 "configure"
+#line 10653 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -10773,7 +10663,7 @@ main() {
}
EOF
-if { (eval echo configure:10777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10667: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes
else
@@ -10796,7 +10686,7 @@ EOF
fi
echo $ac_n "checking for kernel change notify support""... $ac_c" 1>&6
-echo "configure:10800: checking for kernel change notify support" >&5
+echo "configure:10690: checking for kernel change notify support" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_CHANGE_NOTIFY'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10805,7 +10695,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross
else
cat > conftest.$ac_ext <<EOF
-#line 10809 "configure"
+#line 10699 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -10819,7 +10709,7 @@ main() {
}
EOF
-if { (eval echo configure:10823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes
else
@@ -10842,7 +10732,7 @@ EOF
fi
echo $ac_n "checking for kernel share modes""... $ac_c" 1>&6
-echo "configure:10846: checking for kernel share modes" >&5
+echo "configure:10736: checking for kernel share modes" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_SHARE_MODES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10851,7 +10741,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_KERNEL_SHARE_MODES=cross
else
cat > conftest.$ac_ext <<EOF
-#line 10855 "configure"
+#line 10745 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -10867,7 +10757,7 @@ main() {
}
EOF
-if { (eval echo configure:10871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_KERNEL_SHARE_MODES=yes
else
@@ -10893,13 +10783,13 @@ fi
echo $ac_n "checking for IRIX kernel oplock type definitions""... $ac_c" 1>&6
-echo "configure:10897: checking for IRIX kernel oplock type definitions" >&5
+echo "configure:10787: checking for IRIX kernel oplock type definitions" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_KERNEL_OPLOCKS_IRIX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10903 "configure"
+#line 10793 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <fcntl.h>
@@ -10907,7 +10797,7 @@ int main() {
oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;
; return 0; }
EOF
-if { (eval echo configure:10911: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10801: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes
else
@@ -10928,7 +10818,7 @@ EOF
fi
echo $ac_n "checking for irix specific capabilities""... $ac_c" 1>&6
-echo "configure:10932: checking for irix specific capabilities" >&5
+echo "configure:10822: checking for irix specific capabilities" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10937,7 +10827,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross
else
cat > conftest.$ac_ext <<EOF
-#line 10941 "configure"
+#line 10831 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/capability.h>
@@ -10952,7 +10842,7 @@ main() {
}
EOF
-if { (eval echo configure:10956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:10846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes
else
@@ -10980,13 +10870,13 @@ fi
#
echo $ac_n "checking for int16 typedef included by rpc/rpc.h""... $ac_c" 1>&6
-echo "configure:10984: checking for int16 typedef included by rpc/rpc.h" >&5
+echo "configure:10874: checking for int16 typedef included by rpc/rpc.h" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_INT16_FROM_RPC_RPC_H'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10990 "configure"
+#line 10880 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if defined(HAVE_RPC_RPC_H)
@@ -10996,7 +10886,7 @@ int main() {
int16 testvar;
; return 0; }
EOF
-if { (eval echo configure:11000: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes
else
@@ -11017,13 +10907,13 @@ EOF
fi
echo $ac_n "checking for uint16 typedef included by rpc/rpc.h""... $ac_c" 1>&6
-echo "configure:11021: checking for uint16 typedef included by rpc/rpc.h" >&5
+echo "configure:10911: checking for uint16 typedef included by rpc/rpc.h" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UINT16_FROM_RPC_RPC_H'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11027 "configure"
+#line 10917 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if defined(HAVE_RPC_RPC_H)
@@ -11033,7 +10923,7 @@ int main() {
uint16 testvar;
; return 0; }
EOF
-if { (eval echo configure:11037: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes
else
@@ -11054,13 +10944,13 @@ EOF
fi
echo $ac_n "checking for int32 typedef included by rpc/rpc.h""... $ac_c" 1>&6
-echo "configure:11058: checking for int32 typedef included by rpc/rpc.h" >&5
+echo "configure:10948: checking for int32 typedef included by rpc/rpc.h" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_INT32_FROM_RPC_RPC_H'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11064 "configure"
+#line 10954 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if defined(HAVE_RPC_RPC_H)
@@ -11070,7 +10960,7 @@ int main() {
int32 testvar;
; return 0; }
EOF
-if { (eval echo configure:11074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes
else
@@ -11091,13 +10981,13 @@ EOF
fi
echo $ac_n "checking for uint32 typedef included by rpc/rpc.h""... $ac_c" 1>&6
-echo "configure:11095: checking for uint32 typedef included by rpc/rpc.h" >&5
+echo "configure:10985: checking for uint32 typedef included by rpc/rpc.h" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_UINT32_FROM_RPC_RPC_H'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11101 "configure"
+#line 10991 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if defined(HAVE_RPC_RPC_H)
@@ -11107,7 +10997,7 @@ int main() {
uint32 testvar;
; return 0; }
EOF
-if { (eval echo configure:11111: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11001: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes
else
@@ -11129,13 +11019,13 @@ fi
echo $ac_n "checking for conflicting AUTH_ERROR define in rpc/rpc.h""... $ac_c" 1>&6
-echo "configure:11133: checking for conflicting AUTH_ERROR define in rpc/rpc.h" >&5
+echo "configure:11023: checking for conflicting AUTH_ERROR define in rpc/rpc.h" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 11139 "configure"
+#line 11029 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef HAVE_SYS_SECURITY_H
@@ -11149,7 +11039,7 @@ int main() {
int testvar;
; return 0; }
EOF
-if { (eval echo configure:11153: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11043: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no
else
@@ -11170,16 +11060,16 @@ EOF
fi
echo $ac_n "checking for test routines""... $ac_c" 1>&6
-echo "configure:11174: checking for test routines" >&5
+echo "configure:11064: checking for test routines" >&5
if test "$cross_compiling" = yes; then
echo "configure: warning: cannot run when cross-compiling" 1>&2
else
cat > conftest.$ac_ext <<EOF
-#line 11179 "configure"
+#line 11069 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/trivial.c"
EOF
-if { (eval echo configure:11183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
echo "$ac_t""yes" 1>&6
else
@@ -11193,7 +11083,7 @@ fi
echo $ac_n "checking for ftruncate extend""... $ac_c" 1>&6
-echo "configure:11197: checking for ftruncate extend" >&5
+echo "configure:11087: checking for ftruncate extend" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_FTRUNCATE_EXTEND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11202,11 +11092,11 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_FTRUNCATE_EXTEND=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11206 "configure"
+#line 11096 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/ftruncate.c"
EOF
-if { (eval echo configure:11210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_FTRUNCATE_EXTEND=yes
else
@@ -11229,7 +11119,7 @@ EOF
fi
echo $ac_n "checking for AF_LOCAL socket support""... $ac_c" 1>&6
-echo "configure:11233: checking for AF_LOCAL socket support" >&5
+echo "configure:11123: checking for AF_LOCAL socket support" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_WORKING_AF_LOCAL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11238,11 +11128,11 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_WORKING_AF_LOCAL=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11242 "configure"
+#line 11132 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/unixsock.c"
EOF
-if { (eval echo configure:11246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11136: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_WORKING_AF_LOCAL=yes
else
@@ -11266,7 +11156,7 @@ EOF
fi
echo $ac_n "checking for broken getgroups""... $ac_c" 1>&6
-echo "configure:11270: checking for broken getgroups" >&5
+echo "configure:11160: checking for broken getgroups" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_BROKEN_GETGROUPS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11275,11 +11165,11 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_BROKEN_GETGROUPS=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11279 "configure"
+#line 11169 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/getgroups.c"
EOF
-if { (eval echo configure:11283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_BROKEN_GETGROUPS=yes
else
@@ -11302,7 +11192,7 @@ EOF
fi
echo $ac_n "checking whether getpass should be replaced""... $ac_c" 1>&6
-echo "configure:11306: checking whether getpass should be replaced" >&5
+echo "configure:11196: checking whether getpass should be replaced" >&5
if eval "test \"`echo '$''{'samba_cv_REPLACE_GETPASS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11310,7 +11200,7 @@ else
SAVE_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I${srcdir-.}/ -I${srcdir-.}/include -I${srcdir-.}/ubiqx -I${srcdir-.}/popt -I${srcdir-.}/smbwrapper"
cat > conftest.$ac_ext <<EOF
-#line 11314 "configure"
+#line 11204 "configure"
#include "confdefs.h"
#define REPLACE_GETPASS 1
@@ -11323,7 +11213,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:11327: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11217: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_REPLACE_GETPASS=yes
else
@@ -11346,7 +11236,7 @@ EOF
fi
echo $ac_n "checking for broken inet_ntoa""... $ac_c" 1>&6
-echo "configure:11350: checking for broken inet_ntoa" >&5
+echo "configure:11240: checking for broken inet_ntoa" >&5
if eval "test \"`echo '$''{'samba_cv_REPLACE_INET_NTOA'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11355,7 +11245,7 @@ if test "$cross_compiling" = yes; then
samba_cv_REPLACE_INET_NTOA=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11359 "configure"
+#line 11249 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -11369,7 +11259,7 @@ if (strcmp(inet_ntoa(ip),"18.52.86.120") &&
strcmp(inet_ntoa(ip),"120.86.52.18")) { exit(0); }
exit(1);}
EOF
-if { (eval echo configure:11373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11263: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_REPLACE_INET_NTOA=yes
else
@@ -11392,7 +11282,7 @@ EOF
fi
echo $ac_n "checking for secure mkstemp""... $ac_c" 1>&6
-echo "configure:11396: checking for secure mkstemp" >&5
+echo "configure:11286: checking for secure mkstemp" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_SECURE_MKSTEMP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11401,7 +11291,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_SECURE_MKSTEMP=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11405 "configure"
+#line 11295 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <sys/types.h>
@@ -11418,7 +11308,7 @@ main() {
exit(0);
}
EOF
-if { (eval echo configure:11422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_SECURE_MKSTEMP=yes
else
@@ -11441,7 +11331,7 @@ EOF
fi
echo $ac_n "checking for sysconf(_SC_NGROUPS_MAX)""... $ac_c" 1>&6
-echo "configure:11445: checking for sysconf(_SC_NGROUPS_MAX)" >&5
+echo "configure:11335: checking for sysconf(_SC_NGROUPS_MAX)" >&5
if eval "test \"`echo '$''{'samba_cv_SYSCONF_SC_NGROUPS_MAX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11450,12 +11340,12 @@ if test "$cross_compiling" = yes; then
samba_cv_SYSCONF_SC_NGROUPS_MAX=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11454 "configure"
+#line 11344 "configure"
#include "confdefs.h"
#include <unistd.h>
main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }
EOF
-if { (eval echo configure:11459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11349: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_SYSCONF_SC_NGROUPS_MAX=yes
else
@@ -11478,7 +11368,7 @@ EOF
fi
echo $ac_n "checking for root""... $ac_c" 1>&6
-echo "configure:11482: checking for root" >&5
+echo "configure:11372: checking for root" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_ROOT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11487,11 +11377,11 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_ROOT=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11491 "configure"
+#line 11381 "configure"
#include "confdefs.h"
main() { exit(getuid() != 0); }
EOF
-if { (eval echo configure:11495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11385: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_ROOT=yes
else
@@ -11519,7 +11409,7 @@ fi
# look for a method of finding the list of network interfaces
iface=no;
echo $ac_n "checking for iface AIX""... $ac_c" 1>&6
-echo "configure:11523: checking for iface AIX" >&5
+echo "configure:11413: checking for iface AIX" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_IFACE_AIX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11528,7 +11418,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_IFACE_AIX=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11532 "configure"
+#line 11422 "configure"
#include "confdefs.h"
#define HAVE_IFACE_AIX 1
@@ -11536,7 +11426,7 @@ else
#include "confdefs.h"
#include "${srcdir-.}/lib/interfaces.c"
EOF
-if { (eval echo configure:11540: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11430: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_IFACE_AIX=yes
else
@@ -11560,7 +11450,7 @@ fi
if test $iface = no; then
echo $ac_n "checking for iface ifconf""... $ac_c" 1>&6
-echo "configure:11564: checking for iface ifconf" >&5
+echo "configure:11454: checking for iface ifconf" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_IFACE_IFCONF'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11569,7 +11459,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_IFACE_IFCONF=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11573 "configure"
+#line 11463 "configure"
#include "confdefs.h"
#define HAVE_IFACE_IFCONF 1
@@ -11577,7 +11467,7 @@ else
#include "confdefs.h"
#include "${srcdir-.}/lib/interfaces.c"
EOF
-if { (eval echo configure:11581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_IFACE_IFCONF=yes
else
@@ -11602,7 +11492,7 @@ fi
if test $iface = no; then
echo $ac_n "checking for iface ifreq""... $ac_c" 1>&6
-echo "configure:11606: checking for iface ifreq" >&5
+echo "configure:11496: checking for iface ifreq" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_IFACE_IFREQ'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11611,7 +11501,7 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_IFACE_IFREQ=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11615 "configure"
+#line 11505 "configure"
#include "confdefs.h"
#define HAVE_IFACE_IFREQ 1
@@ -11619,7 +11509,7 @@ else
#include "confdefs.h"
#include "${srcdir-.}/lib/interfaces.c"
EOF
-if { (eval echo configure:11623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_IFACE_IFREQ=yes
else
@@ -11648,7 +11538,7 @@ fi
seteuid=no;
if test $seteuid = no; then
echo $ac_n "checking for setresuid""... $ac_c" 1>&6
-echo "configure:11652: checking for setresuid" >&5
+echo "configure:11542: checking for setresuid" >&5
if eval "test \"`echo '$''{'samba_cv_USE_SETRESUID'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11657,7 +11547,7 @@ if test "$cross_compiling" = yes; then
samba_cv_USE_SETRESUID=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11661 "configure"
+#line 11551 "configure"
#include "confdefs.h"
#define AUTOCONF_TEST 1
@@ -11665,7 +11555,7 @@ else
#include "confdefs.h"
#include "${srcdir-.}/lib/util_sec.c"
EOF
-if { (eval echo configure:11669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_USE_SETRESUID=yes
else
@@ -11691,7 +11581,7 @@ fi
if test $seteuid = no; then
echo $ac_n "checking for setreuid""... $ac_c" 1>&6
-echo "configure:11695: checking for setreuid" >&5
+echo "configure:11585: checking for setreuid" >&5
if eval "test \"`echo '$''{'samba_cv_USE_SETREUID'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11700,7 +11590,7 @@ if test "$cross_compiling" = yes; then
samba_cv_USE_SETREUID=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11704 "configure"
+#line 11594 "configure"
#include "confdefs.h"
#define AUTOCONF_TEST 1
@@ -11708,7 +11598,7 @@ else
#include "confdefs.h"
#include "${srcdir-.}/lib/util_sec.c"
EOF
-if { (eval echo configure:11712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_USE_SETREUID=yes
else
@@ -11733,7 +11623,7 @@ fi
if test $seteuid = no; then
echo $ac_n "checking for seteuid""... $ac_c" 1>&6
-echo "configure:11737: checking for seteuid" >&5
+echo "configure:11627: checking for seteuid" >&5
if eval "test \"`echo '$''{'samba_cv_USE_SETEUID'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11742,7 +11632,7 @@ if test "$cross_compiling" = yes; then
samba_cv_USE_SETEUID=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11746 "configure"
+#line 11636 "configure"
#include "confdefs.h"
#define AUTOCONF_TEST 1
@@ -11750,7 +11640,7 @@ else
#include "confdefs.h"
#include "${srcdir-.}/lib/util_sec.c"
EOF
-if { (eval echo configure:11754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11644: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_USE_SETEUID=yes
else
@@ -11775,7 +11665,7 @@ fi
if test $seteuid = no; then
echo $ac_n "checking for setuidx""... $ac_c" 1>&6
-echo "configure:11779: checking for setuidx" >&5
+echo "configure:11669: checking for setuidx" >&5
if eval "test \"`echo '$''{'samba_cv_USE_SETUIDX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11784,7 +11674,7 @@ if test "$cross_compiling" = yes; then
samba_cv_USE_SETUIDX=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11788 "configure"
+#line 11678 "configure"
#include "confdefs.h"
#define AUTOCONF_TEST 1
@@ -11792,7 +11682,7 @@ else
#include "confdefs.h"
#include "${srcdir-.}/lib/util_sec.c"
EOF
-if { (eval echo configure:11796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_USE_SETUIDX=yes
else
@@ -11817,7 +11707,7 @@ fi
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:11821: checking for working mmap" >&5
+echo "configure:11711: checking for working mmap" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_MMAP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11826,11 +11716,11 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_MMAP=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11830 "configure"
+#line 11720 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/shared_mmap.c"
EOF
-if { (eval echo configure:11834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_MMAP=yes
else
@@ -11853,7 +11743,7 @@ EOF
fi
echo $ac_n "checking for ftruncate needs root""... $ac_c" 1>&6
-echo "configure:11857: checking for ftruncate needs root" >&5
+echo "configure:11747: checking for ftruncate needs root" >&5
if eval "test \"`echo '$''{'samba_cv_FTRUNCATE_NEEDS_ROOT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11862,11 +11752,11 @@ if test "$cross_compiling" = yes; then
samba_cv_FTRUNCATE_NEEDS_ROOT=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11866 "configure"
+#line 11756 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/ftruncroot.c"
EOF
-if { (eval echo configure:11870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_FTRUNCATE_NEEDS_ROOT=yes
else
@@ -11889,7 +11779,7 @@ EOF
fi
echo $ac_n "checking for fcntl locking""... $ac_c" 1>&6
-echo "configure:11893: checking for fcntl locking" >&5
+echo "configure:11783: checking for fcntl locking" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_FCNTL_LOCK'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11898,11 +11788,11 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_FCNTL_LOCK=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11902 "configure"
+#line 11792 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/fcntl_lock.c"
EOF
-if { (eval echo configure:11906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11796: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_FCNTL_LOCK=yes
else
@@ -11925,7 +11815,7 @@ EOF
fi
echo $ac_n "checking for broken (glibc2.1/x86) 64 bit fcntl locking""... $ac_c" 1>&6
-echo "configure:11929: checking for broken (glibc2.1/x86) 64 bit fcntl locking" >&5
+echo "configure:11819: checking for broken (glibc2.1/x86) 64 bit fcntl locking" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_BROKEN_FCNTL64_LOCKS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11934,11 +11824,11 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11938 "configure"
+#line 11828 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/fcntl_lock64.c"
EOF
-if { (eval echo configure:11942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes
else
@@ -11963,7 +11853,7 @@ else
echo $ac_n "checking for 64 bit fcntl locking""... $ac_c" 1>&6
-echo "configure:11967: checking for 64 bit fcntl locking" >&5
+echo "configure:11857: checking for 64 bit fcntl locking" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_STRUCT_FLOCK64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -11972,7 +11862,7 @@ else
samba_cv_HAVE_STRUCT_FLOCK64=cross
else
cat > conftest.$ac_ext <<EOF
-#line 11976 "configure"
+#line 11866 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -11996,7 +11886,7 @@ exit(1);
#endif
}
EOF
-if { (eval echo configure:12000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:11890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_STRUCT_FLOCK64=yes
else
@@ -12021,13 +11911,13 @@ EOF
fi
echo $ac_n "checking for st_blocks in struct stat""... $ac_c" 1>&6
-echo "configure:12025: checking for st_blocks in struct stat" >&5
+echo "configure:11915: checking for st_blocks in struct stat" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_STAT_ST_BLOCKS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12031 "configure"
+#line 11921 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -12036,7 +11926,7 @@ int main() {
struct stat st; st.st_blocks = 0;
; return 0; }
EOF
-if { (eval echo configure:12040: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11930: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_STAT_ST_BLOCKS=yes
else
@@ -12057,13 +11947,13 @@ EOF
fi
echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
-echo "configure:12061: checking for st_blksize in struct stat" >&5
+echo "configure:11951: checking for st_blksize in struct stat" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_STAT_ST_BLKSIZE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12067 "configure"
+#line 11957 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -12072,7 +11962,7 @@ int main() {
struct stat st; st.st_blksize = 0;
; return 0; }
EOF
-if { (eval echo configure:12076: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11966: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_STAT_ST_BLKSIZE=yes
else
@@ -12095,13 +11985,13 @@ fi
case "$host_os" in
*linux*)
echo $ac_n "checking for broken RedHat 7.2 system header files""... $ac_c" 1>&6
-echo "configure:12099: checking for broken RedHat 7.2 system header files" >&5
+echo "configure:11989: checking for broken RedHat 7.2 system header files" >&5
if eval "test \"`echo '$''{'samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12105 "configure"
+#line 11995 "configure"
#include "confdefs.h"
#ifdef HAVE_SYS_VFS_H
@@ -12115,7 +12005,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:12119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no
else
@@ -12138,13 +12028,13 @@ fi
esac
echo $ac_n "checking for broken nisplus include files""... $ac_c" 1>&6
-echo "configure:12142: checking for broken nisplus include files" >&5
+echo "configure:12032: checking for broken nisplus include files" >&5
if eval "test \"`echo '$''{'samba_cv_BROKEN_NISPLUS_INCLUDE_FILES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12148 "configure"
+#line 12038 "configure"
#include "confdefs.h"
#include <sys/acl.h>
#if defined(HAVE_RPCSVC_NIS_H)
@@ -12154,7 +12044,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:12158: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12048: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no
else
@@ -12178,7 +12068,7 @@ fi
#################################################
# check for smbwrapper support
echo $ac_n "checking whether to use smbwrapper""... $ac_c" 1>&6
-echo "configure:12182: checking whether to use smbwrapper" >&5
+echo "configure:12072: checking whether to use smbwrapper" >&5
# Check whether --with-smbwrapper or --without-smbwrapper was given.
if test "${with_smbwrapper+set}" = set; then
withval="$with_smbwrapper"
@@ -12227,7 +12117,7 @@ fi
#################################################
# check for AFS clear-text auth support
echo $ac_n "checking whether to use AFS clear-text auth""... $ac_c" 1>&6
-echo "configure:12231: checking whether to use AFS clear-text auth" >&5
+echo "configure:12121: checking whether to use AFS clear-text auth" >&5
# Check whether --with-afs or --without-afs was given.
if test "${with_afs+set}" = set; then
withval="$with_afs"
@@ -12253,7 +12143,7 @@ fi
#################################################
# check for the DFS clear-text auth system
echo $ac_n "checking whether to use DFS clear-text auth""... $ac_c" 1>&6
-echo "configure:12257: checking whether to use DFS clear-text auth" >&5
+echo "configure:12147: checking whether to use DFS clear-text auth" >&5
# Check whether --with-dfs or --without-dfs was given.
if test "${with_dfs+set}" = set; then
withval="$with_dfs"
@@ -12280,7 +12170,7 @@ fi
with_ads_support=yes
echo $ac_n "checking whether to use Active Directory""... $ac_c" 1>&6
-echo "configure:12284: checking whether to use Active Directory" >&5
+echo "configure:12174: checking whether to use Active Directory" >&5
# Check whether --with-ads or --without-ads was given.
if test "${with_ads+set}" = set; then
@@ -12308,7 +12198,7 @@ if test x"$with_ads_support" = x"yes"; then
#################################################
# check for location of Kerberos 5 install
echo $ac_n "checking for kerberos 5 install path""... $ac_c" 1>&6
-echo "configure:12312: checking for kerberos 5 install path" >&5
+echo "configure:12202: checking for kerberos 5 install path" >&5
# Check whether --with-krb5 or --without-krb5 was given.
if test "${with_krb5+set}" = set; then
withval="$with_krb5"
@@ -12336,8 +12226,9 @@ if test x$FOUND_KRB5 = x"no"; then
#################################################
# see if this box has the SuSE location for the heimdal kerberos implementation
echo $ac_n "checking for /usr/include/heimdal""... $ac_c" 1>&6
-echo "configure:12340: checking for /usr/include/heimdal" >&5
+echo "configure:12230: checking for /usr/include/heimdal" >&5
if test -d /usr/include/heimdal; then
+ LIBS="$LIBS -lkrb5"
CFLAGS="$CFLAGS -I/usr/include/heimdal"
CPPFLAGS="$CPPFLAGS -I/usr/include/heimdal"
echo "$ac_t""yes" 1>&6
@@ -12351,8 +12242,9 @@ if test x$FOUND_KRB5 = x"no"; then
#################################################
# see if this box has the RedHat location for kerberos
echo $ac_n "checking for /usr/kerberos""... $ac_c" 1>&6
-echo "configure:12355: checking for /usr/kerberos" >&5
+echo "configure:12246: checking for /usr/kerberos" >&5
if test -d /usr/kerberos; then
+ LIBS="$LIBS -lkrb5"
LDFLAGS="$LDFLAGS -L/usr/kerberos/lib"
CFLAGS="$CFLAGS -I/usr/kerberos/include"
CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
@@ -12370,17 +12262,17 @@ fi
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:12374: checking for $ac_hdr" >&5
+echo "configure:12266: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12379 "configure"
+#line 12271 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12384: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12276: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -12413,17 +12305,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:12417: checking for $ac_hdr" >&5
+echo "configure:12309: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12422 "configure"
+#line 12314 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12427: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -12453,7 +12345,7 @@ done
##################################################################
# we might need the k5crypto and com_err libraries on some systems
echo $ac_n "checking for _et_list in -lcom_err""... $ac_c" 1>&6
-echo "configure:12457: checking for _et_list in -lcom_err" >&5
+echo "configure:12349: checking for _et_list in -lcom_err" >&5
ac_lib_var=`echo com_err'_'_et_list | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -12461,7 +12353,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lcom_err $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12465 "configure"
+#line 12357 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -12472,7 +12364,7 @@ int main() {
_et_list()
; return 0; }
EOF
-if { (eval echo configure:12476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12493,7 +12385,7 @@ else
fi
echo $ac_n "checking for krb5_encrypt_data in -lk5crypto""... $ac_c" 1>&6
-echo "configure:12497: checking for krb5_encrypt_data in -lk5crypto" >&5
+echo "configure:12389: checking for krb5_encrypt_data in -lk5crypto" >&5
ac_lib_var=`echo k5crypto'_'krb5_encrypt_data | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -12501,7 +12393,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lk5crypto $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12505 "configure"
+#line 12397 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -12512,7 +12404,7 @@ int main() {
krb5_encrypt_data()
; return 0; }
EOF
-if { (eval echo configure:12516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12534,7 +12426,7 @@ fi
# Heimdal checks.
echo $ac_n "checking for des_set_key in -lcrypto""... $ac_c" 1>&6
-echo "configure:12538: checking for des_set_key in -lcrypto" >&5
+echo "configure:12430: checking for des_set_key in -lcrypto" >&5
ac_lib_var=`echo crypto'_'des_set_key | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -12542,7 +12434,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lcrypto $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12546 "configure"
+#line 12438 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -12553,7 +12445,7 @@ int main() {
des_set_key()
; return 0; }
EOF
-if { (eval echo configure:12557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12574,7 +12466,7 @@ else
fi
echo $ac_n "checking for copy_Authenticator in -lasn1""... $ac_c" 1>&6
-echo "configure:12578: checking for copy_Authenticator in -lasn1" >&5
+echo "configure:12470: checking for copy_Authenticator in -lasn1" >&5
ac_lib_var=`echo asn1'_'copy_Authenticator | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -12582,7 +12474,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lasn1 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12586 "configure"
+#line 12478 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -12593,7 +12485,7 @@ int main() {
copy_Authenticator()
; return 0; }
EOF
-if { (eval echo configure:12597: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12613,8 +12505,54 @@ else
echo "$ac_t""no" 1>&6
fi
+ # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
+ echo $ac_n "checking for gss_display_status in -lgssapi""... $ac_c" 1>&6
+echo "configure:12511: checking for gss_display_status in -lgssapi" >&5
+ac_lib_var=`echo gssapi'_'gss_display_status | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lgssapi $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 12519 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char gss_display_status();
+
+int main() {
+gss_display_status()
+; return 0; }
+EOF
+if { (eval echo configure:12530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ LIBS="$LIBS -lgssapi -lkrb5 -lasn1";
+ cat >> confdefs.h <<\EOF
+#define HAVE_GSSAPI 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
echo $ac_n "checking for krb5_set_real_time in -lkrb5""... $ac_c" 1>&6
-echo "configure:12618: checking for krb5_set_real_time in -lkrb5" >&5
+echo "configure:12556: checking for krb5_set_real_time in -lkrb5" >&5
ac_lib_var=`echo krb5'_'krb5_set_real_time | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -12622,7 +12560,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lkrb5 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12626 "configure"
+#line 12564 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -12633,7 +12571,7 @@ int main() {
krb5_set_real_time()
; return 0; }
EOF
-if { (eval echo configure:12637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12657,7 +12595,7 @@ else
fi
echo $ac_n "checking for krb5_set_default_in_tkt_etypes in -lkrb5""... $ac_c" 1>&6
-echo "configure:12661: checking for krb5_set_default_in_tkt_etypes in -lkrb5" >&5
+echo "configure:12599: checking for krb5_set_default_in_tkt_etypes in -lkrb5" >&5
ac_lib_var=`echo krb5'_'krb5_set_default_in_tkt_etypes | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -12665,7 +12603,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lkrb5 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12669 "configure"
+#line 12607 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -12676,7 +12614,7 @@ int main() {
krb5_set_default_in_tkt_etypes()
; return 0; }
EOF
-if { (eval echo configure:12680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12700,7 +12638,7 @@ else
fi
echo $ac_n "checking for krb5_set_default_tgs_ktypes in -lkrb5""... $ac_c" 1>&6
-echo "configure:12704: checking for krb5_set_default_tgs_ktypes in -lkrb5" >&5
+echo "configure:12642: checking for krb5_set_default_tgs_ktypes in -lkrb5" >&5
ac_lib_var=`echo krb5'_'krb5_set_default_tgs_ktypes | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -12708,7 +12646,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lkrb5 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12712 "configure"
+#line 12650 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -12719,7 +12657,7 @@ int main() {
krb5_set_default_tgs_ktypes()
; return 0; }
EOF
-if { (eval echo configure:12723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12661: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12743,21 +12681,366 @@ else
fi
+ echo $ac_n "checking for krb5_principal2salt in -lkrb5""... $ac_c" 1>&6
+echo "configure:12686: checking for krb5_principal2salt in -lkrb5" >&5
+ac_lib_var=`echo krb5'_'krb5_principal2salt | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lkrb5 $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 12694 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char krb5_principal2salt();
+
+int main() {
+krb5_principal2salt()
+; return 0; }
+EOF
+if { (eval echo configure:12705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_KRB5_PRINCIPAL2SALT 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ echo $ac_n "checking for krb5_use_enctype in -lkrb5""... $ac_c" 1>&6
+echo "configure:12729: checking for krb5_use_enctype in -lkrb5" >&5
+ac_lib_var=`echo krb5'_'krb5_use_enctype | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lkrb5 $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 12737 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char krb5_use_enctype();
+
+int main() {
+krb5_use_enctype()
+; return 0; }
+EOF
+if { (eval echo configure:12748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_KRB5_USE_ENCTYPE 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ echo $ac_n "checking for krb5_string_to_key in -lkrb5""... $ac_c" 1>&6
+echo "configure:12772: checking for krb5_string_to_key in -lkrb5" >&5
+ac_lib_var=`echo krb5'_'krb5_string_to_key | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lkrb5 $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 12780 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char krb5_string_to_key();
+
+int main() {
+krb5_string_to_key()
+; return 0; }
+EOF
+if { (eval echo configure:12791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_KRB5_STRING_TO_KEY 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ echo $ac_n "checking for krb5_get_pw_salt in -lkrb5""... $ac_c" 1>&6
+echo "configure:12815: checking for krb5_get_pw_salt in -lkrb5" >&5
+ac_lib_var=`echo krb5'_'krb5_get_pw_salt | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lkrb5 $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 12823 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char krb5_get_pw_salt();
+
+int main() {
+krb5_get_pw_salt()
+; return 0; }
+EOF
+if { (eval echo configure:12834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_KRB5_GET_PW_SALT 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ echo $ac_n "checking for krb5_string_to_key_salt in -lkrb5""... $ac_c" 1>&6
+echo "configure:12858: checking for krb5_string_to_key_salt in -lkrb5" >&5
+ac_lib_var=`echo krb5'_'krb5_string_to_key_salt | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lkrb5 $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 12866 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char krb5_string_to_key_salt();
+
+int main() {
+krb5_string_to_key_salt()
+; return 0; }
+EOF
+if { (eval echo configure:12877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_KRB5_STRING_TO_KEY_SALT 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ echo $ac_n "checking for krb5_auth_con_setkey in -lkrb5""... $ac_c" 1>&6
+echo "configure:12901: checking for krb5_auth_con_setkey in -lkrb5" >&5
+ac_lib_var=`echo krb5'_'krb5_auth_con_setkey | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lkrb5 $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 12909 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char krb5_auth_con_setkey();
+
+int main() {
+krb5_auth_con_setkey()
+; return 0; }
+EOF
+if { (eval echo configure:12920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_KRB5_AUTH_CON_SETKEY 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ echo $ac_n "checking for krb5_auth_con_setuseruserkey in -lkrb5""... $ac_c" 1>&6
+echo "configure:12944: checking for krb5_auth_con_setuseruserkey in -lkrb5" >&5
+ac_lib_var=`echo krb5'_'krb5_auth_con_setuseruserkey | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lkrb5 $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 12952 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char krb5_auth_con_setuseruserkey();
+
+int main() {
+krb5_auth_con_setuseruserkey()
+; return 0; }
+EOF
+if { (eval echo configure:12963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_KRB5_AUTH_CON_SETUSERUSERKEY 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ echo $ac_n "checking for krb5_locate_kdc in -lkrb5""... $ac_c" 1>&6
+echo "configure:12987: checking for krb5_locate_kdc in -lkrb5" >&5
+ac_lib_var=`echo krb5'_'krb5_locate_kdc | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lkrb5 $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 12995 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char krb5_locate_kdc();
+
+int main() {
+krb5_locate_kdc()
+; return 0; }
+EOF
+if { (eval echo configure:13006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+#define HAVE_KRB5_LOCATE_KDC 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
echo $ac_n "checking for addrtype in krb5_address""... $ac_c" 1>&6
-echo "configure:12748: checking for addrtype in krb5_address" >&5
+echo "configure:13031: checking for addrtype in krb5_address" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12754 "configure"
+#line 13037 "configure"
#include "confdefs.h"
#include <krb5.h>
int main() {
krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;
; return 0; }
EOF
-if { (eval echo configure:12761: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13044: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes
else
@@ -12778,20 +13061,20 @@ EOF
fi
echo $ac_n "checking for addr_type in krb5_address""... $ac_c" 1>&6
-echo "configure:12782: checking for addr_type in krb5_address" >&5
+echo "configure:13065: checking for addr_type in krb5_address" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 12788 "configure"
+#line 13071 "configure"
#include "confdefs.h"
#include <krb5.h>
int main() {
krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;
; return 0; }
EOF
-if { (eval echo configure:12795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13078: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes
else
@@ -12811,77 +13094,64 @@ EOF
fi
- ########################################################
- # now see if we can find the krb5 libs in standard paths
- # or as specified above
- echo $ac_n "checking for krb5_mk_req_extended in -lkrb5""... $ac_c" 1>&6
-echo "configure:12819: checking for krb5_mk_req_extended in -lkrb5" >&5
-ac_lib_var=`echo krb5'_'krb5_mk_req_extended | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+echo $ac_n "checking for enc_part2 in krb5_ticket""... $ac_c" 1>&6
+echo "configure:13099: checking for enc_part2 in krb5_ticket" >&5
+if eval "test \"`echo '$''{'samba_cv_HAVE_KRB5_TKT_ENC_PART2'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_save_LIBS="$LIBS"
-LIBS="-lkrb5 $LIBS"
+
cat > conftest.$ac_ext <<EOF
-#line 12827 "configure"
+#line 13105 "configure"
#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char krb5_mk_req_extended();
-
+#include <krb5.h>
int main() {
-krb5_mk_req_extended()
+krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;
; return 0; }
EOF
-if { (eval echo configure:12838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13112: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
+ samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
+ samba_cv_HAVE_KRB5_TKT_ENC_PART2=no
fi
rm -f conftest*
-LIBS="$ac_save_LIBS"
-
fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- LIBS="$LIBS -lkrb5";
- cat >> confdefs.h <<\EOF
-#define HAVE_KRB5 1
+
+echo "$ac_t""$samba_cv_HAVE_KRB5_TKT_ENC_PART2" 1>&6
+if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_KRB5_TKT_ENC_PART2 1
EOF
-else
- echo "$ac_t""no" 1>&6
fi
-
########################################################
- # now see if we can find the gssapi libs in standard paths
- echo $ac_n "checking for gss_display_status in -lgssapi_krb5""... $ac_c" 1>&6
-echo "configure:12866: checking for gss_display_status in -lgssapi_krb5" >&5
-ac_lib_var=`echo gssapi_krb5'_'gss_display_status | sed 'y%./+-%__p_%'`
+ # now see if we can find the krb5 libs in standard paths
+ # or as specified above
+ echo $ac_n "checking for krb5_mk_req_extended in -lkrb5""... $ac_c" 1>&6
+echo "configure:13136: checking for krb5_mk_req_extended in -lkrb5" >&5
+ac_lib_var=`echo krb5'_'krb5_mk_req_extended | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
-LIBS="-lgssapi_krb5 $LIBS"
+LIBS="-lkrb5 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12874 "configure"
+#line 13144 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
-char gss_display_status();
+char krb5_mk_req_extended();
int main() {
-gss_display_status()
+krb5_mk_req_extended()
; return 0; }
EOF
-if { (eval echo configure:12885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12896,26 +13166,28 @@ LIBS="$ac_save_LIBS"
fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
- LIBS="$LIBS -lgssapi_krb5";
+ LIBS="$LIBS -lkrb5";
cat >> confdefs.h <<\EOF
-#define HAVE_GSSAPI 1
+#define HAVE_KRB5 1
EOF
else
echo "$ac_t""no" 1>&6
fi
- # Heimdal checks.
- echo $ac_n "checking for gss_display_status in -lgssapi""... $ac_c" 1>&6
-echo "configure:12911: checking for gss_display_status in -lgssapi" >&5
-ac_lib_var=`echo gssapi'_'gss_display_status | sed 'y%./+-%__p_%'`
+
+ ########################################################
+ # now see if we can find the gssapi libs in standard paths
+ echo $ac_n "checking for gss_display_status in -lgssapi_krb5""... $ac_c" 1>&6
+echo "configure:13183: checking for gss_display_status in -lgssapi_krb5" >&5
+ac_lib_var=`echo gssapi_krb5'_'gss_display_status | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
-LIBS="-lgssapi $LIBS"
+LIBS="-lgssapi_krb5 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12919 "configure"
+#line 13191 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -12926,7 +13198,7 @@ int main() {
gss_display_status()
; return 0; }
EOF
-if { (eval echo configure:12930: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -12941,7 +13213,7 @@ LIBS="$ac_save_LIBS"
fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
- LIBS="$LIBS -lgssapi";
+ LIBS="$LIBS -lgssapi_krb5";
cat >> confdefs.h <<\EOF
#define HAVE_GSSAPI 1
EOF
@@ -12957,7 +13229,7 @@ fi
with_ldap_support=yes
echo $ac_n "checking whether to use LDAP""... $ac_c" 1>&6
-echo "configure:12961: checking whether to use LDAP" >&5
+echo "configure:13233: checking whether to use LDAP" >&5
# Check whether --with-ldap or --without-ldap was given.
if test "${with_ldap+set}" = set; then
@@ -12978,7 +13250,7 @@ if test x"$with_ldap_support" = x"yes"; then
# we might need the lber lib on some systems. To avoid link errors
# this test must be before the libldap test
echo $ac_n "checking for ber_scanf in -llber""... $ac_c" 1>&6
-echo "configure:12982: checking for ber_scanf in -llber" >&5
+echo "configure:13254: checking for ber_scanf in -llber" >&5
ac_lib_var=`echo lber'_'ber_scanf | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -12986,7 +13258,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-llber $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 12990 "configure"
+#line 13262 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -12997,7 +13269,7 @@ int main() {
ber_scanf()
; return 0; }
EOF
-if { (eval echo configure:13001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -13022,7 +13294,7 @@ fi
# now see if we can find the ldap libs in standard paths
if test x$have_ldap != xyes; then
echo $ac_n "checking for ldap_domain2hostlist in -lldap""... $ac_c" 1>&6
-echo "configure:13026: checking for ldap_domain2hostlist in -lldap" >&5
+echo "configure:13298: checking for ldap_domain2hostlist in -lldap" >&5
ac_lib_var=`echo ldap'_'ldap_domain2hostlist | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -13030,7 +13302,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lldap $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 13034 "configure"
+#line 13306 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -13041,7 +13313,7 @@ int main() {
ldap_domain2hostlist()
; return 0; }
EOF
-if { (eval echo configure:13045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -13072,12 +13344,12 @@ fi
for ac_func in ldap_set_rebind_proc
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13076: checking for $ac_func" >&5
+echo "configure:13348: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13081 "configure"
+#line 13353 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13100,7 +13372,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13125,13 +13397,13 @@ fi
done
echo $ac_n "checking whether ldap_set_rebind_proc takes 3 arguments""... $ac_c" 1>&6
-echo "configure:13129: checking whether ldap_set_rebind_proc takes 3 arguments" >&5
+echo "configure:13401: checking whether ldap_set_rebind_proc takes 3 arguments" >&5
if eval "test \"`echo '$''{'pam_ldap_cv_ldap_set_rebind_proc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13135 "configure"
+#line 13407 "configure"
#include "confdefs.h"
#include <lber.h>
@@ -13140,7 +13412,7 @@ int main() {
ldap_set_rebind_proc(0, 0, 0);
; return 0; }
EOF
-if { (eval echo configure:13144: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13416: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
pam_ldap_cv_ldap_set_rebind_proc=3
else
@@ -13204,7 +13476,7 @@ fi
# Extract the first word of "mysql_config", so it can be a program name with args.
set dummy mysql_config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:13208: checking for $ac_word" >&5
+echo "configure:13480: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MYSQL_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13239,7 +13511,7 @@ fi
min_mysql_version=0.11.0
echo $ac_n "checking for MYSQL - version >= $min_mysql_version""... $ac_c" 1>&6
-echo "configure:13243: checking for MYSQL - version >= $min_mysql_version" >&5
+echo "configure:13515: checking for MYSQL - version >= $min_mysql_version" >&5
no_mysql=""
if test "$MYSQL_CONFIG" = "no" ; then
no_mysql=yes
@@ -13263,7 +13535,7 @@ echo "configure:13243: checking for MYSQL - version >= $min_mysql_version" >&5
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <<EOF
-#line 13267 "configure"
+#line 13539 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -13324,7 +13596,7 @@ int major, minor, micro;
EOF
-if { (eval echo configure:13328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -13342,7 +13614,7 @@ fi
fi
if test "x$no_mysql" = x ; then
echo "$ac_t""yes" 1>&6
- MODULE_MYSQL=bin/mysql.so
+ MODULE_MYSQL=bin/pdb_mysql.so
else
echo "$ac_t""no" 1>&6
if test "$MYSQL_CONFIG" = "no" ; then
@@ -13358,7 +13630,7 @@ fi
CFLAGS="$CFLAGS $MYSQL_CFLAGS"
LIBS="$LIBS $MYSQL_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 13362 "configure"
+#line 13634 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -13373,7 +13645,7 @@ int main() {
return 0;
; return 0; }
EOF
-if { (eval echo configure:13377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding MYSQL or finding the wrong"
@@ -13453,7 +13725,7 @@ fi
# Extract the first word of "xml2-config", so it can be a program name with args.
set dummy xml2-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:13457: checking for $ac_word" >&5
+echo "configure:13729: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XML2_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13488,7 +13760,7 @@ fi
min_xml_version=2.0.0
echo $ac_n "checking for libxml - version >= $min_xml_version""... $ac_c" 1>&6
-echo "configure:13492: checking for libxml - version >= $min_xml_version" >&5
+echo "configure:13764: checking for libxml - version >= $min_xml_version" >&5
no_xml=""
if test "$XML2_CONFIG" = "no" ; then
no_xml=yes
@@ -13511,7 +13783,7 @@ echo "configure:13492: checking for libxml - version >= $min_xml_version" >&5
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <<EOF
-#line 13515 "configure"
+#line 13787 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -13590,7 +13862,7 @@ main()
}
EOF
-if { (eval echo configure:13594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:13866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -13609,7 +13881,7 @@ fi
if test "x$no_xml" = x ; then
echo "$ac_t""yes (version $xml_config_major_version.$xml_config_minor_version.$xml_config_micro_version)" 1>&6
- MODULE_XML=bin/xml.so
+ MODULE_XML=bin/pdb_xml.so
else
echo "$ac_t""no" 1>&6
if test "$XML2_CONFIG" = "no" ; then
@@ -13625,7 +13897,7 @@ fi
CFLAGS="$CFLAGS $XML_CFLAGS"
LIBS="$LIBS $XML_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 13629 "configure"
+#line 13901 "configure"
#include "confdefs.h"
#include <libxml/xmlversion.h>
@@ -13635,7 +13907,7 @@ int main() {
LIBXML_TEST_VERSION; return 0;
; return 0; }
EOF
-if { (eval echo configure:13639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding LIBXML or finding the wrong"
@@ -13675,7 +13947,7 @@ CFLAGS="$CFLAGS $XML_CFLAGS"
#################################################
# check for automount support
echo $ac_n "checking whether to use automount""... $ac_c" 1>&6
-echo "configure:13679: checking whether to use automount" >&5
+echo "configure:13951: checking whether to use automount" >&5
# Check whether --with-automount or --without-automount was given.
if test "${with_automount+set}" = set; then
withval="$with_automount"
@@ -13700,7 +13972,7 @@ fi
#################################################
# check for smbmount support
echo $ac_n "checking whether to use smbmount""... $ac_c" 1>&6
-echo "configure:13704: checking whether to use smbmount" >&5
+echo "configure:13976: checking whether to use smbmount" >&5
# Check whether --with-smbmount or --without-smbmount was given.
if test "${with_smbmount+set}" = set; then
withval="$with_smbmount"
@@ -13735,7 +14007,7 @@ fi
# check for a PAM clear-text auth, accounts, password and session support
with_pam_for_crypt=no
echo $ac_n "checking whether to use PAM""... $ac_c" 1>&6
-echo "configure:13739: checking whether to use PAM" >&5
+echo "configure:14011: checking whether to use PAM" >&5
# Check whether --with-pam or --without-pam was given.
if test "${with_pam+set}" = set; then
withval="$with_pam"
@@ -13761,7 +14033,7 @@ fi
# we can't build a pam module if we don't have pam.
echo $ac_n "checking for pam_get_data in -lpam""... $ac_c" 1>&6
-echo "configure:13765: checking for pam_get_data in -lpam" >&5
+echo "configure:14037: checking for pam_get_data in -lpam" >&5
ac_lib_var=`echo pam'_'pam_get_data | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -13769,7 +14041,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lpam $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 13773 "configure"
+#line 14045 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -13780,7 +14052,7 @@ int main() {
pam_get_data()
; return 0; }
EOF
-if { (eval echo configure:13784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -13807,7 +14079,7 @@ fi
#################################################
# check for pam_smbpass support
echo $ac_n "checking whether to use pam_smbpass""... $ac_c" 1>&6
-echo "configure:13811: checking whether to use pam_smbpass" >&5
+echo "configure:14083: checking whether to use pam_smbpass" >&5
# Check whether --with-pam_smbpass or --without-pam_smbpass was given.
if test "${with_pam_smbpass+set}" = set; then
withval="$with_pam_smbpass"
@@ -13843,12 +14115,12 @@ if test x"$with_pam_for_crypt" = x"no"; then
for ac_func in crypt
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13847: checking for $ac_func" >&5
+echo "configure:14119: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 13852 "configure"
+#line 14124 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -13871,7 +14143,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:13875: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -13897,7 +14169,7 @@ done
if test x"$ac_cv_func_crypt" = x"no"; then
echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:13901: checking for crypt in -lcrypt" >&5
+echo "configure:14173: checking for crypt in -lcrypt" >&5
ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -13905,7 +14177,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lcrypt $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 13909 "configure"
+#line 14181 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -13916,7 +14188,7 @@ int main() {
crypt()
; return 0; }
EOF
-if { (eval echo configure:13920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -13951,7 +14223,7 @@ fi
##
if test $with_pam_for_crypt = no; then
echo $ac_n "checking for a crypt that needs truncated salt""... $ac_c" 1>&6
-echo "configure:13955: checking for a crypt that needs truncated salt" >&5
+echo "configure:14227: checking for a crypt that needs truncated salt" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_TRUNCATED_SALT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -13962,11 +14234,11 @@ if test "$cross_compiling" = yes; then
samba_cv_HAVE_TRUNCATED_SALT=cross
else
cat > conftest.$ac_ext <<EOF
-#line 13966 "configure"
+#line 14238 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/crypttest.c"
EOF
-if { (eval echo configure:13970: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
samba_cv_HAVE_TRUNCATED_SALT=no
else
@@ -13990,32 +14262,6 @@ EOF
fi
fi
-# New experimental SAM system
-
-echo $ac_n "checking whether to build the new (experimental) SAM database""... $ac_c" 1>&6
-echo "configure:13997: checking whether to build the new (experimental) SAM database" >&5
-# Check whether --with-sam or --without-sam was given.
-if test "${with_sam+set}" = set; then
- withval="$with_sam"
- case "$withval" in
- yes)
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
-#define WITH_SAM 1
-EOF
-
- ;;
- *)
- echo "$ac_t""no" 1>&6
- ;;
- esac
-else
- echo "$ac_t""no" 1>&6
-
-fi
-
-
-
########################################################################################
##
## TESTS FOR SAM BACKENDS. KEEP THESE GROUPED TOGETHER
@@ -14025,7 +14271,7 @@ fi
#################################################
# check for a LDAP password database configuration backwards compatibility
echo $ac_n "checking whether to use LDAP SAM 2.2 compatible configuration""... $ac_c" 1>&6
-echo "configure:14029: checking whether to use LDAP SAM 2.2 compatible configuration" >&5
+echo "configure:14275: checking whether to use LDAP SAM 2.2 compatible configuration" >&5
# Check whether --with-ldapsam or --without-ldapsam was given.
if test "${with_ldapsam+set}" = set; then
withval="$with_ldapsam"
@@ -14050,7 +14296,7 @@ fi
#################################################
# check for a TDB password database
echo $ac_n "checking whether to use TDB SAM database""... $ac_c" 1>&6
-echo "configure:14054: checking whether to use TDB SAM database" >&5
+echo "configure:14300: checking whether to use TDB SAM database" >&5
# Check whether --with-tdbsam or --without-tdbsam was given.
if test "${with_tdbsam+set}" = set; then
withval="$with_tdbsam"
@@ -14075,7 +14321,7 @@ fi
#################################################
# check for a NISPLUS password database
echo $ac_n "checking whether to use NISPLUS SAM database""... $ac_c" 1>&6
-echo "configure:14079: checking whether to use NISPLUS SAM database" >&5
+echo "configure:14325: checking whether to use NISPLUS SAM database" >&5
# Check whether --with-nisplussam or --without-nisplussam was given.
if test "${with_nisplussam+set}" = set; then
withval="$with_nisplussam"
@@ -14106,7 +14352,7 @@ fi
#################################################
# check for a NISPLUS_HOME support
echo $ac_n "checking whether to use NISPLUS_HOME""... $ac_c" 1>&6
-echo "configure:14110: checking whether to use NISPLUS_HOME" >&5
+echo "configure:14356: checking whether to use NISPLUS_HOME" >&5
# Check whether --with-nisplus-home or --without-nisplus-home was given.
if test "${with_nisplus_home+set}" = set; then
withval="$with_nisplus_home"
@@ -14131,7 +14377,7 @@ fi
#################################################
# check for syslog logging
echo $ac_n "checking whether to use syslog logging""... $ac_c" 1>&6
-echo "configure:14135: checking whether to use syslog logging" >&5
+echo "configure:14381: checking whether to use syslog logging" >&5
# Check whether --with-syslog or --without-syslog was given.
if test "${with_syslog+set}" = set; then
withval="$with_syslog"
@@ -14156,7 +14402,7 @@ fi
#################################################
# check for a shared memory profiling support
echo $ac_n "checking whether to use profiling""... $ac_c" 1>&6
-echo "configure:14160: checking whether to use profiling" >&5
+echo "configure:14406: checking whether to use profiling" >&5
# Check whether --with-profiling-data or --without-profiling-data was given.
if test "${with_profiling_data+set}" = set; then
withval="$with_profiling_data"
@@ -14184,7 +14430,7 @@ fi
QUOTAOBJS=smbd/noquotas.o
echo $ac_n "checking whether to support disk-quotas""... $ac_c" 1>&6
-echo "configure:14188: checking whether to support disk-quotas" >&5
+echo "configure:14434: checking whether to support disk-quotas" >&5
# Check whether --with-quotas or --without-quotas was given.
if test "${with_quotas+set}" = set; then
withval="$with_quotas"
@@ -14195,13 +14441,13 @@ if test "${with_quotas+set}" = set; then
*linux*)
# Check for kernel 2.4.x quota braindamage...
echo $ac_n "checking for linux 2.4.x quota braindamage..""... $ac_c" 1>&6
-echo "configure:14199: checking for linux 2.4.x quota braindamage.." >&5
+echo "configure:14445: checking for linux 2.4.x quota braindamage.." >&5
if eval "test \"`echo '$''{'samba_cv_linux_2_4_quota_braindamage'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14205 "configure"
+#line 14451 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
@@ -14213,7 +14459,7 @@ int main() {
struct mem_dqblk D;
; return 0; }
EOF
-if { (eval echo configure:14217: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14463: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_linux_2_4_quota_braindamage=yes
else
@@ -14262,7 +14508,7 @@ fi
# check for experimental utmp accounting
echo $ac_n "checking whether to support utmp accounting""... $ac_c" 1>&6
-echo "configure:14266: checking whether to support utmp accounting" >&5
+echo "configure:14512: checking whether to support utmp accounting" >&5
# Check whether --with-utmp or --without-utmp was given.
if test "${with_utmp+set}" = set; then
withval="$with_utmp"
@@ -14287,7 +14533,7 @@ fi
#################################################
# choose native language(s) of man pages
echo $ac_n "checking chosen man pages' language(s)""... $ac_c" 1>&6
-echo "configure:14291: checking chosen man pages' language(s)" >&5
+echo "configure:14537: checking chosen man pages' language(s)" >&5
# Check whether --with-manpages-langs or --without-manpages-langs was given.
if test "${with_manpages_langs+set}" = set; then
withval="$with_manpages_langs"
@@ -14318,7 +14564,7 @@ fi
LIBSMBCLIENT_SHARED=
LIBSMBCLIENT=
echo $ac_n "checking whether to build the libsmbclient shared library""... $ac_c" 1>&6
-echo "configure:14322: checking whether to build the libsmbclient shared library" >&5
+echo "configure:14568: checking whether to build the libsmbclient shared library" >&5
# Check whether --with-libsmbclient or --without-libsmbclient was given.
if test "${with_libsmbclient+set}" = set; then
withval="$with_libsmbclient"
@@ -14346,14 +14592,14 @@ fi
#################################################
# these tests are taken from the GNU fileutils package
echo "checking how to get filesystem space usage" 1>&6
-echo "configure:14350: checking how to get filesystem space usage" >&5
+echo "configure:14596: checking how to get filesystem space usage" >&5
space=no
# Test for statvfs64.
if test $space = no; then
# SVR4
echo $ac_n "checking statvfs64 function (SVR4)""... $ac_c" 1>&6
-echo "configure:14357: checking statvfs64 function (SVR4)" >&5
+echo "configure:14603: checking statvfs64 function (SVR4)" >&5
if eval "test \"`echo '$''{'fu_cv_sys_stat_statvfs64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14361,7 +14607,7 @@ else
fu_cv_sys_stat_statvfs64=cross
else
cat > conftest.$ac_ext <<EOF
-#line 14365 "configure"
+#line 14611 "configure"
#include "confdefs.h"
#if defined(HAVE_UNISTD_H)
@@ -14375,7 +14621,7 @@ else
exit (statvfs64 (".", &fsd));
}
EOF
-if { (eval echo configure:14379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
fu_cv_sys_stat_statvfs64=yes
else
@@ -14408,12 +14654,12 @@ fi
if test $space = no; then
# SVR4
echo $ac_n "checking statvfs function (SVR4)""... $ac_c" 1>&6
-echo "configure:14412: checking statvfs function (SVR4)" >&5
+echo "configure:14658: checking statvfs function (SVR4)" >&5
if eval "test \"`echo '$''{'fu_cv_sys_stat_statvfs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14417 "configure"
+#line 14663 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/statvfs.h>
@@ -14421,7 +14667,7 @@ int main() {
struct statvfs fsd; statvfs (0, &fsd);
; return 0; }
EOF
-if { (eval echo configure:14425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:14671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
fu_cv_sys_stat_statvfs=yes
else
@@ -14446,7 +14692,7 @@ fi
if test $space = no; then
# DEC Alpha running OSF/1
echo $ac_n "checking for 3-argument statfs function (DEC OSF/1)""... $ac_c" 1>&6
-echo "configure:14450: checking for 3-argument statfs function (DEC OSF/1)" >&5
+echo "configure:14696: checking for 3-argument statfs function (DEC OSF/1)" >&5
if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs3_osf1'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14454,7 +14700,7 @@ else
fu_cv_sys_stat_statfs3_osf1=no
else
cat > conftest.$ac_ext <<EOF
-#line 14458 "configure"
+#line 14704 "configure"
#include "confdefs.h"
#include <sys/param.h>
@@ -14467,7 +14713,7 @@ else
exit (statfs (".", &fsd, sizeof (struct statfs)));
}
EOF
-if { (eval echo configure:14471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14717: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
fu_cv_sys_stat_statfs3_osf1=yes
else
@@ -14494,7 +14740,7 @@ fi
if test $space = no; then
# AIX
echo $ac_n "checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)""... $ac_c" 1>&6
-echo "configure:14498: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5
+echo "configure:14744: checking for two-argument statfs with statfs.bsize member (AIX, 4.3BSD)" >&5
if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs2_bsize'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14502,7 +14748,7 @@ else
fu_cv_sys_stat_statfs2_bsize=no
else
cat > conftest.$ac_ext <<EOF
-#line 14506 "configure"
+#line 14752 "configure"
#include "confdefs.h"
#ifdef HAVE_SYS_PARAM_H
@@ -14521,7 +14767,7 @@ else
exit (statfs (".", &fsd));
}
EOF
-if { (eval echo configure:14525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
fu_cv_sys_stat_statfs2_bsize=yes
else
@@ -14548,7 +14794,7 @@ fi
if test $space = no; then
# SVR3
echo $ac_n "checking for four-argument statfs (AIX-3.2.5, SVR3)""... $ac_c" 1>&6
-echo "configure:14552: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5
+echo "configure:14798: checking for four-argument statfs (AIX-3.2.5, SVR3)" >&5
if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs4'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14556,7 +14802,7 @@ else
fu_cv_sys_stat_statfs4=no
else
cat > conftest.$ac_ext <<EOF
-#line 14560 "configure"
+#line 14806 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/statfs.h>
@@ -14566,7 +14812,7 @@ else
exit (statfs (".", &fsd, sizeof fsd, 0));
}
EOF
-if { (eval echo configure:14570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
fu_cv_sys_stat_statfs4=yes
else
@@ -14593,7 +14839,7 @@ fi
if test $space = no; then
# 4.4BSD and NetBSD
echo $ac_n "checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)""... $ac_c" 1>&6
-echo "configure:14597: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5
+echo "configure:14843: checking for two-argument statfs with statfs.fsize member (4.4BSD and NetBSD)" >&5
if eval "test \"`echo '$''{'fu_cv_sys_stat_statfs2_fsize'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14601,7 +14847,7 @@ else
fu_cv_sys_stat_statfs2_fsize=no
else
cat > conftest.$ac_ext <<EOF
-#line 14605 "configure"
+#line 14851 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef HAVE_SYS_PARAM_H
@@ -14617,7 +14863,7 @@ else
exit (statfs (".", &fsd));
}
EOF
-if { (eval echo configure:14621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
fu_cv_sys_stat_statfs2_fsize=yes
else
@@ -14644,7 +14890,7 @@ fi
if test $space = no; then
# Ultrix
echo $ac_n "checking for two-argument statfs with struct fs_data (Ultrix)""... $ac_c" 1>&6
-echo "configure:14648: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
+echo "configure:14894: checking for two-argument statfs with struct fs_data (Ultrix)" >&5
if eval "test \"`echo '$''{'fu_cv_sys_stat_fs_data'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -14652,7 +14898,7 @@ else
fu_cv_sys_stat_fs_data=no
else
cat > conftest.$ac_ext <<EOF
-#line 14656 "configure"
+#line 14902 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef HAVE_SYS_PARAM_H
@@ -14672,7 +14918,7 @@ else
exit (statfs (".", &fsd) != 1);
}
EOF
-if { (eval echo configure:14676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:14922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
fu_cv_sys_stat_fs_data=yes
else
@@ -14705,9 +14951,9 @@ fi
# file support.
#
echo $ac_n "checking if large file support can be enabled""... $ac_c" 1>&6
-echo "configure:14709: checking if large file support can be enabled" >&5
+echo "configure:14955: checking if large file support can be enabled" >&5
cat > conftest.$ac_ext <<EOF
-#line 14711 "configure"
+#line 14957 "configure"
#include "confdefs.h"
#if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
@@ -14720,7 +14966,7 @@ int main() {
int i
; return 0; }
EOF
-if { (eval echo configure:14724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:14970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes
else
@@ -14785,7 +15031,7 @@ fi
# check for ACL support
echo $ac_n "checking whether to support ACLs""... $ac_c" 1>&6
-echo "configure:14789: checking whether to support ACLs" >&5
+echo "configure:15035: checking whether to support ACLs" >&5
# Check whether --with-acl-support or --without-acl-support was given.
if test "${with_acl_support+set}" = set; then
withval="$with_acl_support"
@@ -14838,7 +15084,7 @@ EOF
;;
*)
echo $ac_n "checking for acl_get_file in -lacl""... $ac_c" 1>&6
-echo "configure:14842: checking for acl_get_file in -lacl" >&5
+echo "configure:15088: checking for acl_get_file in -lacl" >&5
ac_lib_var=`echo acl'_'acl_get_file | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -14846,7 +15092,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lacl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 14850 "configure"
+#line 15096 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -14857,7 +15103,7 @@ int main() {
acl_get_file()
; return 0; }
EOF
-if { (eval echo configure:14861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -14885,13 +15131,13 @@ else
fi
echo $ac_n "checking for ACL support""... $ac_c" 1>&6
-echo "configure:14889: checking for ACL support" >&5
+echo "configure:15135: checking for ACL support" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_POSIX_ACLS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14895 "configure"
+#line 15141 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/acl.h>
@@ -14899,7 +15145,7 @@ int main() {
acl_t acl; int entry_id; acl_entry_t *entry_p; return acl_get_entry( acl, entry_id, entry_p);
; return 0; }
EOF
-if { (eval echo configure:14903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
samba_cv_HAVE_POSIX_ACLS=yes
else
@@ -14919,13 +15165,13 @@ echo "$ac_t""$samba_cv_HAVE_POSIX_ACLS" 1>&6
EOF
echo $ac_n "checking for acl_get_perm_np""... $ac_c" 1>&6
-echo "configure:14923: checking for acl_get_perm_np" >&5
+echo "configure:15169: checking for acl_get_perm_np" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_ACL_GET_PERM_NP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 14929 "configure"
+#line 15175 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/acl.h>
@@ -14933,7 +15179,7 @@ int main() {
acl_permset_t permset_d; acl_perm_t perm; return acl_get_perm_np( permset_d, perm);
; return 0; }
EOF
-if { (eval echo configure:14937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
samba_cv_HAVE_ACL_GET_PERM_NP=yes
else
@@ -14979,7 +15225,7 @@ fi
with_sendfile_support=yes
echo $ac_n "checking whether to check to support sendfile""... $ac_c" 1>&6
-echo "configure:14983: checking whether to check to support sendfile" >&5
+echo "configure:15229: checking whether to check to support sendfile" >&5
# Check whether --with-sendfile-support or --without-sendfile-support was given.
if test "${with_sendfile_support+set}" = set; then
withval="$with_sendfile_support"
@@ -14991,13 +15237,13 @@ if test "${with_sendfile_support+set}" = set; then
case "$host_os" in
*linux*)
echo $ac_n "checking for linux sendfile64 support""... $ac_c" 1>&6
-echo "configure:14995: checking for linux sendfile64 support" >&5
+echo "configure:15241: checking for linux sendfile64 support" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILE64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15001 "configure"
+#line 15247 "configure"
#include "confdefs.h"
#include <sys/sendfile.h>
int main() {
@@ -15009,7 +15255,7 @@ ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
; return 0; }
EOF
-if { (eval echo configure:15013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15259: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
samba_cv_HAVE_SENDFILE64=yes
else
@@ -15024,13 +15270,13 @@ fi
echo "$ac_t""$samba_cv_HAVE_SENDFILE64" 1>&6
echo $ac_n "checking for linux sendfile support""... $ac_c" 1>&6
-echo "configure:15028: checking for linux sendfile support" >&5
+echo "configure:15274: checking for linux sendfile support" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15034 "configure"
+#line 15280 "configure"
#include "confdefs.h"
#include <sys/sendfile.h>
int main() {
@@ -15042,7 +15288,7 @@ ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
; return 0; }
EOF
-if { (eval echo configure:15046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
samba_cv_HAVE_SENDFILE=yes
else
@@ -15058,13 +15304,13 @@ echo "$ac_t""$samba_cv_HAVE_SENDFILE" 1>&6
# Try and cope with broken Linux sendfile....
echo $ac_n "checking for broken linux sendfile support""... $ac_c" 1>&6
-echo "configure:15062: checking for broken linux sendfile support" >&5
+echo "configure:15308: checking for broken linux sendfile support" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_BROKEN_LINUX_SENDFILE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15068 "configure"
+#line 15314 "configure"
#include "confdefs.h"
\
#if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
@@ -15080,7 +15326,7 @@ ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
; return 0; }
EOF
-if { (eval echo configure:15084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes
else
@@ -15136,13 +15382,13 @@ EOF
;;
*freebsd*)
echo $ac_n "checking for freebsd sendfile support""... $ac_c" 1>&6
-echo "configure:15140: checking for freebsd sendfile support" >&5
+echo "configure:15386: checking for freebsd sendfile support" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15146 "configure"
+#line 15392 "configure"
#include "confdefs.h"
\
#include <sys/types.h>
@@ -15165,7 +15411,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:15169: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
samba_cv_HAVE_SENDFILE=yes
else
@@ -15199,13 +15445,13 @@ EOF
*hpux*)
echo $ac_n "checking for hpux sendfile64 support""... $ac_c" 1>&6
-echo "configure:15203: checking for hpux sendfile64 support" >&5
+echo "configure:15449: checking for hpux sendfile64 support" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILE64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15209 "configure"
+#line 15455 "configure"
#include "confdefs.h"
\
#include <sys/socket.h>
@@ -15225,7 +15471,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:15229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
samba_cv_HAVE_SENDFILE64=yes
else
@@ -15256,13 +15502,13 @@ EOF
fi
echo $ac_n "checking for hpux sendfile support""... $ac_c" 1>&6
-echo "configure:15260: checking for hpux sendfile support" >&5
+echo "configure:15506: checking for hpux sendfile support" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15266 "configure"
+#line 15512 "configure"
#include "confdefs.h"
\
#include <sys/socket.h>
@@ -15282,7 +15528,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:15286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
samba_cv_HAVE_SENDFILE=yes
else
@@ -15315,7 +15561,7 @@ EOF
*solaris*)
echo $ac_n "checking for sendfilev in -lsendfile""... $ac_c" 1>&6
-echo "configure:15319: checking for sendfilev in -lsendfile" >&5
+echo "configure:15565: checking for sendfilev in -lsendfile" >&5
ac_lib_var=`echo sendfile'_'sendfilev | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -15323,7 +15569,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsendfile $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 15327 "configure"
+#line 15573 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -15334,7 +15580,7 @@ int main() {
sendfilev()
; return 0; }
EOF
-if { (eval echo configure:15338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -15362,13 +15608,13 @@ else
fi
echo $ac_n "checking for solaris sendfilev64 support""... $ac_c" 1>&6
-echo "configure:15366: checking for solaris sendfilev64 support" >&5
+echo "configure:15612: checking for solaris sendfilev64 support" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILEV64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15372 "configure"
+#line 15618 "configure"
#include "confdefs.h"
\
#include <sys/sendfile.h>
@@ -15395,7 +15641,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:15399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
samba_cv_HAVE_SENDFILEV64=yes
else
@@ -15427,13 +15673,13 @@ EOF
fi
echo $ac_n "checking for solaris sendfilev support""... $ac_c" 1>&6
-echo "configure:15431: checking for solaris sendfilev support" >&5
+echo "configure:15677: checking for solaris sendfilev support" >&5
if eval "test \"`echo '$''{'samba_cv_HAVE_SENDFILEV'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15437 "configure"
+#line 15683 "configure"
#include "confdefs.h"
\
#include <sys/sendfile.h>
@@ -15460,7 +15706,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:15464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
samba_cv_HAVE_SENDFILEV=yes
else
@@ -15512,7 +15758,7 @@ fi
# build and install client programs, sbin programs and shared libraries
echo $ac_n "checking whether to build winbind""... $ac_c" 1>&6
-echo "configure:15516: checking whether to build winbind" >&5
+echo "configure:15762: checking whether to build winbind" >&5
# Initially, the value of $host_os decides whether winbind is supported
@@ -15603,20 +15849,20 @@ fi
# [#include <pwd.h>])
echo $ac_n "checking whether struct passwd has pw_comment""... $ac_c" 1>&6
-echo "configure:15607: checking whether struct passwd has pw_comment" >&5
+echo "configure:15853: checking whether struct passwd has pw_comment" >&5
if eval "test \"`echo '$''{'samba_cv_passwd_pw_comment'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15613 "configure"
+#line 15859 "configure"
#include "confdefs.h"
#include <pwd.h>
int main() {
struct passwd p; p.pw_comment;
; return 0; }
EOF
-if { (eval echo configure:15620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15866: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_passwd_pw_comment=yes
else
@@ -15641,20 +15887,20 @@ fi
# [#include <pwd.h>])
echo $ac_n "checking whether struct passwd has pw_age""... $ac_c" 1>&6
-echo "configure:15645: checking whether struct passwd has pw_age" >&5
+echo "configure:15891: checking whether struct passwd has pw_age" >&5
if eval "test \"`echo '$''{'samba_cv_passwd_pw_age'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 15651 "configure"
+#line 15897 "configure"
#include "confdefs.h"
#include <pwd.h>
int main() {
struct passwd p; p.pw_age;
; return 0; }
EOF
-if { (eval echo configure:15658: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:15904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
samba_cv_passwd_pw_age=yes
else
@@ -15693,7 +15939,7 @@ fi
if test x"$INCLUDED_POPT" != x"yes"; then
echo $ac_n "checking for poptGetContext in -lpopt""... $ac_c" 1>&6
-echo "configure:15697: checking for poptGetContext in -lpopt" >&5
+echo "configure:15943: checking for poptGetContext in -lpopt" >&5
ac_lib_var=`echo popt'_'poptGetContext | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -15701,7 +15947,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lpopt $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 15705 "configure"
+#line 15951 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -15712,7 +15958,7 @@ int main() {
poptGetContext()
; return 0; }
EOF
-if { (eval echo configure:15716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:15962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -15736,7 +15982,7 @@ fi
fi
echo $ac_n "checking whether to use included popt""... $ac_c" 1>&6
-echo "configure:15740: checking whether to use included popt" >&5
+echo "configure:15986: checking whether to use included popt" >&5
if test x"$INCLUDED_POPT" = x"yes"; then
echo "$ac_t""yes" 1>&6
BUILD_POPT='$(POPT_OBJS)'
@@ -15790,16 +16036,16 @@ fi
# final configure stuff
echo $ac_n "checking configure summary""... $ac_c" 1>&6
-echo "configure:15794: checking configure summary" >&5
+echo "configure:16040: checking configure summary" >&5
if test "$cross_compiling" = yes; then
echo "configure: warning: cannot run when cross-compiling" 1>&2
else
cat > conftest.$ac_ext <<EOF
-#line 15799 "configure"
+#line 16045 "configure"
#include "confdefs.h"
#include "${srcdir-.}/tests/summary.c"
EOF
-if { (eval echo configure:15803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:16049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
echo "$ac_t""yes" 1>&6
else
@@ -15971,22 +16217,6 @@ s%@SMBWRAPPER@%$SMBWRAPPER%g
s%@EXTRA_BIN_PROGS@%$EXTRA_BIN_PROGS%g
s%@EXTRA_SBIN_PROGS@%$EXTRA_SBIN_PROGS%g
s%@EXTRA_ALL_TARGETS@%$EXTRA_ALL_TARGETS%g
-s%@LSA_DYNAMIC_YES@%$LSA_DYNAMIC_YES%g
-s%@LSA_DYNAMIC_NO@%$LSA_DYNAMIC_NO%g
-s%@NETLOG_DYNAMIC_YES@%$NETLOG_DYNAMIC_YES%g
-s%@NETLOG_DYNAMIC_NO@%$NETLOG_DYNAMIC_NO%g
-s%@SAMR_DYNAMIC_YES@%$SAMR_DYNAMIC_YES%g
-s%@SAMR_DYNAMIC_NO@%$SAMR_DYNAMIC_NO%g
-s%@SVC_DYNAMIC_YES@%$SVC_DYNAMIC_YES%g
-s%@SVC_DYNAMIC_NO@%$SVC_DYNAMIC_NO%g
-s%@WKS_DYNAMIC_YES@%$WKS_DYNAMIC_YES%g
-s%@WKS_DYNAMIC_NO@%$WKS_DYNAMIC_NO%g
-s%@REG_DYNAMIC_YES@%$REG_DYNAMIC_YES%g
-s%@REG_DYNAMIC_NO@%$REG_DYNAMIC_NO%g
-s%@SPOOLSS_DYNAMIC_YES@%$SPOOLSS_DYNAMIC_YES%g
-s%@SPOOLSS_DYNAMIC_NO@%$SPOOLSS_DYNAMIC_NO%g
-s%@DFS_DYNAMIC_YES@%$DFS_DYNAMIC_YES%g
-s%@DFS_DYNAMIC_NO@%$DFS_DYNAMIC_NO%g
s%@CC@%$CC%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
diff --git a/source3/configure.in b/source3/configure.in
index 4590e5313e..94bd815add 100644
--- a/source3/configure.in
+++ b/source3/configure.in
@@ -149,41 +149,6 @@ AC_SUBST(SMBWRAPPER)
AC_SUBST(EXTRA_BIN_PROGS)
AC_SUBST(EXTRA_SBIN_PROGS)
AC_SUBST(EXTRA_ALL_TARGETS)
-dnl For the DYNAMIC RPC stuff
-dnl The complicated _YES and _NO stuff allows us to avoid a dependency
-dnl on GNU Make.
-AC_SUBST(LSA_DYNAMIC_YES)
-AC_SUBST(LSA_DYNAMIC_NO)
-LSA_DYNAMIC_YES="#"
-LSA_DYNAMIC_NO=
-AC_SUBST(NETLOG_DYNAMIC_YES)
-AC_SUBST(NETLOG_DYNAMIC_NO)
-NETLOG_DYNAMIC_YES="#"
-NETLOG_DYNAMIC_NO=
-AC_SUBST(SAMR_DYNAMIC_YES)
-AC_SUBST(SAMR_DYNAMIC_NO)
-SAMR_DYNAMIC_YES="#"
-SAMR_DYNAMIC_NO=
-AC_SUBST(SVC_DYNAMIC_YES)
-AC_SUBST(SVC_DYNAMIC_NO)
-SVC_DYNAMIC_YES="#"
-SVC_DYNAMIC_NO=
-AC_SUBST(WKS_DYNAMIC_YES)
-AC_SUBST(WKS_DYNAMIC_NO)
-WKS_DYNAMIC_YES="#"
-WKS_DYNAMIC_NO=
-AC_SUBST(REG_DYNAMIC_YES)
-AC_SUBST(REG_DYNAMIC_NO)
-REG_DYNAMIC_YES="#"
-REG_DYNAMIC_NO=
-AC_SUBST(SPOOLSS_DYNAMIC_YES)
-AC_SUBST(SPOOLSS_DYNAMIC_NO)
-SPOOLSS_DYNAMIC_YES="#"
-SPOOLSS_DYNAMIC_NO=
-AC_SUBST(DFS_DYNAMIC_YES)
-AC_SUBST(DFS_DYNAMIC_NO)
-DFS_DYNAMIC_YES="#"
-DFS_DYNAMIC_NO=
# compile with optimization and without debugging by default
CFLAGS="-O ${CFLAGS}"
@@ -214,60 +179,6 @@ then
LIBS="$LIBS -ldmalloc"
fi
-AC_ARG_ENABLE(dynrpc, [ --enable-dynrpc Enable dynamic RPC modules [default=no]])
-
-if test x$enable_dynrpc = xyes
-then
- enable_dynrpc=lsa,samr,reg,wks,netlog,dfs
-fi
-
-if test x$enable_dynrpc != xno
-then
- for i in `echo $enable_dynrpc | sed -e's/,/ /g'`
- do case $i in lsa)
- LSA_DYNAMIC_YES=
- LSA_DYNAMIC_NO="#"
- AC_DEFINE(RPC_LSA_DYNAMIC, 1,
- [Define to make the LSA pipe dynamic])
- ;; samr)
- SAMR_DYNAMIC_YES=
- SAMR_DYNAMIC_NO="#"
- AC_DEFINE(RPC_SAMR_DYNAMIC, 1,
- [Define to make the SAMR pipe dynamic])
- ;; svc)
- SVC_DYNAMIC_YES=
- SVC_DYNAMIC_NO="#"
- AC_DEFINE(RPC_SVC_DYNAMIC, 1,
- [Define to make the SRVSVC pipe dynamic])
- ;; wks)
- WKS_DYNAMIC_YES=
- WKS_DYNAMIC_NO="#"
- AC_DEFINE(RPC_WKS_DYNAMIC, 1,
- [Define to make the WKSSVC pipe dynamic])
- ;; netlog)
- NETLOG_DYNAMIC_YES=
- NETLOG_DYNAMIC_NO="#"
- AC_DEFINE(RPC_NETLOG_DYNAMIC, 1,
- [Define to make the NETLOGON pipe dynamic])
- ;; reg)
- REG_DYNAMIC_YES=
- REG_DYNAMIC_NO="#"
- AC_DEFINE(RPC_REG_DYNAMIC, 1,
- [Define to make the WINREG pipe dynamic])
- ;; spoolss)
- SPOOLSS_DYNAMIC_YES=
- SPOOLSS_DYNAMIC_NO="#"
- AC_DEFINE(RPC_SPOOLSS_DYNAMIC, 1,
- [Define to make the SPOOLSS pipe dynamic])
- ;; dfs)
- DFS_DYNAMIC_YES=
- DFS_DYNAMIC_NO="#"
- AC_DEFINE(RPC_DFS_DYNAMIC, 1,
- [Define to make the NETDFS pipe dynamic])
- ;; esac
- done
-fi
-
dnl Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
@@ -844,7 +755,7 @@ AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
AC_CHECK_FUNCS(getdents _getdents __getdents _lseek __lseek _read __read)
-AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
+AC_CHECK_FUNCS(_write __write _fork __fork)
AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
@@ -1115,6 +1026,7 @@ if test $ac_cv_shlib_works = no; then
fi
fi
+
# this updates our target list if we can build shared libs
if test $BLDSHARED = true; then
LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
@@ -2089,6 +2001,7 @@ if test x$FOUND_KRB5 = x"no"; then
# see if this box has the SuSE location for the heimdal kerberos implementation
AC_MSG_CHECKING(for /usr/include/heimdal)
if test -d /usr/include/heimdal; then
+ LIBS="$LIBS -lkrb5"
CFLAGS="$CFLAGS -I/usr/include/heimdal"
CPPFLAGS="$CPPFLAGS -I/usr/include/heimdal"
AC_MSG_RESULT(yes)
@@ -2103,6 +2016,7 @@ if test x$FOUND_KRB5 = x"no"; then
# see if this box has the RedHat location for kerberos
AC_MSG_CHECKING(for /usr/kerberos)
if test -d /usr/kerberos; then
+ LIBS="$LIBS -lkrb5"
LDFLAGS="$LDFLAGS -L/usr/kerberos/lib"
CFLAGS="$CFLAGS -I/usr/kerberos/include"
CPPFLAGS="$CPPFLAGS -I/usr/kerberos/include"
@@ -2129,10 +2043,23 @@ fi
# Heimdal checks.
AC_CHECK_LIB(crypto, des_set_key, [LIBS="$LIBS -lcrypto"])
AC_CHECK_LIB(asn1, copy_Authenticator, [LIBS="$LIBS -lasn1 -lroken"])
+ # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
+ AC_CHECK_LIB(gssapi, gss_display_status, [LIBS="$LIBS -lgssapi -lkrb5 -lasn1";
+ AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])])
+
AC_CHECK_LIB(krb5, krb5_set_real_time, [AC_DEFINE(HAVE_KRB5_SET_REAL_TIME,1,[Whether krb5_set_real_time is available])])
AC_CHECK_LIB(krb5, krb5_set_default_in_tkt_etypes, [AC_DEFINE(HAVE_KRB5_SET_DEFAULT_IN_TKT_ETYPES,1,[Whether krb5_set_default_in_tkt_etypes, is available])])
AC_CHECK_LIB(krb5, krb5_set_default_tgs_ktypes, [AC_DEFINE(HAVE_KRB5_SET_DEFAULT_TGS_KTYPES,1,[Whether krb5_set_default_tgs_ktypes is available])])
+ AC_CHECK_LIB(krb5, krb5_principal2salt, [AC_DEFINE(HAVE_KRB5_PRINCIPAL2SALT,1,[Whether krb5_principal2salt is available])])
+ AC_CHECK_LIB(krb5, krb5_use_enctype, [AC_DEFINE(HAVE_KRB5_USE_ENCTYPE,1,[Whether krb5_use_enctype is available])])
+ AC_CHECK_LIB(krb5, krb5_string_to_key, [AC_DEFINE(HAVE_KRB5_STRING_TO_KEY,1,[Whether krb5_string_to_key is available])])
+ AC_CHECK_LIB(krb5, krb5_get_pw_salt, [AC_DEFINE(HAVE_KRB5_GET_PW_SALT,1,[Whether krb5_get_pw_salt is available])])
+ AC_CHECK_LIB(krb5, krb5_string_to_key_salt, [AC_DEFINE(HAVE_KRB5_STRING_TO_KEY_SALT,1,[Whether krb5_string_to_key_salt is available])])
+ AC_CHECK_LIB(krb5, krb5_auth_con_setkey, [AC_DEFINE(HAVE_KRB5_AUTH_CON_SETKEY,1,[Whether krb5_auth_con_setkey is available])])
+ AC_CHECK_LIB(krb5, krb5_auth_con_setuseruserkey, [AC_DEFINE(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY,1,[Whether krb5_auth_con_setuseruserkey is available])])
+ AC_CHECK_LIB(krb5, krb5_locate_kdc, [AC_DEFINE(HAVE_KRB5_LOCATE_KDC,1,[Whether krb5_locate_kdc is available])])
+
AC_CACHE_CHECK([for addrtype in krb5_address],samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
AC_TRY_COMPILE([#include <krb5.h>],
[krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
@@ -2149,6 +2076,14 @@ if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,[Whether the krb5_address struct has a addr_type property])
fi
+AC_CACHE_CHECK([for enc_part2 in krb5_ticket],samba_cv_HAVE_KRB5_TKT_ENC_PART2,[
+AC_TRY_COMPILE([#include <krb5.h>],
+[krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
+samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
+if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
+ AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,[Whether the krb5_ticket struct has a enc_part2 property])
+fi
+
########################################################
# now see if we can find the krb5 libs in standard paths
# or as specified above
@@ -2159,9 +2094,6 @@ fi
# now see if we can find the gssapi libs in standard paths
AC_CHECK_LIB(gssapi_krb5, gss_display_status, [LIBS="$LIBS -lgssapi_krb5";
AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])])
- # Heimdal checks.
- AC_CHECK_LIB(gssapi, gss_display_status, [LIBS="$LIBS -lgssapi";
- AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])])
fi
########################################################
@@ -2207,13 +2139,13 @@ fi
########################################################
# Compile with MySQL support?
-AM_PATH_MYSQL([0.11.0],[MODULE_MYSQL=bin/mysql.so],[MODULE_MYSQL=])
+AM_PATH_MYSQL([0.11.0],[MODULE_MYSQL=bin/pdb_mysql.so],[MODULE_MYSQL=])
CFLAGS="$CFLAGS $MYSQL_CFLAGS"
AC_SUBST(MODULE_MYSQL)
########################################################
# Compile with XML support?
-AM_PATH_XML2([2.0.0],[MODULE_XML=bin/xml.so],[MODULE_XML=])
+AM_PATH_XML2([2.0.0],[MODULE_XML=bin/pdb_xml.so],[MODULE_XML=])
CFLAGS="$CFLAGS $XML_CFLAGS"
AC_SUBST(MODULE_XML)
@@ -2339,24 +2271,6 @@ if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
fi
fi
-# New experimental SAM system
-
-AC_MSG_CHECKING([whether to build the new (experimental) SAM database])
-AC_ARG_WITH(sam,
-[ --with-sam Build new (experimental) SAM database (default=no)],
-[ case "$withval" in
- yes)
- AC_MSG_RESULT(yes)
- AC_DEFINE(WITH_SAM,1,[Whether to build the new (experimental) SAM database])
- ;;
- *)
- AC_MSG_RESULT(no)
- ;;
- esac ],
- AC_MSG_RESULT(no)
-)
-
-
########################################################################################
##
## TESTS FOR SAM BACKENDS. KEEP THESE GROUPED TOGETHER
diff --git a/source3/dynconfig.c b/source3/dynconfig.c
index 4577c3947c..18a280f7d0 100644
--- a/source3/dynconfig.c
+++ b/source3/dynconfig.c
@@ -1,7 +1,6 @@
/*
Unix SMB/CIFS implementation.
Copyright (C) 2001 by Martin Pool <mbp@samba.org>
- Copyright (C) 2003 by Anthony Liguori <aliguor@us.ibm.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -57,8 +56,7 @@ pstring dyn_LMHOSTSFILE = LMHOSTSFILE;
*
* @sa lib_path() to get the path to a file inside the LIBDIR.
**/
-pstring dyn_LIBDIR = LIBDIR;
-const fstring dyn_SHLIBEXT = SHLIBEXT;
+pstring dyn_LIBDIR = LIBDIR;
/**
* @brief Directory holding lock files.
diff --git a/source3/include/.cvsignore b/source3/include/.cvsignore
index a96c335c31..60afd37315 100644
--- a/source3/include/.cvsignore
+++ b/source3/include/.cvsignore
@@ -3,4 +3,3 @@ config.h
stamp-h
proto.h
wrepld_proto.h
-tdbsam2_parse_info.h
diff --git a/source3/include/asn_1.h b/source3/include/asn_1.h
index 9cd873c18a..7783ab4c2f 100644
--- a/source3/include/asn_1.h
+++ b/source3/include/asn_1.h
@@ -55,8 +55,4 @@ typedef struct {
#define OID_KERBEROS5_OLD "1 2 840 48018 1 2 2"
#define OID_KERBEROS5 "1 2 840 113554 1 2 2"
-#define SPNGEO_NEG_RESULT_ACCEPT 0
-#define SPNGEO_NEG_RESULT_INCOMPLETE 1
-#define SPNGEO_NEG_RESULT_REJECT 2
-
#endif /* _ASN_1_H */
diff --git a/source3/include/auth.h b/source3/include/auth.h
index e37f181082..846662d17c 100644
--- a/source3/include/auth.h
+++ b/source3/include/auth.h
@@ -149,13 +149,4 @@ struct auth_init_function_entry {
auth_init_function init;
};
-
-typedef struct auth_ntlmssp_state
-{
- TALLOC_CTX *mem_ctx;
- struct auth_context *auth_context;
- struct auth_serversupplied_info *server_info;
- struct ntlmssp_state *ntlmssp_state;
-} AUTH_NTLMSSP_STATE;
-
#endif /* _SMBAUTH_H_ */
diff --git a/source3/include/charset.h b/source3/include/charset.h
index c56984ca7b..07d5e2d599 100644
--- a/source3/include/charset.h
+++ b/source3/include/charset.h
@@ -2,7 +2,6 @@
Unix SMB/CIFS implementation.
charset defines
Copyright (C) Andrew Tridgell 2001
- Copyright (C) Jelmer Vernooij 2002
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -23,18 +22,3 @@
typedef enum {CH_UCS2=0, CH_UNIX=1, CH_DISPLAY=2, CH_DOS=3, CH_UTF8=4} charset_t;
#define NUM_CHARSETS 5
-
-/*
- * for each charset we have a function that pulls from that charset to
- * a ucs2 buffer, and a function that pushes to a ucs2 buffer
- * */
-
-struct charset_functions {
- const char *name;
- size_t (*pull)(void *, char **inbuf, size_t *inbytesleft,
- char **outbuf, size_t *outbytesleft);
- size_t (*push)(void *, char **inbuf, size_t *inbytesleft,
- char **outbuf, size_t *outbytesleft);
- struct charset_functions *prev, *next;
-};
-
diff --git a/source3/include/config.h.in b/source3/include/config.h.in
index 96d9c3c070..2848414c40 100644
--- a/source3/include/config.h.in
+++ b/source3/include/config.h.in
@@ -1,4 +1,59 @@
-/* include/config.h.in. Generated from configure.in by autoheader. */
+/* include/config.h.in. Generated automatically from configure.in by autoheader. */
+
+/* Define if type char is unsigned and you are not using gcc. */
+#ifndef __CHAR_UNSIGNED__
+#undef __CHAR_UNSIGNED__
+#endif
+
+/* Define to empty if the keyword does not work. */
+#undef const
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef gid_t
+
+/* Define if your struct stat has st_rdev. */
+#undef HAVE_ST_RDEV
+
+/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define as __inline if that's what the C compiler calls it. */
+#undef inline
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef mode_t
+
+/* Define if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Define to `long' if <sys/types.h> doesn't define. */
+#undef off_t
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef pid_t
+
+/* Define if you need to in order for stat and other things to work. */
+#undef _POSIX_SOURCE
+
+/* Define as the return type of signal handlers (int or void). */
+#undef RETSIGTYPE
+
+/* Define to `unsigned' if <sys/types.h> doesn't define. */
+#undef size_t
+
+/* Define if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+#undef uid_t
+
+/* Define if your processor stores words with the most significant
+ byte first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
#undef HAVE_VOLATILE
#undef HAVE_BROKEN_READDIR
#undef HAVE_C99_VSNPRINTF
@@ -223,1312 +278,1256 @@
#undef _GNU_SOURCE
#endif
-#undef LDAP_SET_REBIND_PROC_ARGS
-#undef HAVE_SENDFILE
-#undef HAVE_SENDFILE64
-#undef LINUX_SENDFILE_API
-#undef LINUX_BROKEN_SENDFILE_API
-#undef WITH_SENDFILE
-#undef FREEBSD_SENDFILE_API
-#undef HPUX_SENDFILE_API
-#undef WITH_ADS
-#undef HAVE_SENDFILEV
-#undef HAVE_SENDFILEV64
-#undef SOLARIS_SENDFILE_API
-
-/* Whether the host os is aix */
-#undef AIX
-
-/* Whether the nisplus include files are broken */
-#undef BROKEN_NISPLUS_INCLUDE_FILES
-
-/* Broken RedHat 7.2 system header files */
-#undef BROKEN_REDHAT_7_SYSTEM_HEADERS
-
-/* Whether the compiler supports the LL prefix on long long integers */
-#undef COMPILER_SUPPORTS_LL
-
-/* Define to check invariants around some common functions */
-#undef DMALLOC_FUNC_CHECK
-
-/* Define to turn on dmalloc debugging */
-#undef ENABLE_DMALLOC
-
-/* Whether the FreeBSD sendfile() API is available */
-#undef FREEBSD_SENDFILE_API
-
-/* Whether ftruncate() needs root */
-#undef FTRUNCATE_NEEDS_ROOT
-
-/* Whether acl_get_perm_np() is available */
-#undef HAVE_ACL_GET_PERM_NP
+/* The number of bytes in a int. */
+#undef SIZEOF_INT
-/* Whether the krb5_address struct has a addrtype property */
-#undef HAVE_ADDRTYPE_IN_KRB5_ADDRESS
+/* The number of bytes in a long. */
+#undef SIZEOF_LONG
-/* Whether the krb5_address struct has a addr_type property */
-#undef HAVE_ADDR_TYPE_IN_KRB5_ADDRESS
+/* The number of bytes in a short. */
+#undef SIZEOF_SHORT
-/* Whether AIX ACLs are available */
-#undef HAVE_AIX_ACLS
+/* Define if you have the __acl function. */
+#undef HAVE___ACL
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#undef HAVE_ARPA_INET_H
+/* Define if you have the __chdir function. */
+#undef HAVE___CHDIR
-/* Define to 1 if you have the `asprintf' function. */
-#undef HAVE_ASPRINTF
+/* Define if you have the __close function. */
+#undef HAVE___CLOSE
-/* Whether asprintf() is available */
-#undef HAVE_ASPRINTF_DECL
+/* Define if you have the __closedir function. */
+#undef HAVE___CLOSEDIR
-/* Define to 1 if you have the `atexit' function. */
-#undef HAVE_ATEXIT
+/* Define if you have the __dup function. */
+#undef HAVE___DUP
-/* Define to 1 if you have the `bigcrypt' function. */
-#undef HAVE_BIGCRYPT
+/* Define if you have the __dup2 function. */
+#undef HAVE___DUP2
-/* Whether fcntl64 locks are broken */
-#undef HAVE_BROKEN_FCNTL64_LOCKS
+/* Define if you have the __facl function. */
+#undef HAVE___FACL
-/* Whether getgroups is broken */
-#undef HAVE_BROKEN_GETGROUPS
+/* Define if you have the __fchdir function. */
+#undef HAVE___FCHDIR
-/* Whether readdir() is broken */
-#undef HAVE_BROKEN_READDIR
+/* Define if you have the __fcntl function. */
+#undef HAVE___FCNTL
-/* Define to 1 if you have the `bzero' function. */
-#undef HAVE_BZERO
+/* Define if you have the __fork function. */
+#undef HAVE___FORK
-/* Whether there is a C99 compliant vsnprintf */
-#undef HAVE_C99_VSNPRINTF
+/* Define if you have the __fstat function. */
+#undef HAVE___FSTAT
-/* Define to 1 if you have the `chmod' function. */
-#undef HAVE_CHMOD
+/* Define if you have the __fstat64 function. */
+#undef HAVE___FSTAT64
-/* Define to 1 if you have the `chown' function. */
-#undef HAVE_CHOWN
+/* Define if you have the __fxstat function. */
+#undef HAVE___FXSTAT
-/* Define to 1 if you have the `chroot' function. */
-#undef HAVE_CHROOT
+/* Define if you have the __getcwd function. */
+#undef HAVE___GETCWD
-/* Define to 1 if you have the <compat.h> header file. */
-#undef HAVE_COMPAT_H
+/* Define if you have the __getdents function. */
+#undef HAVE___GETDENTS
-/* Define to 1 if you have the <com_err.h> header file. */
-#undef HAVE_COM_ERR_H
+/* Define if you have the __llseek function. */
+#undef HAVE___LLSEEK
-/* Whether the system has connect() */
-#undef HAVE_CONNECT
+/* Define if you have the __lseek function. */
+#undef HAVE___LSEEK
-/* Define to 1 if you have the `creat64' function. */
-#undef HAVE_CREAT64
+/* Define if you have the __lstat function. */
+#undef HAVE___LSTAT
-/* Whether crypt() is available */
-#undef HAVE_CRYPT
+/* Define if you have the __lstat64 function. */
+#undef HAVE___LSTAT64
-/* Define to 1 if you have the `crypt16' function. */
-#undef HAVE_CRYPT16
+/* Define if you have the __lxstat function. */
+#undef HAVE___LXSTAT
-/* Define to 1 if you have the <ctype.h> header file. */
-#undef HAVE_CTYPE_H
+/* Define if you have the __open function. */
+#undef HAVE___OPEN
-/* Whether we have CUPS */
-#undef HAVE_CUPS
+/* Define if you have the __open64 function. */
+#undef HAVE___OPEN64
-/* Whether the 'dev64_t' type is available */
-#undef HAVE_DEV64_T
+/* Define if you have the __opendir function. */
+#undef HAVE___OPENDIR
-/* Whether the major macro for dev_t is available */
-#undef HAVE_DEVICE_MAJOR_FN
+/* Define if you have the __pread function. */
+#undef HAVE___PREAD
-/* Whether the minor macro for dev_t is available */
-#undef HAVE_DEVICE_MINOR_FN
+/* Define if you have the __pread64 function. */
+#undef HAVE___PREAD64
-/* Whether dirent has a d_off member */
-#undef HAVE_DIRENT_D_OFF
+/* Define if you have the __pwrite function. */
+#undef HAVE___PWRITE
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
- */
-#undef HAVE_DIRENT_H
+/* Define if you have the __pwrite64 function. */
+#undef HAVE___PWRITE64
-/* Define to 1 if you have the `dlclose' function. */
-#undef HAVE_DLCLOSE
+/* Define if you have the __read function. */
+#undef HAVE___READ
-/* Define to 1 if you have the `dlerror' function. */
-#undef HAVE_DLERROR
+/* Define if you have the __readdir function. */
+#undef HAVE___READDIR
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
+/* Define if you have the __readdir64 function. */
+#undef HAVE___READDIR64
-/* Define to 1 if you have the `dlopen' function. */
-#undef HAVE_DLOPEN
+/* Define if you have the __seekdir function. */
+#undef HAVE___SEEKDIR
-/* Define to 1 if you have the `dlsym' function. */
-#undef HAVE_DLSYM
+/* Define if you have the __stat function. */
+#undef HAVE___STAT
-/* Define to 1 if you have the `dup2' function. */
-#undef HAVE_DUP2
+/* Define if you have the __stat64 function. */
+#undef HAVE___STAT64
-/* Define to 1 if you have the `endnetgrent' function. */
-#undef HAVE_ENDNETGRENT
+/* Define if you have the __sys_llseek function. */
+#undef HAVE___SYS_LLSEEK
-/* Whether errno() is available */
-#undef HAVE_ERRNO_DECL
+/* Define if you have the __telldir function. */
+#undef HAVE___TELLDIR
-/* Define to 1 if you have the `execl' function. */
-#undef HAVE_EXECL
+/* Define if you have the __write function. */
+#undef HAVE___WRITE
-/* Whether large file support can be enabled */
-#undef HAVE_EXPLICIT_LARGEFILE_SUPPORT
+/* Define if you have the __xstat function. */
+#undef HAVE___XSTAT
-/* Define to 1 if you have the `fchmod' function. */
-#undef HAVE_FCHMOD
+/* Define if you have the _acl function. */
+#undef HAVE__ACL
-/* Define to 1 if you have the `fchown' function. */
-#undef HAVE_FCHOWN
+/* Define if you have the _chdir function. */
+#undef HAVE__CHDIR
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
+/* Define if you have the _close function. */
+#undef HAVE__CLOSE
-/* Whether fcntl locking is available */
-#undef HAVE_FCNTL_LOCK
+/* Define if you have the _closedir function. */
+#undef HAVE__CLOSEDIR
-/* Define to 1 if you have the `fcvt' function. */
-#undef HAVE_FCVT
+/* Define if you have the _dup function. */
+#undef HAVE__DUP
-/* Define to 1 if you have the `fcvtl' function. */
-#undef HAVE_FCVTL
+/* Define if you have the _dup2 function. */
+#undef HAVE__DUP2
-/* Define to 1 if you have the `fopen64' function. */
-#undef HAVE_FOPEN64
+/* Define if you have the _facl function. */
+#undef HAVE__FACL
-/* Define to 1 if you have the `fseek64' function. */
-#undef HAVE_FSEEK64
+/* Define if you have the _fchdir function. */
+#undef HAVE__FCHDIR
-/* Define to 1 if you have the `fseeko64' function. */
-#undef HAVE_FSEEKO64
+/* Define if you have the _fcntl function. */
+#undef HAVE__FCNTL
-/* Define to 1 if you have the `fstat' function. */
-#undef HAVE_FSTAT
+/* Define if you have the _fork function. */
+#undef HAVE__FORK
-/* Whether fstat64() is available */
-#undef HAVE_FSTAT64
+/* Define if you have the _fstat function. */
+#undef HAVE__FSTAT
-/* Define to 1 if you have the `fsync' function. */
-#undef HAVE_FSYNC
+/* Define if you have the _fstat64 function. */
+#undef HAVE__FSTAT64
-/* Define to 1 if you have the `ftell64' function. */
-#undef HAVE_FTELL64
+/* Define if you have the _getcwd function. */
+#undef HAVE__GETCWD
-/* Define to 1 if you have the `ftello64' function. */
-#undef HAVE_FTELLO64
+/* Define if you have the _getdents function. */
+#undef HAVE__GETDENTS
-/* Define to 1 if you have the `ftruncate' function. */
-#undef HAVE_FTRUNCATE
+/* Define if you have the _llseek function. */
+#undef HAVE__LLSEEK
-/* Define to 1 if you have the `ftruncate64' function. */
-#undef HAVE_FTRUNCATE64
+/* Define if you have the _lseek function. */
+#undef HAVE__LSEEK
-/* Truncate extend */
-#undef HAVE_FTRUNCATE_EXTEND
+/* Define if you have the _lstat function. */
+#undef HAVE__LSTAT
-/* Whether there is a __FUNCTION__ macro */
-#undef HAVE_FUNCTION_MACRO
+/* Define if you have the _lstat64 function. */
+#undef HAVE__LSTAT64
-/* Define to 1 if you have the `getauthuid' function. */
-#undef HAVE_GETAUTHUID
+/* Define if you have the _open function. */
+#undef HAVE__OPEN
-/* Define to 1 if you have the `getcwd' function. */
-#undef HAVE_GETCWD
+/* Define if you have the _open64 function. */
+#undef HAVE__OPEN64
-/* Define to 1 if you have the `getdents' function. */
-#undef HAVE_GETDENTS
+/* Define if you have the _opendir function. */
+#undef HAVE__OPENDIR
-/* Define to 1 of you have the `getdirentries' function */
-#undef HAVE_GETDIRENTRIES
+/* Define if you have the _pread function. */
+#undef HAVE__PREAD
-/* Define to 1 if you have the `getgrent' function. */
-#undef HAVE_GETGRENT
+/* Define if you have the _pread64 function. */
+#undef HAVE__PREAD64
-/* Define to 1 if you have the `getgrnam' function. */
-#undef HAVE_GETGRNAM
+/* Define if you have the _pwrite function. */
+#undef HAVE__PWRITE
-/* Define to 1 if you have the `getgrouplist' function. */
-#undef HAVE_GETGROUPLIST
+/* Define if you have the _pwrite64 function. */
+#undef HAVE__PWRITE64
-/* Define to 1 if you have the `getnetgrent' function. */
-#undef HAVE_GETNETGRENT
+/* Define if you have the _read function. */
+#undef HAVE__READ
-/* Define to 1 if you have the `getprpwnam' function. */
-#undef HAVE_GETPRPWNAM
+/* Define if you have the _readdir function. */
+#undef HAVE__READDIR
-/* Define to 1 if you have the `getpwanam' function. */
-#undef HAVE_GETPWANAM
+/* Define if you have the _readdir64 function. */
+#undef HAVE__READDIR64
-/* Define to 1 if you have the `getrlimit' function. */
-#undef HAVE_GETRLIMIT
+/* Define if you have the _seekdir function. */
+#undef HAVE__SEEKDIR
-/* Define to 1 if you have the `getspnam' function. */
-#undef HAVE_GETSPNAM
+/* Define if you have the _stat function. */
+#undef HAVE__STAT
-/* Whether gettimeofday() is available */
-#undef HAVE_GETTIMEOFDAY_TZ
+/* Define if you have the _stat64 function. */
+#undef HAVE__STAT64
-/* Define to 1 if you have the `getutmpx' function. */
-#undef HAVE_GETUTMPX
+/* Define if you have the _telldir function. */
+#undef HAVE__TELLDIR
-/* Define to 1 if you have the `glob' function. */
-#undef HAVE_GLOB
+/* Define if you have the _write function. */
+#undef HAVE__WRITE
-/* Define to 1 if you have the <glob.h> header file. */
-#undef HAVE_GLOB_H
+/* Define if you have the asprintf function. */
+#undef HAVE_ASPRINTF
-/* Define to 1 if you have the `grantpt' function. */
-#undef HAVE_GRANTPT
+/* Define if you have the atexit function. */
+#undef HAVE_ATEXIT
-/* Define to 1 if you have the <grp.h> header file. */
-#undef HAVE_GRP_H
+/* Define if you have the bigcrypt function. */
+#undef HAVE_BIGCRYPT
-/* Whether GSSAPI is available */
-#undef HAVE_GSSAPI
+/* Define if you have the bzero function. */
+#undef HAVE_BZERO
-/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
-#undef HAVE_GSSAPI_GSSAPI_GENERIC_H
+/* Define if you have the chmod function. */
+#undef HAVE_CHMOD
-/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
-#undef HAVE_GSSAPI_GSSAPI_H
+/* Define if you have the chown function. */
+#undef HAVE_CHOWN
-/* Define to 1 if you have the <gssapi.h> header file. */
-#undef HAVE_GSSAPI_H
+/* Define if you have the chroot function. */
+#undef HAVE_CHROOT
-/* Define to 1 if you have the <history.h> header file. */
-#undef HAVE_HISTORY_H
+/* Define if you have the connect function. */
+#undef HAVE_CONNECT
-/* Whether HPUX ACLs are available */
-#undef HAVE_HPUX_ACLS
+/* Define if you have the creat64 function. */
+#undef HAVE_CREAT64
-/* Whether iface AIX is available */
-#undef HAVE_IFACE_AIX
+/* Define if you have the crypt function. */
+#undef HAVE_CRYPT
-/* Whether iface ifconf is available */
-#undef HAVE_IFACE_IFCONF
+/* Define if you have the crypt16 function. */
+#undef HAVE_CRYPT16
-/* Whether iface ifreq is available */
-#undef HAVE_IFACE_IFREQ
+/* Define if you have the dlclose function. */
+#undef HAVE_DLCLOSE
-/* Whether the compiler supports immediate structures */
-#undef HAVE_IMMEDIATE_STRUCTURES
+/* Define if you have the dlerror function. */
+#undef HAVE_DLERROR
-/* Define to 1 if you have the `initgroups' function. */
-#undef HAVE_INITGROUPS
+/* Define if you have the dlopen function. */
+#undef HAVE_DLOPEN
-/* Define to 1 if you have the `innetgr' function. */
-#undef HAVE_INNETGR
+/* Define if you have the dlsym function. */
+#undef HAVE_DLSYM
-/* Whether the 'ino64_t' type is available */
-#undef HAVE_INO64_T
+/* Define if you have the dup2 function. */
+#undef HAVE_DUP2
-/* Whether int16 typedef is included by rpc/rpc.h */
-#undef HAVE_INT16_FROM_RPC_RPC_H
+/* Define if you have the endnetgrent function. */
+#undef HAVE_ENDNETGRENT
-/* Whether int32 typedef is included by rpc/rpc.h */
-#undef HAVE_INT32_FROM_RPC_RPC_H
+/* Define if you have the execl function. */
+#undef HAVE_EXECL
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
+/* Define if you have the fchmod function. */
+#undef HAVE_FCHMOD
-/* Whether IRIX ACLs are available */
-#undef HAVE_IRIX_ACLS
+/* Define if you have the fchown function. */
+#undef HAVE_FCHOWN
-/* Whether IRIX specific capabilities are available */
-#undef HAVE_IRIX_SPECIFIC_CAPABILITIES
+/* Define if you have the fcvt function. */
+#undef HAVE_FCVT
-/* Whether kernel notifies changes */
-#undef HAVE_KERNEL_CHANGE_NOTIFY
+/* Define if you have the fcvtl function. */
+#undef HAVE_FCVTL
-/* Whether IRIX kernel oplock type definitions are available */
-#undef HAVE_KERNEL_OPLOCKS_IRIX
+/* Define if you have the fopen64 function. */
+#undef HAVE_FOPEN64
-/* Whether to use linux kernel oplocks */
-#undef HAVE_KERNEL_OPLOCKS_LINUX
+/* Define if you have the fseek64 function. */
+#undef HAVE_FSEEK64
-/* Whether the kernel supports share modes */
-#undef HAVE_KERNEL_SHARE_MODES
+/* Define if you have the fseeko64 function. */
+#undef HAVE_FSEEKO64
-/* Whether KRB5 is available */
-#undef HAVE_KRB5
+/* Define if you have the fstat function. */
+#undef HAVE_FSTAT
-/* Define to 1 if you have the <krb5.h> header file. */
-#undef HAVE_KRB5_H
+/* Define if you have the fstat64 function. */
+#undef HAVE_FSTAT64
-/* Whether krb5_set_default_in_tkt_etypes, is available */
-#undef HAVE_KRB5_SET_DEFAULT_IN_TKT_ETYPES
+/* Define if you have the fsync function. */
+#undef HAVE_FSYNC
-/* Whether krb5_set_default_tgs_ktypes is available */
-#undef HAVE_KRB5_SET_DEFAULT_TGS_KTYPES
+/* Define if you have the ftell64 function. */
+#undef HAVE_FTELL64
-/* Whether krb5_set_real_time is available */
-#undef HAVE_KRB5_SET_REAL_TIME
+/* Define if you have the ftello64 function. */
+#undef HAVE_FTELLO64
-/* Define to 1 if you have the <lastlog.h> header file. */
-#undef HAVE_LASTLOG_H
+/* Define if you have the ftruncate function. */
+#undef HAVE_FTRUNCATE
-/* Define to 1 if you have the <lber.h> header file. */
-#undef HAVE_LBER_H
+/* Define if you have the ftruncate64 function. */
+#undef HAVE_FTRUNCATE64
-/* Whether ldap is available */
-#undef HAVE_LDAP
+/* Define if you have the getauthuid function. */
+#undef HAVE_GETAUTHUID
-/* Define to 1 if you have the <ldap.h> header file. */
-#undef HAVE_LDAP_H
+/* Define if you have the getcwd function. */
+#undef HAVE_GETCWD
-/* Define to 1 if you have the `ldap_set_rebind_proc' function. */
-#undef HAVE_LDAP_SET_REBIND_PROC
+/* Define if you have the getdents function. */
+#undef HAVE_GETDENTS
-/* Define to 1 if you have the `acl' library (-lacl). */
-#undef HAVE_LIBACL
+/* Define if you have the getgrent function. */
+#undef HAVE_GETGRENT
-/* Define to 1 if you have the `gen' library (-lgen). */
-#undef HAVE_LIBGEN
+/* Define if you have the getgrnam function. */
+#undef HAVE_GETGRNAM
-/* Define to 1 if you have the `iconv' library (-liconv). */
-#undef HAVE_LIBICONV
+/* Define if you have the getgrouplist function. */
+#undef HAVE_GETGROUPLIST
-/* Define to 1 if you have the `inet' library (-linet). */
-#undef HAVE_LIBINET
+/* Define if you have the getnetgrent function. */
+#undef HAVE_GETNETGRENT
-/* Define to 1 if you have the `nsl' library (-lnsl). */
-#undef HAVE_LIBNSL
+/* Define if you have the getprpwnam function. */
+#undef HAVE_GETPRPWNAM
-/* Define to 1 if you have the `nsl_s' library (-lnsl_s). */
-#undef HAVE_LIBNSL_S
+/* Define if you have the getpwanam function. */
+#undef HAVE_GETPWANAM
-/* Whether libpam is available */
-#undef HAVE_LIBPAM
+/* Define if you have the getrlimit function. */
+#undef HAVE_GETRLIMIT
-/* Whether the system has readline */
-#undef HAVE_LIBREADLINE
+/* Define if you have the getspnam function. */
+#undef HAVE_GETSPNAM
-/* Define to 1 if you have the `resolv' library (-lresolv). */
-#undef HAVE_LIBRESOLV
+/* Define if you have the getutmpx function. */
+#undef HAVE_GETUTMPX
-/* Define to 1 if you have the `sec' library (-lsec). */
-#undef HAVE_LIBSEC
+/* Define if you have the glob function. */
+#undef HAVE_GLOB
-/* Define to 1 if you have the `security' library (-lsecurity). */
-#undef HAVE_LIBSECURITY
+/* Define if you have the grantpt function. */
+#undef HAVE_GRANTPT
-/* Define to 1 if you have the `sendfile' library (-lsendfile). */
-#undef HAVE_LIBSENDFILE
+/* Define if you have the initgroups function. */
+#undef HAVE_INITGROUPS
-/* Define to 1 if you have the `socket' library (-lsocket). */
-#undef HAVE_LIBSOCKET
+/* Define if you have the innetgr function. */
+#undef HAVE_INNETGR
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
+/* Define if you have the ldap_set_rebind_proc function. */
+#undef HAVE_LDAP_SET_REBIND_PROC
-/* Define to 1 if you have the `link' function. */
+/* Define if you have the link function. */
#undef HAVE_LINK
-/* Define to 1 if you have the <linux/xqm.h> header file. */
-#undef HAVE_LINUX_XQM_H
-
-/* Define to 1 if you have the `llseek' function. */
+/* Define if you have the llseek function. */
#undef HAVE_LLSEEK
-/* Whether the host supports long long's */
-#undef HAVE_LONGLONG
-
-/* Define to 1 if you have the `lseek64' function. */
+/* Define if you have the lseek64 function. */
#undef HAVE_LSEEK64
-/* Define to 1 if you have the `lstat64' function. */
+/* Define if you have the lstat64 function. */
#undef HAVE_LSTAT64
-/* Define to 1 if you have the `memmove' function. */
+/* Define if you have the memmove function. */
#undef HAVE_MEMMOVE
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Whether memset() is available */
+/* Define if you have the memset function. */
#undef HAVE_MEMSET
-/* Define to 1 if you have the `mknod' function. */
+/* Define if you have the mknod function. */
#undef HAVE_MKNOD
-/* Define to 1 if you have the `mknod64' function. */
+/* Define if you have the mknod64 function. */
#undef HAVE_MKNOD64
-/* Define to 1 if you have the `mktime' function. */
+/* Define if you have the mktime function. */
#undef HAVE_MKTIME
-/* Whether mmap works */
-#undef HAVE_MMAP
-
-/* Whether to use native iconv */
-#undef HAVE_NATIVE_ICONV
-
-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
-#undef HAVE_NDIR_H
+/* Define if you have the open64 function. */
+#undef HAVE_OPEN64
-/* Define to 1 if you have the <netinet/in_ip.h> header file. */
-#undef HAVE_NETINET_IN_IP_H
+/* Define if you have the pathconf function. */
+#undef HAVE_PATHCONF
-/* Define to 1 if you have the <netinet/in_systm.h> header file. */
-#undef HAVE_NETINET_IN_SYSTM_H
+/* Define if you have the pipe function. */
+#undef HAVE_PIPE
-/* Define to 1 if you have the <netinet/ip.h> header file. */
-#undef HAVE_NETINET_IP_H
+/* Define if you have the poll function. */
+#undef HAVE_POLL
-/* Define to 1 if you have the <netinet/tcp.h> header file. */
-#undef HAVE_NETINET_TCP_H
+/* Define if you have the pread function. */
+#undef HAVE_PREAD
-/* Define to 1 if you have the <net/if.h> header file. */
-#undef HAVE_NET_IF_H
+/* Define if you have the pread64 function. */
+#undef HAVE_PREAD64
-/* Do we have rl_completion_matches? */
-#undef HAVE_NEW_LIBREADLINE
+/* Define if you have the putprpwnam function. */
+#undef HAVE_PUTPRPWNAM
-/* Whether no ACLs support is available */
-#undef HAVE_NO_ACLS
+/* Define if you have the pututline function. */
+#undef HAVE_PUTUTLINE
-/* Define to 1 if you have the <nss_common.h> header file. */
-#undef HAVE_NSS_COMMON_H
+/* Define if you have the pututxline function. */
+#undef HAVE_PUTUTXLINE
-/* Define to 1 if you have the <nss.h> header file. */
-#undef HAVE_NSS_H
+/* Define if you have the pwrite function. */
+#undef HAVE_PWRITE
-/* Define to 1 if you have the <ns_api.h> header file. */
-#undef HAVE_NS_API_H
+/* Define if you have the pwrite64 function. */
+#undef HAVE_PWRITE64
-/* Whether off64_t is available */
-#undef HAVE_OFF64_T
+/* Define if you have the rand function. */
+#undef HAVE_RAND
-/* Define to 1 if you have the `open64' function. */
-#undef HAVE_OPEN64
+/* Define if you have the random function. */
+#undef HAVE_RANDOM
-/* Whether struct passwd has pw_age */
-#undef HAVE_PASSWD_PW_AGE
+/* Define if you have the rdchk function. */
+#undef HAVE_RDCHK
-/* Whether struct passwd has pw_comment */
-#undef HAVE_PASSWD_PW_COMMENT
+/* Define if you have the readdir64 function. */
+#undef HAVE_READDIR64
-/* Define to 1 if you have the `pathconf' function. */
-#undef HAVE_PATHCONF
+/* Define if you have the readlink function. */
+#undef HAVE_READLINK
-/* Define to 1 if you have the `pipe' function. */
-#undef HAVE_PIPE
+/* Define if you have the realpath function. */
+#undef HAVE_REALPATH
-/* Define to 1 if you have the `poll' function. */
-#undef HAVE_POLL
+/* Define if you have the rename function. */
+#undef HAVE_RENAME
-/* Define to 1 if you have the <poll.h> header file. */
-#undef HAVE_POLL_H
+/* Define if you have the select function. */
+#undef HAVE_SELECT
-/* Whether POSIX ACLs are available */
-#undef HAVE_POSIX_ACLS
+/* Define if you have the set_auth_parameters function. */
+#undef HAVE_SET_AUTH_PARAMETERS
-/* Define to 1 if you have the `pread' function. */
-#undef HAVE_PREAD
+/* Define if you have the setbuffer function. */
+#undef HAVE_SETBUFFER
-/* Define to 1 if you have the `pread64' function. */
-#undef HAVE_PREAD64
+/* Define if you have the setenv function. */
+#undef HAVE_SETENV
-/* Define to 1 if you have the `putprpwnam' function. */
-#undef HAVE_PUTPRPWNAM
+/* Define if you have the setgidx function. */
+#undef HAVE_SETGIDX
-/* Define to 1 if you have the `pututline' function. */
-#undef HAVE_PUTUTLINE
+/* Define if you have the setgroups function. */
+#undef HAVE_SETGROUPS
-/* Define to 1 if you have the `pututxline' function. */
-#undef HAVE_PUTUTXLINE
+/* Define if you have the setlinebuf function. */
+#undef HAVE_SETLINEBUF
-/* Define to 1 if you have the `pwrite' function. */
-#undef HAVE_PWRITE
+/* Define if you have the setluid function. */
+#undef HAVE_SETLUID
-/* Define to 1 if you have the `pwrite64' function. */
-#undef HAVE_PWRITE64
+/* Define if you have the setnetgrent function. */
+#undef HAVE_SETNETGRENT
-/* Define to 1 if you have the `rand' function. */
-#undef HAVE_RAND
+/* Define if you have the setpgid function. */
+#undef HAVE_SETPGID
-/* Define to 1 if you have the `random' function. */
-#undef HAVE_RANDOM
+/* Define if you have the setpriv function. */
+#undef HAVE_SETPRIV
-/* Define to 1 if you have the `rdchk' function. */
-#undef HAVE_RDCHK
+/* Define if you have the setsid function. */
+#undef HAVE_SETSID
-/* Define to 1 if you have the `readdir64' function. */
-#undef HAVE_READDIR64
+/* Define if you have the setuidx function. */
+#undef HAVE_SETUIDX
-/* Define to 1 if you have the <readline.h> header file. */
-#undef HAVE_READLINE_H
+/* Define if you have the shm_open function. */
+#undef HAVE_SHM_OPEN
-/* Define to 1 if you have the <readline/history.h> header file. */
-#undef HAVE_READLINE_HISTORY_H
+/* Define if you have the shmget function. */
+#undef HAVE_SHMGET
-/* Define to 1 if you have the <readline/readline.h> header file. */
-#undef HAVE_READLINE_READLINE_H
+/* Define if you have the sigaction function. */
+#undef HAVE_SIGACTION
-/* Define to 1 if you have the `readlink' function. */
-#undef HAVE_READLINK
+/* Define if you have the sigblock function. */
+#undef HAVE_SIGBLOCK
-/* Define to 1 if you have the `realpath' function. */
-#undef HAVE_REALPATH
+/* Define if you have the sigprocmask function. */
+#undef HAVE_SIGPROCMASK
-/* Define to 1 if you have the `rename' function. */
-#undef HAVE_RENAME
+/* Define if you have the sigset function. */
+#undef HAVE_SIGSET
-/* Whether current user is root */
-#undef HAVE_ROOT
+/* Define if you have the snprintf function. */
+#undef HAVE_SNPRINTF
-/* Define to 1 if you have the <rpcsvc/nis.h> header file. */
-#undef HAVE_RPCSVC_NIS_H
+/* Define if you have the srand function. */
+#undef HAVE_SRAND
-/* Define to 1 if you have the <rpcsvc/ypclnt.h> header file. */
-#undef HAVE_RPCSVC_YPCLNT_H
+/* Define if you have the srandom function. */
+#undef HAVE_SRANDOM
-/* Define to 1 if you have the <rpcsvc/yp_prot.h> header file. */
-#undef HAVE_RPCSVC_YP_PROT_H
+/* Define if you have the stat64 function. */
+#undef HAVE_STAT64
-/* Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h */
-#undef HAVE_RPC_AUTH_ERROR_CONFLICT
+/* Define if you have the strcasecmp function. */
+#undef HAVE_STRCASECMP
-/* Define to 1 if you have the <rpc/rpc.h> header file. */
-#undef HAVE_RPC_RPC_H
+/* Define if you have the strchr function. */
+#undef HAVE_STRCHR
-/* Whether mkstemp is secure */
-#undef HAVE_SECURE_MKSTEMP
+/* Define if you have the strdup function. */
+#undef HAVE_STRDUP
-/* Define to 1 if you have the <security/pam_appl.h> header file. */
-#undef HAVE_SECURITY_PAM_APPL_H
+/* Define if you have the strerror function. */
+#undef HAVE_STRERROR
-/* Define to 1 if you have the <security/pam_modules.h> header file. */
-#undef HAVE_SECURITY_PAM_MODULES_H
+/* Define if you have the strftime function. */
+#undef HAVE_STRFTIME
-/* Define to 1 if you have the <security/_pam_macros.h> header file. */
-#undef HAVE_SECURITY__PAM_MACROS_H
+/* Define if you have the strlcat function. */
+#undef HAVE_STRLCAT
-/* Define to 1 if you have the `select' function. */
-#undef HAVE_SELECT
+/* Define if you have the strlcpy function. */
+#undef HAVE_STRLCPY
-/* Whether sendfile() is available */
-#undef HAVE_SENDFILE
+/* Define if you have the strndup function. */
+#undef HAVE_STRNDUP
-/* Whether sendfile64() is available */
-#undef HAVE_SENDFILE64
+/* Define if you have the strnlen function. */
+#undef HAVE_STRNLEN
-/* Whether sendfilev() is available */
-#undef HAVE_SENDFILEV
+/* Define if you have the strpbrk function. */
+#undef HAVE_STRPBRK
-/* Whether sendfilev64() is available */
-#undef HAVE_SENDFILEV64
+/* Define if you have the strtoul function. */
+#undef HAVE_STRTOUL
-/* Define to 1 if you have the `setbuffer' function. */
-#undef HAVE_SETBUFFER
+/* Define if you have the symlink function. */
+#undef HAVE_SYMLINK
-/* Define to 1 if you have the `setenv' function. */
-#undef HAVE_SETENV
+/* Define if you have the syscall function. */
+#undef HAVE_SYSCALL
-/* Define to 1 if you have the `setgidx' function. */
-#undef HAVE_SETGIDX
+/* Define if you have the sysconf function. */
+#undef HAVE_SYSCONF
-/* Define to 1 if you have the `setgroups' function. */
-#undef HAVE_SETGROUPS
+/* Define if you have the syslog function. */
+#undef HAVE_SYSLOG
-/* Define to 1 if you have the `setlinebuf' function. */
-#undef HAVE_SETLINEBUF
+/* Define if you have the timegm function. */
+#undef HAVE_TIMEGM
-/* Define to 1 if you have the `setluid' function. */
-#undef HAVE_SETLUID
+/* Define if you have the updwtmp function. */
+#undef HAVE_UPDWTMP
-/* Define to 1 if you have the `setnetgrent' function. */
-#undef HAVE_SETNETGRENT
+/* Define if you have the updwtmpx function. */
+#undef HAVE_UPDWTMPX
-/* Define to 1 if you have the `setpgid' function. */
-#undef HAVE_SETPGID
+/* Define if you have the usleep function. */
+#undef HAVE_USLEEP
-/* Define to 1 if you have the `setpriv' function. */
-#undef HAVE_SETPRIV
+/* Define if you have the utime function. */
+#undef HAVE_UTIME
-/* Whether the system has setresgid */
-#undef HAVE_SETRESGID
+/* Define if you have the utimes function. */
+#undef HAVE_UTIMES
-/* Whether setresgid() is available */
-#undef HAVE_SETRESGID_DECL
+/* Define if you have the vasprintf function. */
+#undef HAVE_VASPRINTF
-/* Whether the system has setresuid */
-#undef HAVE_SETRESUID
+/* Define if you have the vsnprintf function. */
+#undef HAVE_VSNPRINTF
-/* Whether setresuid() is available */
-#undef HAVE_SETRESUID_DECL
+/* Define if you have the vsyslog function. */
+#undef HAVE_VSYSLOG
-/* Define to 1 if you have the `setsid' function. */
-#undef HAVE_SETSID
+/* Define if you have the waitpid function. */
+#undef HAVE_WAITPID
-/* Define to 1 if you have the `setuidx' function. */
-#undef HAVE_SETUIDX
+/* Define if you have the yp_get_default_domain function. */
+#undef HAVE_YP_GET_DEFAULT_DOMAIN
-/* Define to 1 if you have the `set_auth_parameters' function. */
-#undef HAVE_SET_AUTH_PARAMETERS
+/* Define if you have the <arpa/inet.h> header file. */
+#undef HAVE_ARPA_INET_H
-/* Define to 1 if you have the <shadow.h> header file. */
-#undef HAVE_SHADOW_H
+/* Define if you have the <com_err.h> header file. */
+#undef HAVE_COM_ERR_H
-/* Define to 1 if you have the `shmget' function. */
-#undef HAVE_SHMGET
+/* Define if you have the <compat.h> header file. */
+#undef HAVE_COMPAT_H
-/* Define to 1 if you have the `shm_open' function. */
-#undef HAVE_SHM_OPEN
+/* Define if you have the <ctype.h> header file. */
+#undef HAVE_CTYPE_H
-/* Define to 1 if you have the `sigaction' function. */
-#undef HAVE_SIGACTION
+/* Define if you have the <dirent.h> header file. */
+#undef HAVE_DIRENT_H
-/* Define to 1 if you have the `sigblock' function. */
-#undef HAVE_SIGBLOCK
+/* Define if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
-/* Define to 1 if you have the `sigprocmask' function. */
-#undef HAVE_SIGPROCMASK
+/* Define if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
-/* Define to 1 if you have the `sigset' function. */
-#undef HAVE_SIGSET
+/* Define if you have the <glob.h> header file. */
+#undef HAVE_GLOB_H
-/* Whether we have the atomic_t variable type */
-#undef HAVE_SIG_ATOMIC_T_TYPE
+/* Define if you have the <grp.h> header file. */
+#undef HAVE_GRP_H
-/* Define to 1 if you have the `snprintf' function. */
-#undef HAVE_SNPRINTF
+/* Define if you have the <gssapi.h> header file. */
+#undef HAVE_GSSAPI_H
-/* Whether snprintf() is available */
-#undef HAVE_SNPRINTF_DECL
+/* Define if you have the <gssapi/gssapi.h> header file. */
+#undef HAVE_GSSAPI_GSSAPI_H
-/* Whether we have the variable type socklen_t */
-#undef HAVE_SOCKLEN_T_TYPE
+/* Define if you have the <gssapi/gssapi_generic.h> header file. */
+#undef HAVE_GSSAPI_GSSAPI_GENERIC_H
-/* Whether the sockaddr_in struct has a sin_len property */
-#undef HAVE_SOCK_SIN_LEN
+/* Define if you have the <history.h> header file. */
+#undef HAVE_HISTORY_H
-/* Whether solaris ACLs are available */
-#undef HAVE_SOLARIS_ACLS
+/* Define if you have the <krb5.h> header file. */
+#undef HAVE_KRB5_H
-/* Define to 1 if you have the `srand' function. */
-#undef HAVE_SRAND
+/* Define if you have the <lastlog.h> header file. */
+#undef HAVE_LASTLOG_H
-/* Define to 1 if you have the `srandom' function. */
-#undef HAVE_SRANDOM
+/* Define if you have the <lber.h> header file. */
+#undef HAVE_LBER_H
-/* Whether stat64() is available */
-#undef HAVE_STAT64
+/* Define if you have the <ldap.h> header file. */
+#undef HAVE_LDAP_H
-/* Whether the stat struct has a st_blksize property */
-#undef HAVE_STAT_ST_BLKSIZE
+/* Define if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
-/* Whether the stat struct has a st_block property */
-#undef HAVE_STAT_ST_BLOCKS
+/* Define if you have the <linux/xqm.h> header file. */
+#undef HAVE_LINUX_XQM_H
-/* Define to 1 if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
+/* Define if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
+/* Define if you have the <ndir.h> header file. */
+#undef HAVE_NDIR_H
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
+/* Define if you have the <net/if.h> header file. */
+#undef HAVE_NET_IF_H
-/* Define to 1 if you have the `strcasecmp' function. */
-#undef HAVE_STRCASECMP
+/* Define if you have the <netinet/in_ip.h> header file. */
+#undef HAVE_NETINET_IN_IP_H
-/* Define to 1 if you have the `strchr' function. */
-#undef HAVE_STRCHR
+/* Define if you have the <netinet/in_systm.h> header file. */
+#undef HAVE_NETINET_IN_SYSTM_H
-/* Define to 1 if you have the `strdup' function. */
-#undef HAVE_STRDUP
+/* Define if you have the <netinet/ip.h> header file. */
+#undef HAVE_NETINET_IP_H
-/* Define to 1 if you have the `strerror' function. */
-#undef HAVE_STRERROR
+/* Define if you have the <netinet/tcp.h> header file. */
+#undef HAVE_NETINET_TCP_H
-/* Define to 1 if you have the `strftime' function. */
-#undef HAVE_STRFTIME
+/* Define if you have the <ns_api.h> header file. */
+#undef HAVE_NS_API_H
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
+/* Define if you have the <nss.h> header file. */
+#undef HAVE_NSS_H
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
+/* Define if you have the <nss_common.h> header file. */
+#undef HAVE_NSS_COMMON_H
-/* Define to 1 if you have the `strlcat' function. */
-#undef HAVE_STRLCAT
+/* Define if you have the <poll.h> header file. */
+#undef HAVE_POLL_H
-/* Define to 1 if you have the `strlcpy' function. */
-#undef HAVE_STRLCPY
+/* Define if you have the <readline.h> header file. */
+#undef HAVE_READLINE_H
-/* Define to 1 if you have the `strndup' function. */
-#undef HAVE_STRNDUP
+/* Define if you have the <readline/history.h> header file. */
+#undef HAVE_READLINE_HISTORY_H
-/* Define to 1 if you have the `strnlen' function. */
-#undef HAVE_STRNLEN
+/* Define if you have the <readline/readline.h> header file. */
+#undef HAVE_READLINE_READLINE_H
-/* Define to 1 if you have the <stropts.h> header file. */
-#undef HAVE_STROPTS_H
+/* Define if you have the <rpc/rpc.h> header file. */
+#undef HAVE_RPC_RPC_H
-/* Define to 1 if you have the `strpbrk' function. */
-#undef HAVE_STRPBRK
+/* Define if you have the <rpcsvc/nis.h> header file. */
+#undef HAVE_RPCSVC_NIS_H
-/* Define to 1 if you have the `strtoul' function. */
-#undef HAVE_STRTOUL
+/* Define if you have the <rpcsvc/yp_prot.h> header file. */
+#undef HAVE_RPCSVC_YP_PROT_H
-/* Whether the 'dirent64' struct is available */
-#undef HAVE_STRUCT_DIRENT64
+/* Define if you have the <rpcsvc/ypclnt.h> header file. */
+#undef HAVE_RPCSVC_YPCLNT_H
-/* Whether the flock64 struct is available */
-#undef HAVE_STRUCT_FLOCK64
+/* Define if you have the <security/_pam_macros.h> header file. */
+#undef HAVE_SECURITY__PAM_MACROS_H
-/* Define to 1 if `st_rdev' is member of `struct stat'. */
-#undef HAVE_STRUCT_STAT_ST_RDEV
+/* Define if you have the <security/pam_appl.h> header file. */
+#undef HAVE_SECURITY_PAM_APPL_H
-/* Define to 1 if your `struct stat' has `st_rdev'. Deprecated, use
- `HAVE_STRUCT_STAT_ST_RDEV' instead. */
-#undef HAVE_ST_RDEV
+/* Define if you have the <security/pam_modules.h> header file. */
+#undef HAVE_SECURITY_PAM_MODULES_H
-/* Define to 1 if you have the `symlink' function. */
-#undef HAVE_SYMLINK
+/* Define if you have the <shadow.h> header file. */
+#undef HAVE_SHADOW_H
-/* Define to 1 if you have the `syscall' function. */
-#undef HAVE_SYSCALL
+/* Define if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
-/* Define to 1 if you have the <syscall.h> header file. */
-#undef HAVE_SYSCALL_H
+/* Define if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
-/* Define to 1 if you have the `sysconf' function. */
-#undef HAVE_SYSCONF
+/* Define if you have the <string.h> header file. */
+#undef HAVE_STRING_H
-/* Define to 1 if you have the `syslog' function. */
-#undef HAVE_SYSLOG
+/* Define if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
-/* Define to 1 if you have the <syslog.h> header file. */
-#undef HAVE_SYSLOG_H
+/* Define if you have the <stropts.h> header file. */
+#undef HAVE_STROPTS_H
-/* Define to 1 if you have the <sys/acl.h> header file. */
+/* Define if you have the <sys/acl.h> header file. */
#undef HAVE_SYS_ACL_H
-/* Define to 1 if you have the <sys/capability.h> header file. */
+/* Define if you have the <sys/capability.h> header file. */
#undef HAVE_SYS_CAPABILITY_H
-/* Define to 1 if you have the <sys/cdefs.h> header file. */
+/* Define if you have the <sys/cdefs.h> header file. */
#undef HAVE_SYS_CDEFS_H
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
- */
+/* Define if you have the <sys/dir.h> header file. */
#undef HAVE_SYS_DIR_H
-/* Define to 1 if you have the <sys/dustat.h> header file. */
+/* Define if you have the <sys/dustat.h> header file. */
#undef HAVE_SYS_DUSTAT_H
-/* Define to 1 if you have the <sys/fcntl.h> header file. */
+/* Define if you have the <sys/fcntl.h> header file. */
#undef HAVE_SYS_FCNTL_H
-/* Define to 1 if you have the <sys/filio.h> header file. */
+/* Define if you have the <sys/filio.h> header file. */
#undef HAVE_SYS_FILIO_H
-/* Define to 1 if you have the <sys/filsys.h> header file. */
+/* Define if you have the <sys/filsys.h> header file. */
#undef HAVE_SYS_FILSYS_H
-/* Define to 1 if you have the <sys/fs/s5param.h> header file. */
+/* Define if you have the <sys/fs/s5param.h> header file. */
#undef HAVE_SYS_FS_S5PARAM_H
-/* Define to 1 if you have the <sys/fs/vx_quota.h> header file. */
+/* Define if you have the <sys/fs/vx_quota.h> header file. */
#undef HAVE_SYS_FS_VX_QUOTA_H
-/* Define to 1 if you have the <sys/id.h> header file. */
+/* Define if you have the <sys/id.h> header file. */
#undef HAVE_SYS_ID_H
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
+/* Define if you have the <sys/ioctl.h> header file. */
#undef HAVE_SYS_IOCTL_H
-/* Define to 1 if you have the <sys/ipc.h> header file. */
+/* Define if you have the <sys/ipc.h> header file. */
#undef HAVE_SYS_IPC_H
-/* Define to 1 if you have the <sys/mman.h> header file. */
+/* Define if you have the <sys/mman.h> header file. */
#undef HAVE_SYS_MMAN_H
-/* Define to 1 if you have the <sys/mode.h> header file. */
+/* Define if you have the <sys/mode.h> header file. */
#undef HAVE_SYS_MODE_H
-/* Define to 1 if you have the <sys/mount.h> header file. */
+/* Define if you have the <sys/mount.h> header file. */
#undef HAVE_SYS_MOUNT_H
-/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
- */
+/* Define if you have the <sys/ndir.h> header file. */
#undef HAVE_SYS_NDIR_H
-/* Define to 1 if you have the <sys/param.h> header file. */
+/* Define if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
-/* Define to 1 if you have the <sys/priv.h> header file. */
+/* Define if you have the <sys/priv.h> header file. */
#undef HAVE_SYS_PRIV_H
-/* Define to 1 if you have the <sys/resource.h> header file. */
+/* Define if you have the <sys/resource.h> header file. */
#undef HAVE_SYS_RESOURCE_H
-/* Define to 1 if you have the <sys/security.h> header file. */
+/* Define if you have the <sys/security.h> header file. */
#undef HAVE_SYS_SECURITY_H
-/* Define to 1 if you have the <sys/select.h> header file. */
+/* Define if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H
-/* Define to 1 if you have the <sys/shm.h> header file. */
+/* Define if you have the <sys/shm.h> header file. */
#undef HAVE_SYS_SHM_H
-/* Define to 1 if you have the <sys/socket.h> header file. */
+/* Define if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H
-/* Define to 1 if you have the <sys/sockio.h> header file. */
+/* Define if you have the <sys/sockio.h> header file. */
#undef HAVE_SYS_SOCKIO_H
-/* Define to 1 if you have the <sys/statfs.h> header file. */
+/* Define if you have the <sys/statfs.h> header file. */
#undef HAVE_SYS_STATFS_H
-/* Define to 1 if you have the <sys/statvfs.h> header file. */
+/* Define if you have the <sys/statvfs.h> header file. */
#undef HAVE_SYS_STATVFS_H
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/syscall.h> header file. */
+/* Define if you have the <sys/syscall.h> header file. */
#undef HAVE_SYS_SYSCALL_H
-/* Define to 1 if you have the <sys/syslog.h> header file. */
+/* Define if you have the <sys/syslog.h> header file. */
#undef HAVE_SYS_SYSLOG_H
-/* Define to 1 if you have the <sys/termio.h> header file. */
+/* Define if you have the <sys/termio.h> header file. */
#undef HAVE_SYS_TERMIO_H
-/* Define to 1 if you have the <sys/time.h> header file. */
+/* Define if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <sys/unistd.h> header file. */
+/* Define if you have the <sys/unistd.h> header file. */
#undef HAVE_SYS_UNISTD_H
-/* Define to 1 if you have the <sys/vfs.h> header file. */
+/* Define if you have the <sys/vfs.h> header file. */
#undef HAVE_SYS_VFS_H
-/* Define to 1 if you have the <sys/wait.h> header file. */
+/* Define if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H
-/* Define to 1 if you have the <termios.h> header file. */
-#undef HAVE_TERMIOS_H
+/* Define if you have the <syscall.h> header file. */
+#undef HAVE_SYSCALL_H
-/* Define to 1 if you have the <termio.h> header file. */
+/* Define if you have the <syslog.h> header file. */
+#undef HAVE_SYSLOG_H
+
+/* Define if you have the <termio.h> header file. */
#undef HAVE_TERMIO_H
-/* Define to 1 if you have the `timegm' function. */
-#undef HAVE_TIMEGM
+/* Define if you have the <termios.h> header file. */
+#undef HAVE_TERMIOS_H
-/* Whether Tru64 ACLs are available */
-#undef HAVE_TRU64_ACLS
+/* Define if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
-/* Whether crypt needs truncated salt */
-#undef HAVE_TRUNCATED_SALT
+/* Define if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
-/* Whether uint16 typedef is included by rpc/rpc.h */
-#undef HAVE_UINT16_FROM_RPC_RPC_H
+/* Define if you have the <utmp.h> header file. */
+#undef HAVE_UTMP_H
-/* Whether uint32 typedef is included by rpc/rpc.h */
-#undef HAVE_UINT32_FROM_RPC_RPC_H
+/* Define if you have the <utmpx.h> header file. */
+#undef HAVE_UTMPX_H
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
+/* Define if you have the <xfs/xqm.h> header file. */
+#undef HAVE_XFS_XQM_H
-/* If we need to build with unixscoket support */
-#undef HAVE_UNIXSOCKET
+/* Define if you have the acl library (-lacl). */
+#undef HAVE_LIBACL
-/* Whether UnixWare ACLs are available */
-#undef HAVE_UNIXWARE_ACLS
+/* Define if you have the gen library (-lgen). */
+#undef HAVE_LIBGEN
-/* Whether the 'unsigned char' type is available */
-#undef HAVE_UNSIGNED_CHAR
+/* Define if you have the iconv library (-liconv). */
+#undef HAVE_LIBICONV
-/* Define to 1 if you have the `updwtmp' function. */
-#undef HAVE_UPDWTMP
+/* Define if you have the inet library (-linet). */
+#undef HAVE_LIBINET
-/* Define to 1 if you have the `updwtmpx' function. */
-#undef HAVE_UPDWTMPX
+/* Define if you have the nsl library (-lnsl). */
+#undef HAVE_LIBNSL
-/* Define to 1 if you have the `usleep' function. */
-#undef HAVE_USLEEP
+/* Define if you have the nsl_s library (-lnsl_s). */
+#undef HAVE_LIBNSL_S
-/* Whether struct utimbuf is available */
-#undef HAVE_UTIMBUF
+/* Define if you have the resolv library (-lresolv). */
+#undef HAVE_LIBRESOLV
-/* Define to 1 if you have the `utime' function. */
-#undef HAVE_UTIME
+/* Define if you have the sec library (-lsec). */
+#undef HAVE_LIBSEC
-/* Define to 1 if you have the `utimes' function. */
-#undef HAVE_UTIMES
+/* Define if you have the security library (-lsecurity). */
+#undef HAVE_LIBSECURITY
-/* Define to 1 if you have the <utime.h> header file. */
-#undef HAVE_UTIME_H
+/* Define if you have the sendfile library (-lsendfile). */
+#undef HAVE_LIBSENDFILE
-/* Define to 1 if you have the <utmpx.h> header file. */
-#undef HAVE_UTMPX_H
+/* Define if you have the socket library (-lsocket). */
+#undef HAVE_LIBSOCKET
-/* Define to 1 if you have the <utmp.h> header file. */
-#undef HAVE_UTMP_H
+/* Define to turn on dmalloc debugging */
+#undef ENABLE_DMALLOC
-/* Whether the utmp struct has a property ut_addr */
-#undef HAVE_UT_UT_ADDR
+/* Define to check invariants around some common functions */
+#undef DMALLOC_FUNC_CHECK
-/* Whether the utmp struct has a property ut_exit */
-#undef HAVE_UT_UT_EXIT
+/* Whether the C compiler understands volatile */
+#undef HAVE_VOLATILE
-/* Whether the utmp struct has a property ut_host */
-#undef HAVE_UT_UT_HOST
+/* Whether MMAP is broken */
+#undef MMAP_BLACKLIST
-/* Whether the utmp struct has a property ut_id */
-#undef HAVE_UT_UT_ID
+/* Whether to use both of HPUX' crypt calls */
+#undef USE_BOTH_CRYPT_CALLS
-/* Whether the utmp struct has a property ut_name */
-#undef HAVE_UT_UT_NAME
+/* Whether to use HPUX extensions */
+#undef _HPUX_SOURCE
-/* Whether the utmp struct has a property ut_pid */
-#undef HAVE_UT_UT_PID
+/* Whether to use POSIX compatible functions */
+#undef _POSIX_SOURCE
-/* Whether the utmp struct has a property ut_time */
-#undef HAVE_UT_UT_TIME
+/* Required alignment */
+#undef _ALIGNMENT_REQUIRED
-/* Whether the utmp struct has a property ut_tv */
-#undef HAVE_UT_UT_TV
+/* Maximum alignment */
+#undef _MAX_ALIGNMENT
-/* Whether the utmp struct has a property ut_type */
-#undef HAVE_UT_UT_TYPE
+/* Whether to use both of HPUX' crypt calls */
+#undef USE_BOTH_CRYPT_CALLS
-/* Whether the utmp struct has a property ut_user */
-#undef HAVE_UT_UT_USER
+/* Whether to use HPUX extensions */
+#undef _HPUX_SOURCE
-/* Whether the utmpx struct has a property ut_syslen */
-#undef HAVE_UX_UT_SYSLEN
+/* Whether to use POSIX compatible functions */
+#undef _POSIX_SOURCE
-/* Define to 1 if you have the `vasprintf' function. */
-#undef HAVE_VASPRINTF
+/* Whether to use large file support */
+#undef _LARGEFILE64_SOURCE
-/* Whether vasprintf() is available */
-#undef HAVE_VASPRINTF_DECL
+/* Required alignment */
+#undef _ALIGNMENT_REQUIRED
-/* Whether __va_copy() is available */
-#undef HAVE_VA_COPY
+/* Maximum alignment */
+#undef _MAX_ALIGNMENT
-/* Whether the C compiler understands volatile */
-#undef HAVE_VOLATILE
+/* Whether to enable large file support */
+#undef _LARGE_FILES
-/* Define to 1 if you have the `vsnprintf' function. */
-#undef HAVE_VSNPRINTF
+/* Whether to enable large file support */
+#undef _LARGEFILE64_SOURCE
-/* Whether vsnprintf() is available */
-#undef HAVE_VSNPRINTF_DECL
+/* Whether to enable large file support */
+#undef _LARGEFILE64_SOURCE
-/* Define to 1 if you have the `vsyslog' function. */
-#undef HAVE_VSYSLOG
+/* File offset bits */
+#undef _FILE_OFFSET_BITS
-/* Define to 1 if you have the `waitpid' function. */
-#undef HAVE_WAITPID
+/* Whether to enable large file support */
+#undef _LARGEFILE64_SOURCE
-/* Define if you have working AF_LOCAL sockets */
-#undef HAVE_WORKING_AF_LOCAL
+/* File offset bits */
+#undef _FILE_OFFSET_BITS
-/* Define to 1 if you have the <xfs/xqm.h> header file. */
-#undef HAVE_XFS_XQM_H
+/* Whether to enable large file support */
+#undef _LARGEFILE64_SOURCE
-/* Define to 1 if you have the `yp_get_default_domain' function. */
-#undef HAVE_YP_GET_DEFAULT_DOMAIN
+/* Whether to enable large file support */
+#undef _LARGEFILE64_SOURCE
-/* Define to 1 if you have the `_acl' function. */
-#undef HAVE__ACL
+/* File offset bits */
+#undef _FILE_OFFSET_BITS
-/* Define to 1 if you have the `_chdir' function. */
-#undef HAVE__CHDIR
+/* Whether to use GNU libc extensions */
+#undef _GNU_SOURCE
-/* Define to 1 if you have the `_close' function. */
-#undef HAVE__CLOSE
+/* Whether to enable large file support */
+#undef _LARGEFILE64_SOURCE
-/* Define to 1 if you have the `_closedir' function. */
-#undef HAVE__CLOSEDIR
+/* Whether to use GNU libc extensions */
+#undef _GNU_SOURCE
-/* Define to 1 if you have the `_dup' function. */
-#undef HAVE__DUP
+/* Whether we have shadow.h */
+#undef HAVE_SHADOW_H
-/* Define to 1 if you have the `_dup2' function. */
-#undef HAVE__DUP2
+/* Whether dirent has a d_off member */
+#undef HAVE_DIRENT_D_OFF
-/* Define to 1 if you have the `_facl' function. */
-#undef HAVE__FACL
+/* Whether we have CUPS */
+#undef HAVE_CUPS
-/* Define to 1 if you have the `_fchdir' function. */
-#undef HAVE__FCHDIR
+/* Whether the compiler supports immediate structures */
+#undef HAVE_IMMEDIATE_STRUCTURES
-/* Define to 1 if you have the `_fcntl' function. */
-#undef HAVE__FCNTL
+/* If we need to build with unixscoket support */
+#undef HAVE_UNIXSOCKET
-/* Define to 1 if you have the `_fork' function. */
-#undef HAVE__FORK
+/* Whether we have the variable type socklen_t */
+#undef HAVE_SOCKLEN_T_TYPE
-/* Define to 1 if you have the `_fstat' function. */
-#undef HAVE__FSTAT
+/* Whether we have the atomic_t variable type */
+#undef HAVE_SIG_ATOMIC_T_TYPE
-/* Define to 1 if you have the `_fstat64' function. */
-#undef HAVE__FSTAT64
+/* Whether errno() is available */
+#undef HAVE_ERRNO_DECL
-/* Define to 1 if you have the `_getcwd' function. */
-#undef HAVE__GETCWD
+/* Whether setresuid() is available */
+#undef HAVE_SETRESUID_DECL
-/* Define to 1 if you have the `_getdents' function. */
-#undef HAVE__GETDENTS
+/* Whether setresgid() is available */
+#undef HAVE_SETRESGID_DECL
-/* Define to 1 if you have the `_llseek' function. */
-#undef HAVE__LLSEEK
+/* Whether asprintf() is available */
+#undef HAVE_ASPRINTF_DECL
-/* Define to 1 if you have the `_lseek' function. */
-#undef HAVE__LSEEK
+/* Whether vasprintf() is available */
+#undef HAVE_VASPRINTF_DECL
-/* Define to 1 if you have the `_lstat' function. */
-#undef HAVE__LSTAT
+/* Whether vsnprintf() is available */
+#undef HAVE_VSNPRINTF_DECL
-/* Define to 1 if you have the `_lstat64' function. */
-#undef HAVE__LSTAT64
+/* Whether snprintf() is available */
+#undef HAVE_SNPRINTF_DECL
-/* Define to 1 if you have the `_open' function. */
-#undef HAVE__OPEN
+/* Whether the system has setresuid */
+#undef HAVE_SETRESUID
-/* Define to 1 if you have the `_open64' function. */
-#undef HAVE__OPEN64
+/* Whether the system has setresgid */
+#undef HAVE_SETRESGID
-/* Define to 1 if you have the `_opendir' function. */
-#undef HAVE__OPENDIR
+/* Whether the system has the crypt() function */
+#undef HAVE_CRYPT
-/* Define to 1 if you have the `_pread' function. */
-#undef HAVE__PREAD
+/* Whether the system has readline */
+#undef HAVE_LIBREADLINE
-/* Define to 1 if you have the `_pread64' function. */
-#undef HAVE__PREAD64
+/* Whether the system has readline */
+#undef HAVE_LIBREADLINE
-/* Define to 1 if you have the `_pwrite' function. */
-#undef HAVE__PWRITE
+/* Do we have rl_completion_matches? */
+#undef HAVE_NEW_LIBREADLINE
-/* Define to 1 if you have the `_pwrite64' function. */
-#undef HAVE__PWRITE64
+/* Whether the system has connect() */
+#undef HAVE_CONNECT
-/* Define to 1 if you have the `_read' function. */
-#undef HAVE__READ
+/* Whether stat64() is available */
+#undef HAVE_STAT64
-/* Define to 1 if you have the `_readdir' function. */
-#undef HAVE__READDIR
+/* Whether fstat64() is available */
+#undef HAVE_FSTAT64
-/* Define to 1 if you have the `_readdir64' function. */
-#undef HAVE__READDIR64
+/* Whether the host os is linux */
+#undef LINUX
-/* Define to 1 if you have the `_seekdir' function. */
-#undef HAVE__SEEKDIR
+/* Whether the host os is solaris */
+#undef SUNOS5
-/* Define to 1 if you have the `_stat' function. */
-#undef HAVE__STAT
+/* The size of a block */
+#undef STAT_ST_BLOCKSIZE
-/* Define to 1 if you have the `_stat64' function. */
-#undef HAVE__STAT64
+/* Whether the host os is sunos4 */
+#undef SUNOS4
-/* Define to 1 if you have the `_telldir' function. */
-#undef HAVE__TELLDIR
+/* The size of a block */
+#undef STAT_ST_BLOCKSIZE
-/* Define to 1 if you have the `_write' function. */
-#undef HAVE__WRITE
+/* The size of a block */
+#undef STAT_ST_BLOCKSIZE
-/* Define to 1 if you have the `__acl' function. */
-#undef HAVE___ACL
+/* Whether the host os is irix */
+#undef IRIX
-/* Define to 1 if you have the `__chdir' function. */
-#undef HAVE___CHDIR
+/* Whether the host os is irix6 */
+#undef IRIX6
-/* Define to 1 if you have the `__close' function. */
-#undef HAVE___CLOSE
+/* The size of a block */
+#undef STAT_ST_BLOCKSIZE
-/* Define to 1 if you have the `__closedir' function. */
-#undef HAVE___CLOSEDIR
+/* Whether the host os is aix */
+#undef AIX
-/* Define to 1 if you have the `__dup' function. */
-#undef HAVE___DUP
+/* The size of a block */
+#undef STAT_ST_BLOCKSIZE
-/* Define to 1 if you have the `__dup2' function. */
-#undef HAVE___DUP2
+/* Whether the host os is HPUX */
+#undef HPUX
-/* Define to 1 if you have the `__facl' function. */
-#undef HAVE___FACL
+/* The size of a block */
+#undef STAT_ST_BLOCKSIZE
-/* Define to 1 if you have the `__fchdir' function. */
-#undef HAVE___FCHDIR
+/* Whether the host os is qnx */
+#undef QNX
-/* Define to 1 if you have the `__fcntl' function. */
-#undef HAVE___FCNTL
+/* Whether the host os is osf1 */
+#undef OSF1
-/* Define to 1 if you have the `__fork' function. */
-#undef HAVE___FORK
+/* Whether the host os is sco unix */
+#undef SCO
-/* Define to 1 if you have the `__fstat' function. */
-#undef HAVE___FSTAT
+/* Whether the host os is unixware */
+#undef UNIXWARE
-/* Define to 1 if you have the `__fstat64' function. */
-#undef HAVE___FSTAT64
+/* Whether the host os is NeXT v2 */
+#undef NEXT2
-/* Define to 1 if you have the `__fxstat' function. */
-#undef HAVE___FXSTAT
+/* Whether this is a system V system */
+#undef SYSV
-/* Define to 1 if you have the `__getcwd' function. */
-#undef HAVE___GETCWD
+/* Whether memset() is available */
+#undef HAVE_MEMSET
-/* Define to 1 if you have the `__getdents' function. */
-#undef HAVE___GETDENTS
+/* Whether the host os is reliantunix */
+#undef RELIANTUNIX
-/* Define to 1 if you have the `__llseek' function. */
-#undef HAVE___LLSEEK
+/* Whether this is a system V system */
+#undef SYSV
-/* Define to 1 if you have the `__lseek' function. */
-#undef HAVE___LSEEK
+/* Whether memset() is available */
+#undef HAVE_MEMSET
-/* Define to 1 if you have the `__lstat' function. */
-#undef HAVE___LSTAT
+/* Whether the host supports long long's */
+#undef HAVE_LONGLONG
-/* Define to 1 if you have the `__lstat64' function. */
-#undef HAVE___LSTAT64
+/* Whether the compiler supports the LL prefix on long long integers */
+#undef COMPILER_SUPPORTS_LL
-/* Define to 1 if you have the `__lxstat' function. */
-#undef HAVE___LXSTAT
+/* The size of the 'off_t' type */
+#undef SIZEOF_OFF_T
-/* Define to 1 if you have the `__open' function. */
-#undef HAVE___OPEN
+/* Whether off64_t is available */
+#undef HAVE_OFF64_T
-/* Define to 1 if you have the `__open64' function. */
-#undef HAVE___OPEN64
+/* The size of the 'ino_t' type */
+#undef SIZEOF_INO_T
-/* Define to 1 if you have the `__opendir' function. */
-#undef HAVE___OPENDIR
+/* Whether the 'ino64_t' type is available */
+#undef HAVE_INO64_T
-/* Define to 1 if you have the `__pread' function. */
-#undef HAVE___PREAD
+/* Whether the 'dev64_t' type is available */
+#undef HAVE_DEV64_T
-/* Define to 1 if you have the `__pread64' function. */
-#undef HAVE___PREAD64
+/* Whether the 'dirent64' struct is available */
+#undef HAVE_STRUCT_DIRENT64
-/* Define to 1 if you have the `__pwrite' function. */
-#undef HAVE___PWRITE
+/* Whether the major macro for dev_t is available */
+#undef HAVE_DEVICE_MAJOR_FN
-/* Define to 1 if you have the `__pwrite64' function. */
-#undef HAVE___PWRITE64
+/* Whether the minor macro for dev_t is available */
+#undef HAVE_DEVICE_MINOR_FN
-/* Define to 1 if you have the `__read' function. */
-#undef HAVE___READ
+/* Whether the 'unsigned char' type is available */
+#undef HAVE_UNSIGNED_CHAR
-/* Define to 1 if you have the `__readdir' function. */
-#undef HAVE___READDIR
+/* Whether the sockaddr_in struct has a sin_len property */
+#undef HAVE_SOCK_SIN_LEN
-/* Define to 1 if you have the `__readdir64' function. */
-#undef HAVE___READDIR64
+/* Whether seekdir returns void */
+#undef SEEKDIR_RETURNS_VOID
-/* Define to 1 if you have the `__seekdir' function. */
-#undef HAVE___SEEKDIR
+/* Whether there is a __FUNCTION__ macro */
+#undef HAVE_FUNCTION_MACRO
-/* Define to 1 if you have the `__stat' function. */
-#undef HAVE___STAT
+/* Whether gettimeofday() is available */
+#undef HAVE_GETTIMEOFDAY_TZ
-/* Define to 1 if you have the `__stat64' function. */
-#undef HAVE___STAT64
+/* Whether __va_copy() is available */
+#undef HAVE_VA_COPY
-/* Define to 1 if you have the `__sys_llseek' function. */
-#undef HAVE___SYS_LLSEEK
+/* Whether there is a C99 compliant vsnprintf */
+#undef HAVE_C99_VSNPRINTF
-/* Define to 1 if you have the `__telldir' function. */
-#undef HAVE___TELLDIR
+/* Whether readdir() is broken */
+#undef HAVE_BROKEN_READDIR
-/* Define to 1 if you have the `__write' function. */
-#undef HAVE___WRITE
+/* Whether struct utimbuf is available */
+#undef HAVE_UTIMBUF
-/* Define to 1 if you have the `__xstat' function. */
-#undef HAVE___XSTAT
+/* Whether the utmp struct has a property ut_name */
+#undef HAVE_UT_UT_NAME
-/* Whether the host os is HPUX */
-#undef HPUX
+/* Whether the utmp struct has a property ut_user */
+#undef HAVE_UT_UT_USER
-/* Whether the hpux sendfile() API is available */
-#undef HPUX_SENDFILE_API
+/* Whether the utmp struct has a property ut_id */
+#undef HAVE_UT_UT_ID
-/* Whether to use intel spinlocks */
-#undef INTEL_SPINLOCKS
+/* Whether the utmp struct has a property ut_host */
+#undef HAVE_UT_UT_HOST
-/* Whether the host os is irix */
-#undef IRIX
+/* Whether the utmp struct has a property ut_time */
+#undef HAVE_UT_UT_TIME
-/* Whether the host os is irix6 */
-#undef IRIX6
+/* Whether the utmp struct has a property ut_tv */
+#undef HAVE_UT_UT_TV
-/* Number of arguments to ldap_set_rebind_proc */
-#undef LDAP_SET_REBIND_PROC_ARGS
+/* Whether the utmp struct has a property ut_type */
+#undef HAVE_UT_UT_TYPE
-/* Whether the host os is linux */
-#undef LINUX
+/* Whether the utmp struct has a property ut_pid */
+#undef HAVE_UT_UT_PID
-/* Whether (linux) sendfile() is broken */
-#undef LINUX_BROKEN_SENDFILE_API
+/* Whether the utmp struct has a property ut_exit */
+#undef HAVE_UT_UT_EXIT
-/* linux quotas */
-#undef LINUX_QUOTAS_1
+/* Whether the utmp struct has a property ut_addr */
+#undef HAVE_UT_UT_ADDR
-/* linux 2.4.x quota braindamage */
-#undef LINUX_QUOTAS_2
+/* Whether pututline returns pointer */
+#undef PUTUTLINE_RETURNS_UTMP
-/* Whether linux sendfile() API is available */
-#undef LINUX_SENDFILE_API
+/* Whether the utmpx struct has a property ut_syslen */
+#undef HAVE_UX_UT_SYSLEN
-/* Whether to use mips spinlocks */
-#undef MIPS_SPINLOCKS
+/* Path to iconv */
+#undef WITH_LIBICONV
-/* Whether MMAP is broken */
-#undef MMAP_BLACKLIST
+/* Whether to use native iconv */
+#undef HAVE_NATIVE_ICONV
-/* Whether the host os is NeXT v2 */
-#undef NEXT2
+/* Whether to use linux kernel oplocks */
+#undef HAVE_KERNEL_OPLOCKS_LINUX
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
+/* Whether kernel notifies changes */
+#undef HAVE_KERNEL_CHANGE_NOTIFY
-/* Whether the host os is osf1 */
-#undef OSF1
+/* Whether the kernel supports share modes */
+#undef HAVE_KERNEL_SHARE_MODES
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
+/* Whether IRIX kernel oplock type definitions are available */
+#undef HAVE_KERNEL_OPLOCKS_IRIX
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
+/* Whether IRIX specific capabilities are available */
+#undef HAVE_IRIX_SPECIFIC_CAPABILITIES
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
+/* Whether int16 typedef is included by rpc/rpc.h */
+#undef HAVE_INT16_FROM_RPC_RPC_H
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
+/* Whether uint16 typedef is included by rpc/rpc.h */
+#undef HAVE_UINT16_FROM_RPC_RPC_H
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
+/* Whether int32 typedef is included by rpc/rpc.h */
+#undef HAVE_INT32_FROM_RPC_RPC_H
-/* Whether to use powerpc spinlocks */
-#undef POWERPC_SPINLOCKS
+/* Whether uint32 typedef is included by rpc/rpc.h */
+#undef HAVE_UINT32_FROM_RPC_RPC_H
-/* Whether pututline returns pointer */
-#undef PUTUTLINE_RETURNS_UTMP
+/* Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h */
+#undef HAVE_RPC_AUTH_ERROR_CONFLICT
-/* Whether the host os is qnx */
-#undef QNX
+/* Truncate extend */
+#undef HAVE_FTRUNCATE_EXTEND
-/* Whether the host os is reliantunix */
-#undef RELIANTUNIX
+/* Define if you have working AF_LOCAL sockets */
+#undef HAVE_WORKING_AF_LOCAL
+
+/* Whether getgroups is broken */
+#undef HAVE_BROKEN_GETGROUPS
/* Whether getpass should be replaced */
#undef REPLACE_GETPASS
@@ -1536,250 +1535,324 @@
/* Whether inet_ntoa should be replaced */
#undef REPLACE_INET_NTOA
-/* Define as the return type of signal handlers (`int' or `void'). */
-#undef RETSIGTYPE
+/* Whether mkstemp is secure */
+#undef HAVE_SECURE_MKSTEMP
-/* Define to make the NETDFS pipe dynamic */
-#undef RPC_DFS_DYNAMIC
+/* Whether sysconf(_SC_NGROUPS_MAX) is available */
+#undef SYSCONF_SC_NGROUPS_MAX
-/* Define to make the LSA pipe dynamic */
-#undef RPC_LSA_DYNAMIC
+/* Whether current user is root */
+#undef HAVE_ROOT
-/* Define to make the NETLOGON pipe dynamic */
-#undef RPC_NETLOG_DYNAMIC
+/* Whether iface AIX is available */
+#undef HAVE_IFACE_AIX
-/* Define to make the WINREG pipe dynamic */
-#undef RPC_REG_DYNAMIC
+/* Whether iface ifconf is available */
+#undef HAVE_IFACE_IFCONF
-/* Define to make the SAMR pipe dynamic */
-#undef RPC_SAMR_DYNAMIC
+/* Whether iface ifreq is available */
+#undef HAVE_IFACE_IFREQ
-/* Define to make the SPOOLSS pipe dynamic */
-#undef RPC_SPOOLSS_DYNAMIC
+/* Whether setresuid() is available */
+#undef USE_SETRESUID
-/* Define to make the SRVSVC pipe dynamic */
-#undef RPC_SVC_DYNAMIC
+/* Whether setreuid() is available */
+#undef USE_SETREUID
-/* Define to make the WKSSVC pipe dynamic */
-#undef RPC_WKS_DYNAMIC
+/* Whether seteuid() is available */
+#undef USE_SETEUID
-/* Whether the host os is sco unix */
-#undef SCO
+/* Whether setuidx() is available */
+#undef USE_SETUIDX
-/* Whether seekdir returns void */
-#undef SEEKDIR_RETURNS_VOID
+/* Whether mmap works */
+#undef HAVE_MMAP
-/* The size of the 'ino_t' type */
-#undef SIZEOF_INO_T
+/* Whether ftruncate() needs root */
+#undef FTRUNCATE_NEEDS_ROOT
-/* The size of a `int', as computed by sizeof. */
-#undef SIZEOF_INT
+/* Whether fcntl locking is available */
+#undef HAVE_FCNTL_LOCK
-/* The size of a `long', as computed by sizeof. */
-#undef SIZEOF_LONG
+/* Whether fcntl64 locks are broken */
+#undef HAVE_BROKEN_FCNTL64_LOCKS
-/* The size of the 'off_t' type */
-#undef SIZEOF_OFF_T
+/* Whether the flock64 struct is available */
+#undef HAVE_STRUCT_FLOCK64
-/* The size of a `short', as computed by sizeof. */
-#undef SIZEOF_SHORT
+/* Whether the stat struct has a st_block property */
+#undef HAVE_STAT_ST_BLOCKS
-/* Whether the solaris sendfile() API is available */
-#undef SOLARIS_SENDFILE_API
+/* Whether the stat struct has a st_blksize property */
+#undef HAVE_STAT_ST_BLKSIZE
-/* Whether to use sparc spinlocks */
-#undef SPARC_SPINLOCKS
+/* Broken RedHat 7.2 system header files */
+#undef BROKEN_REDHAT_7_SYSTEM_HEADERS
-/* Whether statfs requires two arguments and struct statfs has bsize property
- */
-#undef STAT_STATFS2_BSIZE
+/* Whether the nisplus include files are broken */
+#undef BROKEN_NISPLUS_INCLUDE_FILES
-/* Whether statfs requires 2 arguments and struct statfs has fsize */
-#undef STAT_STATFS2_FSIZE
+/* Whether to include smbwrapper support */
+#undef WITH_SMBWRAPPER
-/* Whether statfs requires 2 arguments and struct fs_data is available */
-#undef STAT_STATFS2_FS_DATA
+/* Whether to include AFS clear-text auth support */
+#undef WITH_AFS
-/* Whether statfs requires 3 arguments */
-#undef STAT_STATFS3_OSF1
+/* Whether to include DFS support */
+#undef WITH_DFS
-/* Whether statfs requires 4 arguments */
-#undef STAT_STATFS4
+/* Whether to include Active Directory support */
+#undef WITH_ADS
-/* Whether statvfs() is available */
-#undef STAT_STATVFS
+/* Whether GSSAPI is available */
+#undef HAVE_GSSAPI
-/* Whether statvfs64() is available */
-#undef STAT_STATVFS64
+/* Whether krb5_set_real_time is available */
+#undef HAVE_KRB5_SET_REAL_TIME
-/* The size of a block */
-#undef STAT_ST_BLOCKSIZE
+/* Whether krb5_set_default_in_tkt_etypes, is available */
+#undef HAVE_KRB5_SET_DEFAULT_IN_TKT_ETYPES
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
+/* Whether krb5_set_default_tgs_ktypes is available */
+#undef HAVE_KRB5_SET_DEFAULT_TGS_KTYPES
-/* Whether the host os is sunos4 */
-#undef SUNOS4
+/* Whether krb5_principal2salt is available */
+#undef HAVE_KRB5_PRINCIPAL2SALT
-/* Whether the host os is solaris */
-#undef SUNOS5
+/* Whether krb5_use_enctype is available */
+#undef HAVE_KRB5_USE_ENCTYPE
-/* Whether sysconf(_SC_NGROUPS_MAX) is available */
-#undef SYSCONF_SC_NGROUPS_MAX
+/* Whether krb5_string_to_key is available */
+#undef HAVE_KRB5_STRING_TO_KEY
-/* Whether this is a system V system */
-#undef SYSV
+/* Whether krb5_get_pw_salt is available */
+#undef HAVE_KRB5_GET_PW_SALT
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
+/* Whether krb5_string_to_key_salt is available */
+#undef HAVE_KRB5_STRING_TO_KEY_SALT
-/* Whether the host os is unixware */
-#undef UNIXWARE
+/* Whether krb5_auth_con_setkey is available */
+#undef HAVE_KRB5_AUTH_CON_SETKEY
-/* Whether to use both of HPUX' crypt calls */
-#undef USE_BOTH_CRYPT_CALLS
+/* Whether krb5_auth_con_setuseruserkey is available */
+#undef HAVE_KRB5_AUTH_CON_SETUSERUSERKEY
-/* Whether seteuid() is available */
-#undef USE_SETEUID
+/* Whether krb5_locate_kdc is available */
+#undef HAVE_KRB5_LOCATE_KDC
-/* Whether setresuid() is available */
-#undef USE_SETRESUID
+/* Whether the krb5_address struct has a addrtype property */
+#undef HAVE_ADDRTYPE_IN_KRB5_ADDRESS
-/* Whether setreuid() is available */
-#undef USE_SETREUID
+/* Whether the krb5_address struct has a addr_type property */
+#undef HAVE_ADDR_TYPE_IN_KRB5_ADDRESS
-/* Whether setuidx() is available */
-#undef USE_SETUIDX
+/* Whether the krb5_ticket struct has a enc_part2 property */
+#undef HAVE_KRB5_TKT_ENC_PART2
-/* Whether to use spin locks instead of fcntl locks */
-#undef USE_SPINLOCKS
+/* Whether KRB5 is available */
+#undef HAVE_KRB5
-/* Whether to include Active Directory support */
-#undef WITH_ADS
+/* Whether GSSAPI is available */
+#undef HAVE_GSSAPI
-/* Whether to include AFS clear-text auth support */
-#undef WITH_AFS
+/* Whether ldap is available */
+#undef HAVE_LDAP
+
+/* Number of arguments to ldap_set_rebind_proc */
+#undef LDAP_SET_REBIND_PROC_ARGS
/* Whether to include automount support */
#undef WITH_AUTOMOUNT
-/* Whether to include DFS support */
-#undef WITH_DFS
+/* Whether to build smbmount */
+#undef WITH_SMBMOUNT
+
+/* Whether to include PAM support */
+#undef WITH_PAM
+
+/* Whether libpam is available */
+#undef HAVE_LIBPAM
+
+/* Whether crypt() is available */
+#undef HAVE_CRYPT
+
+/* Whether crypt needs truncated salt */
+#undef HAVE_TRUNCATED_SALT
/* Whether to include 2.2 compatibel LDAP SAM configuration */
#undef WITH_LDAP_SAMCONFIG
-/* Path to iconv */
-#undef WITH_LIBICONV
-
-/* Whether to include nisplus_home support */
-#undef WITH_NISPLUS_HOME
+/* Whether to include experimental TDB SAM support */
+#undef WITH_TDB_SAM
/* Whether to include nisplus SAM support */
#undef WITH_NISPLUS_SAM
-/* Whether to include PAM support */
-#undef WITH_PAM
+/* Whether to include nisplus_home support */
+#undef WITH_NISPLUS_HOME
+
+/* Whether to include experimental syslog support */
+#undef WITH_SYSLOG
/* Whether to use profiling */
#undef WITH_PROFILE
+/* linux 2.4.x quota braindamage */
+#undef LINUX_QUOTAS_2
+
+/* linux quotas */
+#undef LINUX_QUOTAS_1
+
/* Whether to include experimental quota support */
#undef WITH_QUOTAS
-/* Whether to build the new (experimental) SAM database */
-#undef WITH_SAM
+/* Whether to include experimental utmp accounting */
+#undef WITH_UTMP
-/* Whether to include sendfile() support */
-#undef WITH_SENDFILE
+/* Whether statvfs64() is available */
+#undef STAT_STATVFS64
-/* Whether to build smbmount */
-#undef WITH_SMBMOUNT
+/* Whether statvfs() is available */
+#undef STAT_STATVFS
-/* Whether to include smbwrapper support */
-#undef WITH_SMBWRAPPER
+/* Whether statfs requires 3 arguments */
+#undef STAT_STATFS3_OSF1
-/* Whether to include experimental syslog support */
-#undef WITH_SYSLOG
+/* Whether statfs requires two arguments and struct statfs has bsize property */
+#undef STAT_STATFS2_BSIZE
-/* Whether to include experimental TDB SAM support */
-#undef WITH_TDB_SAM
+/* Whether statfs requires 4 arguments */
+#undef STAT_STATFS4
-/* Whether to include experimental utmp accounting */
-#undef WITH_UTMP
+/* Whether statfs requires 2 arguments and struct statfs has fsize */
+#undef STAT_STATFS2_FSIZE
-/* Whether to build winbind */
-#undef WITH_WINBIND
+/* Whether statfs requires 2 arguments and struct fs_data is available */
+#undef STAT_STATFS2_FS_DATA
-/* Define to 1 if your processor stores words with the most significant byte
- first (like Motorola and SPARC, unlike Intel and VAX). */
-#undef WORDS_BIGENDIAN
+/* Whether large file support can be enabled */
+#undef HAVE_EXPLICIT_LARGEFILE_SUPPORT
-/* Required alignment */
-#undef _ALIGNMENT_REQUIRED
+/* Whether to use spin locks instead of fcntl locks */
+#undef USE_SPINLOCKS
-/* File offset bits */
-#undef _FILE_OFFSET_BITS
+/* Whether to use sparc spinlocks */
+#undef SPARC_SPINLOCKS
-/* Whether to use GNU libc extensions */
-#undef _GNU_SOURCE
+/* Whether to use intel spinlocks */
+#undef INTEL_SPINLOCKS
-/* Whether to use HPUX extensions */
-#undef _HPUX_SOURCE
+/* Whether to use mips spinlocks */
+#undef MIPS_SPINLOCKS
-/* Whether to enable large file support */
-#undef _LARGEFILE64_SOURCE
+/* Whether to use powerpc spinlocks */
+#undef POWERPC_SPINLOCKS
-/* Whether to enable large file support */
-#undef _LARGE_FILES
+/* Whether UnixWare ACLs are available */
+#undef HAVE_UNIXWARE_ACLS
-/* Maximum alignment */
-#undef _MAX_ALIGNMENT
+/* Whether solaris ACLs are available */
+#undef HAVE_SOLARIS_ACLS
-/* Whether to use POSIX compatible functions */
-#undef _POSIX_SOURCE
+/* Whether HPUX ACLs are available */
+#undef HAVE_HPUX_ACLS
-/* Define to 1 if type `char' is unsigned and you are not using gcc. */
-#ifndef __CHAR_UNSIGNED__
-# undef __CHAR_UNSIGNED__
-#endif
+/* Whether IRIX ACLs are available */
+#undef HAVE_IRIX_ACLS
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
+/* Whether AIX ACLs are available */
+#undef HAVE_AIX_ACLS
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef gid_t
+/* Whether Tru64 ACLs are available */
+#undef HAVE_TRU64_ACLS
-/* Define as `__inline' if that's what the C compiler calls it, or to nothing
- if it is not supported. */
-#undef inline
+/* Whether POSIX ACLs are available */
+#undef HAVE_POSIX_ACLS
-/* Define to `unsigned' if <sys/types.h> does not define. */
-#undef ino_t
+/* Whether acl_get_perm_np() is available */
+#undef HAVE_ACL_GET_PERM_NP
-/* Define to `off_t' if <sys/types.h> does not define. */
-#undef loff_t
+/* Whether no ACLs support is available */
+#undef HAVE_NO_ACLS
-/* Define to `int' if <sys/types.h> does not define. */
-#undef mode_t
+/* Whether no ACLs support should be built in */
+#undef HAVE_NO_ACLS
-/* Define to `long' if <sys/types.h> does not define. */
-#undef off_t
+/* Whether 64-bit sendfile() is available */
+#undef HAVE_SENDFILE64
-/* Define to `loff_t' if <sys/types.h> does not define. */
-#undef offset_t
+/* Whether linux sendfile() API is available */
+#undef LINUX_SENDFILE_API
-/* Define to `int' if <sys/types.h> does not define. */
-#undef pid_t
+/* Whether sendfile() should be used */
+#undef WITH_SENDFILE
-/* Define to `unsigned' if <sys/types.h> does not define. */
-#undef size_t
+/* Whether sendfile() is available */
+#undef HAVE_SENDFILE
-/* Define to `int' if <sys/types.h> does not define. */
-#undef ssize_t
+/* Whether linux sendfile() API is available */
+#undef LINUX_SENDFILE_API
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef uid_t
+/* Whether sendfile() should be used */
+#undef WITH_SENDFILE
+
+/* Whether (linux) sendfile() is broken */
+#undef LINUX_BROKEN_SENDFILE_API
+
+/* Whether sendfile should be used */
+#undef WITH_SENDFILE
+
+/* Whether sendfile() support is available */
+#undef HAVE_SENDFILE
+
+/* Whether the FreeBSD sendfile() API is available */
+#undef FREEBSD_SENDFILE_API
+
+/* Whether sendfile() support should be included */
+#undef WITH_SENDFILE
+
+/* Whether sendfile64() is available */
+#undef HAVE_SENDFILE64
+
+/* Whether the hpux sendfile() API is available */
+#undef HPUX_SENDFILE_API
+
+/* Whether sendfile() support should be included */
+#undef WITH_SENDFILE
+
+/* Whether sendfile() is available */
+#undef HAVE_SENDFILE
+
+/* Whether the hpux sendfile() API is available */
+#undef HPUX_SENDFILE_API
+
+/* Whether sendfile() support should be included */
+#undef WITH_SENDFILE
+
+/* Whether sendfilev64() is available */
+#undef HAVE_SENDFILEV64
+
+/* Whether the soloris sendfile() API is available */
+#undef SOLARIS_SENDFILE_API
+
+/* Whether sendfile() support should be included */
+#undef WITH_SENDFILE
+
+/* Whether sendfilev() is available */
+#undef HAVE_SENDFILEV
+
+/* Whether the solaris sendfile() API is available */
+#undef SOLARIS_SENDFILE_API
+
+/* Whether to include sendfile() support */
+#undef WITH_SENDFILE
+
+/* Whether to build winbind */
+#undef WITH_WINBIND
+
+/* Whether struct passwd has pw_comment */
+#undef HAVE_PASSWD_PW_COMMENT
+
+/* Whether struct passwd has pw_age */
+#undef HAVE_PASSWD_PW_AGE
-/* Define to `unsigned short' if <sys/types.h> does not define. */
-#undef wchar_t
diff --git a/source3/include/dynconfig.h b/source3/include/dynconfig.h
index ce256f0613..fcc4c88b2b 100644
--- a/source3/include/dynconfig.h
+++ b/source3/include/dynconfig.h
@@ -1,7 +1,6 @@
/*
Unix SMB/CIFS implementation.
Copyright (C) 2001 by Martin Pool <mbp@samba.org>
- Copyright (C) 2003 by Anthony Liguori <aliguor@us.ibm.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -31,7 +30,6 @@ extern char const *dyn_SBINDIR,
extern pstring dyn_CONFIGFILE;
extern pstring dyn_LOGFILEBASE, dyn_LMHOSTSFILE;
extern pstring dyn_LIBDIR;
-extern const fstring dyn_SHLIBEXT;
extern const pstring dyn_LOCKDIR;
extern const pstring dyn_PIDDIR;
extern const pstring dyn_SMB_PASSWD_FILE;
diff --git a/source3/include/genparser.h b/source3/include/genparser.h
deleted file mode 100644
index 002d79f8f9..0000000000
--- a/source3/include/genparser.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- Copyright (C) Andrew Tridgell <genstruct@tridgell.net> 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef _GENPARSER_H
-#define _GENPARSER_H
-
-/* these macros are needed for genstruct auto-parsers */
-#ifndef GENSTRUCT
-#define GENSTRUCT
-#define _LEN(x)
-#define _NULLTERM
-#endif
-
-/*
- automatic marshalling/unmarshalling system for C structures
-*/
-
-/* flag to mark a fixed size array as actually being null terminated */
-#define FLAG_NULLTERM 1
-#define FLAG_ALWAYS 2
-
-struct enum_struct {
- const char *name;
- unsigned value;
-};
-
-/* intermediate dumps are stored in one of these */
-struct parse_string {
- unsigned allocated;
- unsigned length;
- char *s;
-};
-
-typedef int (*gen_dump_fn)(struct parse_string *, const char *ptr, unsigned indent);
-typedef int (*gen_parse_fn)(char *ptr, const char *str);
-
-/* genstruct.pl generates arrays of these */
-struct parse_struct {
- const char *name;
- unsigned ptr_count;
- unsigned size;
- unsigned offset;
- unsigned array_len;
- const char *dynamic_len;
- unsigned flags;
- gen_dump_fn dump_fn;
- gen_parse_fn parse_fn;
-};
-
-#define DUMP_PARSE_DECL(type) \
- int gen_dump_ ## type(struct parse_string *, const char *, unsigned); \
- int gen_parse_ ## type(char *, const char *);
-
-DUMP_PARSE_DECL(char)
-DUMP_PARSE_DECL(int)
-DUMP_PARSE_DECL(unsigned)
-DUMP_PARSE_DECL(double)
-DUMP_PARSE_DECL(float)
-
-#define gen_dump_unsigned_char gen_dump_char
-#define gen_parse_unsigned_char gen_parse_char
-
-#endif /* _GENPARSER_H */
diff --git a/source3/include/genparser_samba.h b/source3/include/genparser_samba.h
deleted file mode 100644
index 172ff2362c..0000000000
--- a/source3/include/genparser_samba.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- Copyright (C) Simo Sorce <idra@samba.org> 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef _GENPARSER_SAMBA_H
-#define _GENPARSER_SAMBA_H
-
-const struct parse_struct pinfo_security_ace_info[] = {
-{"type", 0, sizeof(uint8), offsetof(struct security_ace_info, type), 0, NULL, 0, gen_dump_uint8, gen_parse_uint8},
-{"flags", 0, sizeof(uint8), offsetof(struct security_ace_info, flags), 0, NULL, 0, gen_dump_uint8, gen_parse_uint8},
-{"size", 0, sizeof(uint16), offsetof(struct security_ace_info, size), 0, NULL, 0, gen_dump_uint16, gen_parse_uint16},
-{"info", 0, sizeof(char), offsetof(struct security_ace_info, info), 0, NULL, 0, gen_dump_SEC_ACCESS, gen_parse_SEC_ACCESS},
-{"obj_flags", 0, sizeof(uint32), offsetof(struct security_ace_info, obj_flags), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"obj_guid", 0, sizeof(char), offsetof(struct security_ace_info, obj_guid), 0, NULL, 0, gen_dump_GUID, gen_parse_GUID},
-{"inh_guid", 0, sizeof(char), offsetof(struct security_ace_info, inh_guid), 0, NULL, 0, gen_dump_GUID, gen_parse_GUID},
-{"trustee", 0, sizeof(char), offsetof(struct security_ace_info, trustee), 0, NULL, 0, gen_dump_DOM_SID, gen_parse_DOM_SID},
-{NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}};
-
-const struct parse_struct pinfo_security_acl_info[] = {
-{"revision", 0, sizeof(uint16), offsetof(struct security_acl_info, revision), 0, NULL, 0, gen_dump_uint16, gen_parse_uint16},
-{"size", 0, sizeof(uint16), offsetof(struct security_acl_info, size), 0, NULL, 0, gen_dump_uint16, gen_parse_uint16},
-{"num_aces", 0, sizeof(uint32), offsetof(struct security_acl_info, num_aces), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"ace", 1, sizeof(struct security_ace_info), offsetof(struct security_acl_info, ace), 0, "size", 0, gen_dump_SEC_ACE, gen_parse_SEC_ACE},
-{NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}};
-
-const struct parse_struct pinfo_security_descriptor_info[] = {
-{"revision", 0, sizeof(uint16), offsetof(struct security_descriptor_info, revision), 0, NULL, 0, gen_dump_uint16, gen_parse_uint16},
-{"type", 0, sizeof(uint16), offsetof(struct security_descriptor_info, type), 0, NULL, 0, gen_dump_uint16, gen_parse_uint16},
-{"off_owner_sid", 0, sizeof(uint32), offsetof(struct security_descriptor_info, off_owner_sid), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"off_grp_sid", 0, sizeof(uint32), offsetof(struct security_descriptor_info, off_grp_sid), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"off_sacl", 0, sizeof(uint32), offsetof(struct security_descriptor_info, off_sacl), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"off_dacl", 0, sizeof(uint32), offsetof(struct security_descriptor_info, off_dacl), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"dacl", 1, sizeof(struct security_acl_info), offsetof(struct security_descriptor_info, dacl), 0, NULL, 0, gen_dump_SEC_ACL, gen_parse_SEC_ACL},
-{"sacl", 1, sizeof(struct security_acl_info), offsetof(struct security_descriptor_info, sacl), 0, NULL, 0, gen_dump_SEC_ACL, gen_parse_SEC_ACL},
-{"owner_sid", 1, sizeof(char), offsetof(struct security_descriptor_info, owner_sid), 0, NULL, 0, gen_dump_DOM_SID, gen_parse_DOM_SID},
-{"grp_sid", 1, sizeof(char), offsetof(struct security_descriptor_info, grp_sid), 0, NULL, 0, gen_dump_DOM_SID, gen_parse_DOM_SID},
-{NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}};
-
-const struct parse_struct pinfo_luid_attr_info[] = {
-{"attr", 0, sizeof(uint32), offsetof(struct LUID_ATTR, attr), 0, NULL, 0, gen_dump_uint32, gen_parse_uint32},
-{"luid", 1, sizeof(LUID), offsetof(struct LUID_ATTR, luid), 0, NULL, 0, gen_dump_LUID, gen_parse_LUID},
-{NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}};
-
-#endif /* _GENPARSER_SAMBA_H */
diff --git a/source3/include/gums.h b/source3/include/gums.h
deleted file mode 100644
index ca124d7442..0000000000
--- a/source3/include/gums.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- GUMS structures
- Copyright (C) Simo Sorce 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef _GUMS_H
-#define _GUMS_H
-
-#define GUMS_VERSION_MAJOR 0
-#define GUMS_VERSION_MINOR 1
-#define GUMS_OBJECT_VERSION 1
-
-#define GUMS_OBJ_DOMAIN 1
-#define GUMS_OBJ_NORMAL_USER 2
-#define GUMS_OBJ_GROUP 3
-#define GUMS_OBJ_ALIAS 4
-#define GUMS_OBJ_WORKSTATION_TRUST 5
-#define GUMS_OBJ_SERVER_TRUST 6
-#define GUMS_OBJ_DOMAIN_TRUST 7
-
-typedef struct gums_user
-{
- DOM_SID *group_sid; /* Primary Group SID */
-
- NTTIME logon_time; /* logon time */
- NTTIME logoff_time; /* logoff time */
- NTTIME kickoff_time; /* kickoff time */
- NTTIME pass_last_set_time; /* password last set time */
- NTTIME pass_can_change_time; /* password can change time */
- NTTIME pass_must_change_time; /* password must change time */
-
- char *full_name; /* user's full name string */
- char *home_dir; /* home directory string */
- char *dir_drive; /* home directory drive string */
- char *logon_script; /* logon script string */
- char *profile_path; /* profile path string */
- char *workstations; /* login from workstations string */
- char *unknown_str; /* don't know what this is, yet. */
- char *munged_dial; /* munged path name and dial-back tel number */
-
- DATA_BLOB lm_pw; /* .data is Null if no password */
- DATA_BLOB nt_pw; /* .data is Null if no password */
-
- uint32 unknown_3; /* 0x00ff ffff */
-
- uint16 logon_divs; /* 168 - number of hours in a week */
- uint32 hours_len; /* normally 21 bytes */
- uint8 *hours;
-
- uint32 unknown_5; /* 0x0002 0000 */
- uint32 unknown_6; /* 0x0000 04ec */
-
-} GUMS_USER;
-
-typedef struct gums_group
-{
- uint32 count; /* Number of SIDs */
- DOM_SID **members; /* SID array */
-
-} GUMS_GROUP;
-
-union gums_obj_p {
- gums_user *user;
- gums_group *group;
-}
-
-typedef struct gums_object
-{
- TALLOC_CTX *mem_ctx;
-
- uint32 type; /* Object Type */
- uint32 version; /* Object Version */
- uint32 seq_num; /* Object Sequence Number */
-
- SEC_DESC *sec_desc; /* Security Descriptor */
-
- DOM_SID *sid; /* Object Sid */
- char *name; /* Object Name */
- char *description; /* Object Description */
-
- union gums_obj_p data; /* Object Specific data */
-
-} GUMS_OBJECT;
-
-typedef struct gums_data_set
-{
- int type; /* GUMS_SET_xxx */
- void *data;
-
-} GUMS_DATA_SET;
-
-typedef struct gums_commit_set
-{
- TALLOC_CTX *mem_ctx;
-
- uint32 type; /* Object type */
- DOM_SID sid; /* Object Sid */
- uint32 count; /* number of changes */
- GUMS_DATA_SET **data;
-} GUMS_COMMIT_SET;
-
-typedef struct gums_privilege
-{
- TALLOC_CTX *mem_ctx;
-
- uint32 type; /* Object Type */
- uint32 version; /* Object Version */
- uint32 seq_num; /* Object Sequence Number */
-
- LUID_ATTR *privilege; /* Privilege Type */
- char *name; /* Object Name */
- char *description; /* Object Description */
-
- uint32 count;
- DOM_SID **members;
-
-} GUMS_PRIVILEGE;
-
-
-typedef struct gums_functions
-{
- /* Generic object functions */
-
- NTSTATUS (*get_domain_sid) (DOM_SID **sid, const char* name);
- NTSTATUS (*set_domain_sid) (const DOM_SID *sid);
-
- NTSTATUS (*get_sequence_number) (void);
-
- NTSTATUS (*new_object) (DOM_SID **sid, const char *name, const int obj_type);
- NTSTATUS (*delete_object) (const DOM_SID *sid);
-
- NTSTATUS (*get_object_from_sid) (GUMS_OBJECT **object, const DOM_SID *sid, const int obj_type);
- NTSTATUS (*get_sid_from_name) (GUMS_OBJECT **object, const char *name);
- /* This function is used to get the list of all objects changed since b_time, it is
- used to support PDC<->BDC synchronization */
- NTSTATUS (*get_updated_objects) (GUMS_OBJECT **objects, const NTTIME base_time);
-
- NTSTATUS (*enumerate_objects_start) (void *handle, const DOM_SID *sid, const int obj_type);
- NTSTATUS (*enumerate_objects_get_next) (GUMS_OBJECT **object, void *handle);
- NTSTATUS (*enumerate_objects_stop) (void *handle);
-
- /* This function MUST be used ONLY by PDC<->BDC replication code or recovery tools.
- Never use this function to update an object in the database, use set_object_values() */
- NTSTATUS (*set_object) (const GUMS_OBJECT *object);
-
- /* set object values function */
- NTSTATUS (*set_object_values) (DOM_SID *sid, uint32 count, GUMS_DATA_SET *data_set);
-
- /* Group related functions */
- NTSTATUS (*add_memberss_to_group) (const DOM_SID *group, const DOM_SID **members);
- NTSTATUS (*delete_members_from_group) (const DOM_SID *group, const DOM_SID **members);
- NTSTATUS (*enumerate_group_members) (DOM_SID **members, const DOM_SID *sid, const int type);
-
- NTSTATUS (*get_sid_groups) (DOM_SID **groups, const DOM_SID *sid);
-
- NTSTATUS (*lock_sid) (const DOM_SID *sid);
- NTSTATUS (*unlock_sid) (const DOM_SID *sid);
-
- /* privileges related functions */
-
- NTSTATUS (*add_members_to_privilege) (const LUID_ATTR *priv, const DOM_SID **members);
- NTSTATUS (*delete_members_from_privilege) (const LUID_ATTR *priv, const DOM_SID **members);
- NTSTATUS (*enumerate_privilege_members) (DOM_SID **members, const LUID_ATTR *priv);
- NTSTATUS (*get_sid_privileges) (DOM_SID **privs, const DOM_SID *sid);
- /* warning!: set_privilege will overwrite a prior existing privilege if such exist */
- NTSTATUS (*set_privilege) (GUMS_PRIVILEGE *priv);
-
-} GUMS_FUNCTIONS;
-
-/* define value types */
-
-#define GUMS_SET_PRIMARY_GROUP 1
-#define GUMS_SET_SEC_DESC 2
-
-/* user specific type values */
-#define GUMS_SET_LOGON_TIME 10 /* keep NTTIME consecutive */
-#define GUMS_SET_LOGOFF_TIME 11 /* too ease checking */
-#define GUMS_SET_KICKOFF_TIME 13
-#define GUMS_SET_PASS_LAST_SET_TIME 14
-#define GUMS_SET_PASS_CAN_CHANGE_TIME 15
-#define GUMS_SET_PASS_MUST_CHANGE_TIME 16 /* NTTIME end */
-
-#define GUMS_SET_NAME 20 /* keep strings consecutive */
-#define GUMS_SET_DESCRIPTION 21 /* too ease checking */
-#define GUMS_SET_FULL_NAME 22
-#define GUMS_SET_HOME_DIRECTORY 23
-#define GUMS_SET_DRIVE 24
-#define GUMS_SET_LOGON_SCRIPT 25
-#define GUMS_SET_PROFILE_PATH 26
-#define GUMS_SET_WORKSTATIONS 27
-#define GUMS_SET_UNKNOWN_STRING 28
-#define GUMS_SET_MUNGED_DIAL 29 /* strings end */
-
-#define GUMS_SET_LM_PASSWORD 40
-#define GUMS_SET_NT_PASSWORD 41
-#define GUMS_SET_PLAINTEXT_PASSWORD 42
-#define GUMS_SET_UNKNOWN_3 43
-#define GUMS_SET_LOGON_DIVS 44
-#define GUMS_SET_HOURS_LEN 45
-#define GUMS_SET_HOURS 46
-#define GUMS_SET_UNKNOWN_5 47
-#define GUMS_SET_UNKNOWN_6 48
-
-#define GUMS_SET_MUST_CHANGE_PASS 50
-#define GUMS_SET_CANNOT_CHANGE_PASS 51
-#define GUMS_SET_PASS_NEVER_EXPIRE 52
-#define GUMS_SET_ACCOUNT_DISABLED 53
-#define GUMS_SET_ACCOUNT_LOCKOUT 54
-
-/*group specific type values */
-#define GUMS_ADD_SID_LIST 60
-#define GUMS_DEL_SID_LIST 61
-#define GUMS_SET_SID_LIST 62
-
-#endif /* _GUMS_H */
diff --git a/source3/include/includes.h b/source3/include/includes.h
index a823af5909..08e801427c 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -768,8 +768,6 @@ extern int errno;
#include "passdb.h"
-#include "sam.h"
-
#include "session.h"
#include "asn_1.h"
@@ -780,8 +778,6 @@ extern int errno;
#include "nsswitch/winbind_client.h"
-#include "genparser.h"
-
/*
* Type for wide character dirent structure.
* Only d_name is defined by POSIX.
@@ -1218,8 +1214,22 @@ krb5_error_code krb5_set_real_time(krb5_context context, int32_t seconds, int32_
krb5_error_code krb5_set_default_tgs_ktypes(krb5_context ctx, const krb5_enctype *enc);
#endif
-/* Samba wrapper function for krb5 functionality. */
+#if defined(HAVE_KRB5_AUTH_CON_SETKEY) && !defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY)
+krb5_error_code krb5_auth_con_setuseruserkey(krb5_context context,
+ krb5_auth_context auth_context,
+ krb5_keyblock *keyblock);
+#endif
+
+/* Samba wrapper functions for krb5 functionality. */
void setup_kaddr( krb5_address *pkaddr, struct sockaddr *paddr);
+int create_kerberos_key_from_string(krb5_context context,
+ krb5_principal host_princ,
+ krb5_data *password,
+ krb5_keyblock *key);
+
+void get_auth_data_from_tkt(DATA_BLOB *auth_data, krb5_ticket *tkt);
+krb5_const_principal get_principal_from_tkt(krb5_ticket *tkt);
+krb5_error_code krb5_locate_kdc(krb5_context ctx, const krb5_data *realm, struct sockaddr **addr_pp, int *naddrs, int get_masters);
#endif /* HAVE_KRB5 */
diff --git a/source3/include/ntlmssp.h b/source3/include/ntlmssp.h
index 79d0446a77..673be83532 100644
--- a/source3/include/ntlmssp.h
+++ b/source3/include/ntlmssp.h
@@ -71,20 +71,9 @@ typedef struct ntlmssp_state
{
TALLOC_CTX *mem_ctx;
enum NTLMSSP_ROLE role;
+ struct auth_context *auth_context;
+ struct auth_serversupplied_info *server_info;
BOOL unicode;
- char *user;
- char *domain;
- char *workstation;
- DATA_BLOB lm_resp;
- DATA_BLOB nt_resp;
- DATA_BLOB chal;
- void *auth_context;
- const uint8 *(*get_challenge)(struct ntlmssp_state *ntlmssp_state);
- NTSTATUS (*check_password)(struct ntlmssp_state *ntlmssp_state);
-
- const char *(*get_global_myname)(void);
- const char *(*get_domain)(void);
-
- int server_role;
+ char *orig_user;
+ char *orig_domain;
} NTLMSSP_STATE;
-
diff --git a/source3/include/passdb.h b/source3/include/passdb.h
index 06409aa34e..fa80b263ff 100644
--- a/source3/include/passdb.h
+++ b/source3/include/passdb.h
@@ -34,6 +34,13 @@
#define PASSDB_INTERFACE_VERSION 4
+/* use this inside a passdb module */
+#define PDB_MODULE_VERSIONING_MAGIC \
+int pdb_version(void)\
+{\
+ return PASSDB_INTERFACE_VERSION;\
+}
+
typedef struct pdb_context
{
struct pdb_methods *pdb_methods;
@@ -149,7 +156,6 @@ struct pdb_init_function_entry {
const char *name;
/* Function to create a member of the pdb_methods list */
pdb_init_function init;
- struct pdb_init_function_entry *prev, *next;
};
#endif /* _PASSDB_H */
diff --git a/source3/include/rpc_client_proto.h b/source3/include/rpc_client_proto.h
deleted file mode 100644
index 0ecb195691..0000000000
--- a/source3/include/rpc_client_proto.h
+++ /dev/null
@@ -1,231 +0,0 @@
-#ifndef _RPC_CLIENT_PROTO_H_
-#define _RPC_CLIENT_PROTO_H_
-/* This file is automatically generated with "make proto". DO NOT EDIT */
-
-
-/*The following definitions come from lib/util_list.c */
-
-BOOL copy_policy_hnd (POLICY_HND *dest, const POLICY_HND *src);
-BOOL compare_rpc_hnd_node(const RPC_HND_NODE *x,
- const RPC_HND_NODE *y);
-BOOL RpcHndList_set_connection(const POLICY_HND *hnd,
- struct cli_connection *con);
-BOOL RpcHndList_del_connection(const POLICY_HND *hnd);
-struct cli_connection* RpcHndList_get_connection(const POLICY_HND *hnd);
-
-/*The following definitions come from rpc_client/cli_connect.c */
-
-void init_connections(void);
-void free_connections(void);
-void cli_connection_free(struct cli_connection *con);
-void cli_connection_unlink(struct cli_connection *con);
-BOOL cli_connection_init(const char *srv_name, char *pipe_name,
- struct cli_connection **con);
-BOOL cli_connection_init_auth(const char *srv_name, char *pipe_name,
- struct cli_connection **con,
- cli_auth_fns * auth, void *auth_creds);
-struct _cli_auth_fns *cli_conn_get_authfns(struct cli_connection *con);
-void *cli_conn_get_auth_creds(struct cli_connection *con);
-BOOL rpc_hnd_pipe_req(const POLICY_HND * hnd, uint8 op_num,
- prs_struct * data, prs_struct * rdata);
-BOOL rpc_con_pipe_req(struct cli_connection *con, uint8 op_num,
- prs_struct * data, prs_struct * rdata);
-BOOL rpc_con_ok(struct cli_connection *con);
-
-/*The following definitions come from rpc_client/cli_login.c */
-
-BOOL cli_nt_setup_creds(struct cli_state *cli, unsigned char mach_pwd[16]);
-BOOL cli_nt_srv_pwset(struct cli_state *cli, unsigned char *new_hashof_mach_pwd);
-BOOL cli_nt_login_interactive(struct cli_state *cli, char *domain, char *username,
- uint32 smb_userid_low, char *password,
- NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_nt_login_network(struct cli_state *cli, char *domain, char *username,
- uint32 smb_userid_low, char lm_chal[8],
- char *lm_chal_resp, char *nt_chal_resp,
- NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_nt_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr);
-
-/*The following definitions come from rpc_client/cli_lsarpc.c */
-
-BOOL do_lsa_open_policy(struct cli_state *cli,
- char *system_name, POLICY_HND *hnd,
- BOOL sec_qos);
-BOOL do_lsa_query_info_pol(struct cli_state *cli,
- POLICY_HND *hnd, uint16 info_class,
- fstring domain_name, DOM_SID *domain_sid);
-BOOL do_lsa_close(struct cli_state *cli, POLICY_HND *hnd);
-BOOL cli_lsa_get_domain_sid(struct cli_state *cli, char *server);
-uint32 lsa_open_policy(const char *system_name, POLICY_HND *hnd,
- BOOL sec_qos, uint32 des_access);
-uint32 lsa_lookup_sids(POLICY_HND *hnd, int num_sids, DOM_SID *sids,
- char ***names, uint32 **types, int *num_names);
-uint32 lsa_lookup_names(POLICY_HND *hnd, int num_names, char **names,
- DOM_SID **sids, uint32 **types, int *num_sids);
-
-/*The following definitions come from rpc_client/cli_netlogon.c */
-
-BOOL cli_net_logon_ctrl2(struct cli_state *cli, uint32 status_level);
-BOOL cli_net_auth2(struct cli_state *cli, uint16 sec_chan,
- uint32 neg_flags, DOM_CHAL *srv_chal);
-BOOL cli_net_req_chal(struct cli_state *cli, DOM_CHAL *clnt_chal, DOM_CHAL *srv_chal);
-BOOL cli_net_srv_pwset(struct cli_state *cli, uint8 hashed_mach_pwd[16]);
-BOOL cli_net_sam_logon(struct cli_state *cli, NET_ID_INFO_CTR *ctr, NET_USER_INFO_3 *user_info3);
-BOOL cli_net_sam_logoff(struct cli_state *cli, NET_ID_INFO_CTR *ctr);
-BOOL change_trust_account_password( char *domain, char *remote_machine_list);
-
-/*The following definitions come from rpc_client/cli_pipe.c */
-
-BOOL rpc_api_pipe_req(struct cli_state *cli, uint8 op_num,
- prs_struct *data, prs_struct *rdata);
-BOOL rpc_pipe_bind(struct cli_state *cli, char *pipe_name, char *my_name);
-void cli_nt_set_ntlmssp_flgs(struct cli_state *cli, uint32 ntlmssp_flgs);
-BOOL cli_nt_session_open(struct cli_state *cli, char *pipe_name);
-void cli_nt_session_close(struct cli_state *cli);
-
-/*The following definitions come from rpc_client/cli_reg.c */
-
-BOOL do_reg_connect(struct cli_state *cli, char *full_keyname, char *key_name,
- POLICY_HND *reg_hnd);
-BOOL do_reg_open_hklm(struct cli_state *cli, uint16 unknown_0, uint32 level,
- POLICY_HND *hnd);
-BOOL do_reg_open_hku(struct cli_state *cli, uint16 unknown_0, uint32 level,
- POLICY_HND *hnd);
-BOOL do_reg_flush_key(struct cli_state *cli, POLICY_HND *hnd);
-BOOL do_reg_query_key(struct cli_state *cli, POLICY_HND *hnd,
- char *class, uint32 *class_len,
- uint32 *num_subkeys, uint32 *max_subkeylen,
- uint32 *max_subkeysize, uint32 *num_values,
- uint32 *max_valnamelen, uint32 *max_valbufsize,
- uint32 *sec_desc, NTTIME *mod_time);
-BOOL do_reg_unknown_1a(struct cli_state *cli, POLICY_HND *hnd, uint32 *unk);
-BOOL do_reg_query_info(struct cli_state *cli, POLICY_HND *hnd,
- char *key_value, uint32* key_type);
-BOOL do_reg_set_key_sec(struct cli_state *cli, POLICY_HND *hnd, SEC_DESC_BUF *sec_desc_buf);
-BOOL do_reg_get_key_sec(struct cli_state *cli, POLICY_HND *hnd, uint32 *sec_buf_size, SEC_DESC_BUF **ppsec_desc_buf);
-BOOL do_reg_delete_val(struct cli_state *cli, POLICY_HND *hnd, char *val_name);
-BOOL do_reg_delete_key(struct cli_state *cli, POLICY_HND *hnd, char *key_name);
-BOOL do_reg_create_key(struct cli_state *cli, POLICY_HND *hnd,
- char *key_name, char *key_class,
- SEC_ACCESS *sam_access,
- POLICY_HND *key);
-BOOL do_reg_enum_key(struct cli_state *cli, POLICY_HND *hnd,
- int key_index, char *key_name,
- uint32 *unk_1, uint32 *unk_2,
- time_t *mod_time);
-BOOL do_reg_create_val(struct cli_state *cli, POLICY_HND *hnd,
- char *val_name, uint32 type, BUFFER3 *data);
-BOOL do_reg_enum_val(struct cli_state *cli, POLICY_HND *hnd,
- int val_index, int max_valnamelen, int max_valbufsize,
- fstring val_name,
- uint32 *val_type, BUFFER2 *value);
-BOOL do_reg_open_entry(struct cli_state *cli, POLICY_HND *hnd,
- char *key_name, uint32 unk_0,
- POLICY_HND *key_hnd);
-BOOL do_reg_close(struct cli_state *cli, POLICY_HND *hnd);
-
-/*The following definitions come from rpc_client/cli_samr.c */
-
-BOOL get_samr_query_usergroups(struct cli_state *cli,
- POLICY_HND *pol_open_domain, uint32 user_rid,
- uint32 *num_groups, DOM_GID *gid);
-BOOL get_samr_query_userinfo(struct cli_state *cli,
- POLICY_HND *pol_open_domain,
- uint32 info_level,
- uint32 user_rid, SAM_USER_INFO_21 *usr);
-BOOL do_samr_chgpasswd_user(struct cli_state *cli,
- char *srv_name, char *user_name,
- char nt_newpass[516], uchar nt_oldhash[16],
- char lm_newpass[516], uchar lm_oldhash[16]);
-BOOL do_samr_unknown_38(struct cli_state *cli, char *srv_name);
-BOOL do_samr_query_dom_info(struct cli_state *cli,
- POLICY_HND *domain_pol, uint16 switch_value);
-BOOL do_samr_enum_dom_users(struct cli_state *cli,
- POLICY_HND *pol, uint16 num_entries, uint16 unk_0,
- uint16 acb_mask, uint16 unk_1, uint32 size,
- struct acct_info **sam,
- int *num_sam_users);
-BOOL do_samr_connect(struct cli_state *cli,
- char *srv_name, uint32 unknown_0,
- POLICY_HND *connect_pol);
-BOOL do_samr_open_user(struct cli_state *cli,
- POLICY_HND *pol, uint32 unk_0, uint32 rid,
- POLICY_HND *user_pol);
-BOOL do_samr_open_domain(struct cli_state *cli,
- POLICY_HND *connect_pol, uint32 rid, DOM_SID *sid,
- POLICY_HND *domain_pol);
-BOOL do_samr_query_unknown_12(struct cli_state *cli,
- POLICY_HND *pol, uint32 rid, uint32 num_gids, uint32 *gids,
- uint32 *num_aliases,
- fstring als_names [MAX_LOOKUP_SIDS],
- uint32 num_als_users[MAX_LOOKUP_SIDS]);
-BOOL do_samr_query_usergroups(struct cli_state *cli,
- POLICY_HND *pol, uint32 *num_groups, DOM_GID *gid);
-BOOL do_samr_query_userinfo(struct cli_state *cli,
- POLICY_HND *pol, uint16 switch_value, void* usr);
-BOOL do_samr_close(struct cli_state *cli, POLICY_HND *hnd);
-
-/*The following definitions come from rpc_client/cli_spoolss_notify.c */
-
-BOOL spoolss_disconnect_from_client( struct cli_state *cli);
-BOOL spoolss_connect_to_client( struct cli_state *cli, char *remote_machine);
-BOOL cli_spoolss_reply_open_printer(struct cli_state *cli, char *printer, uint32 localprinter, uint32 type, uint32 *status, POLICY_HND *handle);
-BOOL cli_spoolss_reply_rrpcn(struct cli_state *cli, POLICY_HND *handle,
- uint32 change_low, uint32 change_high, uint32 *status);
-BOOL cli_spoolss_reply_close_printer(struct cli_state *cli, POLICY_HND *handle, uint32 *status);
-
-/*The following definitions come from rpc_client/cli_srvsvc.c */
-
-BOOL do_srv_net_srv_conn_enum(struct cli_state *cli,
- char *server_name, char *qual_name,
- uint32 switch_value, SRV_CONN_INFO_CTR *ctr,
- uint32 preferred_len,
- ENUM_HND *hnd);
-BOOL do_srv_net_srv_sess_enum(struct cli_state *cli,
- char *server_name, char *qual_name,
- uint32 switch_value, SRV_SESS_INFO_CTR *ctr,
- uint32 preferred_len,
- ENUM_HND *hnd);
-BOOL do_srv_net_srv_share_enum(struct cli_state *cli,
- char *server_name,
- uint32 switch_value, SRV_R_NET_SHARE_ENUM *r_o,
- uint32 preferred_len, ENUM_HND *hnd);
-BOOL do_srv_net_srv_file_enum(struct cli_state *cli,
- char *server_name, char *qual_name,
- uint32 switch_value, SRV_FILE_INFO_CTR *ctr,
- uint32 preferred_len,
- ENUM_HND *hnd);
-BOOL do_srv_net_srv_get_info(struct cli_state *cli,
- char *server_name, uint32 switch_value, SRV_INFO_CTR *ctr);
-
-/*The following definitions come from rpc_client/cli_use.c */
-
-void init_cli_use(void);
-void free_cli_use(void);
-struct cli_state *cli_net_use_add(const char *srv_name,
- const struct ntuser_creds *usr_creds,
- BOOL reuse, BOOL *is_new);
-BOOL cli_net_use_del(const char *srv_name,
- const struct ntuser_creds *usr_creds,
- BOOL force_close, BOOL *connection_closed);
-void cli_net_use_enum(uint32 *num_cons, struct use_info ***use);
-void cli_use_wait_keyboard(void);
-
-/*The following definitions come from rpc_client/cli_wkssvc.c */
-
-BOOL do_wks_query_info(struct cli_state *cli,
- char *server_name, uint32 switch_value,
- WKS_INFO_100 *wks100);
-
-/*The following definitions come from rpc_client/ncacn_np_use.c */
-
-BOOL ncacn_np_use_del(const char *srv_name, const char *pipe_name,
- const vuser_key * key,
- BOOL force_close, BOOL *connection_closed);
-struct ncacn_np *ncacn_np_initialise(struct ncacn_np *msrpc,
- const vuser_key * key);
-struct ncacn_np *ncacn_np_use_add(const char *pipe_name,
- const vuser_key * key,
- const char *srv_name,
- const struct ntuser_creds *ntc,
- BOOL reuse, BOOL *is_new_connection);
-#endif /* _PROTO_H_ */
diff --git a/source3/include/sam.h b/source3/include/sam.h
deleted file mode 100644
index f46a6e7bcb..0000000000
--- a/source3/include/sam.h
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM structures
- Copyright (C) Kai Krueger 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Simo Sorce 2002
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Jelmer Vernooij 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#ifndef _SAM_H
-#define _SAM_H
-
-/* We want to track down bugs early */
-#if 1
-#define SAM_ASSERT(x) SMB_ASSERT(x)
-#else
-#define SAM_ASSERT(x) while (0) { \
- if (!(x)) {
- DEBUG(0, ("SAM_ASSERT failed!\n"))
- return NT_STATUS_FAIL_CHECK;\
- } \
- }
-#endif
-
-
-/* let it be 0 until we have a stable interface --metze */
-#define SAM_INTERFACE_VERSION 0
-
-/* use this inside a passdb module */
-#define SAM_MODULE_VERSIONING_MAGIC \
-int sam_version(void)\
-{\
- return SAM_INTERFACE_VERSION;\
-}
-
-/* Backend to use by default when no backend was specified */
-#define SAM_DEFAULT_BACKEND "plugin"
-
-typedef struct sam_domain_handle {
- TALLOC_CTX *mem_ctx;
- uint32 access_granted;
- const struct sam_methods *current_sam_methods; /* sam_methods creating this handle */
- void (*free_fn)(struct sam_domain_handle **);
- struct domain_data {
- DOM_SID sid; /*SID of the domain. Should not be changed */
- char *name; /* Name of the domain */
- char *servername; /* */
- NTTIME max_passwordage; /* time till next password expiration */
- NTTIME min_passwordage; /* time till password can be changed again */
- NTTIME lockout_duration; /* time till login is allowed again after lockout*/
- NTTIME reset_count; /* time till bad login counter is reset */
- uint16 min_passwordlength; /* minimum number of characters for a password */
- uint16 password_history; /* number of passwords stored in history */
- uint16 lockout_count; /* number of bad login attempts before lockout */
- BOOL force_logoff; /* force logoff after logon hours have expired */
- BOOL login_pwdchange; /* Users need to logon to change their password */
- uint32 num_accounts; /* number of accounts in the domain */
- uint32 num_groups; /* number of global groups */
- uint32 num_aliases; /* number of local groups */
- uint32 sam_sequence_number; /* global sequence number */
- } private;
-} SAM_DOMAIN_HANDLE;
-
-typedef struct sam_account_handle {
- TALLOC_CTX *mem_ctx;
- uint32 access_granted;
- const struct sam_methods *current_sam_methods; /* sam_methods creating this handle */
- void (*free_fn)(struct sam_account_handle **);
- struct sam_account_data {
- uint32 init_flag;
- NTTIME logon_time; /* logon time */
- NTTIME logoff_time; /* logoff time */
- NTTIME kickoff_time; /* kickoff time */
- NTTIME pass_last_set_time; /* password last set time */
- NTTIME pass_can_change_time; /* password can change time */
- NTTIME pass_must_change_time; /* password must change time */
- char * account_name; /* account_name string */
- SAM_DOMAIN_HANDLE * domain; /* domain of account */
- char *full_name; /* account's full name string */
- char *unix_home_dir; /* UNIX home directory string */
- char *home_dir; /* home directory string */
- char *dir_drive; /* home directory drive string */
- char *logon_script; /* logon script string */
- char *profile_path; /* profile path string */
- char *acct_desc; /* account description string */
- char *workstations; /* login from workstations string */
- char *unknown_str; /* don't know what this is, yet. */
- char *munged_dial; /* munged path name and dial-back tel number */
- DOM_SID account_sid; /* Primary Account SID */
- DOM_SID group_sid; /* Primary Group SID */
- DATA_BLOB lm_pw; /* .data is Null if no password */
- DATA_BLOB nt_pw; /* .data is Null if no password */
- char *plaintext_pw; /* if Null not available */
- uint16 acct_ctrl; /* account info (ACB_xxxx bit-mask) */
- uint32 unknown_1; /* 0x00ff ffff */
- uint16 logon_divs; /* 168 - number of hours in a week */
- uint32 hours_len; /* normally 21 bytes */
- uint8 hours[MAX_HOURS_LEN];
- uint32 unknown_2; /* 0x0002 0000 */
- uint32 unknown_3; /* 0x0000 04ec */
- } private;
-} SAM_ACCOUNT_HANDLE;
-
-typedef struct sam_group_handle {
- TALLOC_CTX *mem_ctx;
- uint32 access_granted;
- const struct sam_methods *current_sam_methods; /* sam_methods creating this handle */
- void (*free_fn)(struct sam_group_handle **);
- struct sam_group_data {
- char *group_name;
- char *group_desc;
- DOM_SID sid;
- uint16 group_ctrl; /* specifies if the group is a local group or a global group */
- uint32 num_members;
- } private;
-} SAM_GROUP_HANDLE;
-
-
-typedef struct sam_group_member {
- DOM_SID sid;
- BOOL group; /* specifies if it is a group or a account */
-} SAM_GROUP_MEMBER;
-
-typedef struct sam_account_enum {
- DOM_SID sid;
- char *account_name;
- char *full_name;
- char *account_desc;
- uint16 acct_ctrl;
-} SAM_ACCOUNT_ENUM;
-
-typedef struct sam_group_enum {
- DOM_SID sid;
- char *group_name;
- char *group_desc;
- uint16 group_ctrl;
-} SAM_GROUP_ENUM;
-
-
-/* bits for group_ctrl: to spezify if the group is global group or alias */
-#define GCB_LOCAL_GROUP 0x0001
-#define GCB_ALIAS_GROUP (GCB_LOCAL_GROUP |GCB_BUILTIN)
-#define GCB_GLOBAL_GROUP 0x0002
-#define GCB_BUILTIN 0x1000
-
-typedef struct sam_context
-{
- struct sam_methods *methods;
- TALLOC_CTX *mem_ctx;
-
- void (*free_fn)(struct sam_context **);
-} SAM_CONTEXT;
-
-typedef struct sam_methods
-{
- struct sam_context *parent;
- struct sam_methods *next;
- struct sam_methods *prev;
- const char *backendname;
- const char *domain_name;
- DOM_SID domain_sid;
- void *private_data;
-
- /* General API */
-
- NTSTATUS (*sam_get_sec_desc) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd);
- NTSTATUS (*sam_set_sec_desc) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd);
-
- NTSTATUS (*sam_lookup_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, TALLOC_CTX *mem_ctx, const DOM_SID *sid, char **name, uint32 *type);
- NTSTATUS (*sam_lookup_name) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const char *name, DOM_SID *sid, uint32 *type);
-
- /* Domain API */
-
- NTSTATUS (*sam_update_domain) (const struct sam_methods *, const SAM_DOMAIN_HANDLE *domain);
- NTSTATUS (*sam_get_domain_handle) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, SAM_DOMAIN_HANDLE **domain);
-
- /* Account API */
-
- NTSTATUS (*sam_create_account) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account);
- NTSTATUS (*sam_add_account) (const struct sam_methods *, const SAM_ACCOUNT_HANDLE *account);
- NTSTATUS (*sam_update_account) (const struct sam_methods *, const SAM_ACCOUNT_HANDLE *account);
- NTSTATUS (*sam_delete_account) (const struct sam_methods *, const SAM_ACCOUNT_HANDLE *account);
- NTSTATUS (*sam_enum_accounts) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts);
-
- NTSTATUS (*sam_get_account_by_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account);
- NTSTATUS (*sam_get_account_by_name) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_ACCOUNT_HANDLE **account);
-
- /* Group API */
-
- NTSTATUS (*sam_create_group) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *group_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group);
- NTSTATUS (*sam_add_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group);
- NTSTATUS (*sam_update_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group);
- NTSTATUS (*sam_delete_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group);
- NTSTATUS (*sam_enum_groups) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups);
- NTSTATUS (*sam_get_group_by_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group);
- NTSTATUS (*sam_get_group_by_name) (const struct sam_methods *, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group);
-
- NTSTATUS (*sam_add_member_to_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member);
- NTSTATUS (*sam_delete_member_from_group) (const struct sam_methods *, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member);
- NTSTATUS (*sam_enum_groupmembers) (const struct sam_methods *, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members);
-
- NTSTATUS (*sam_get_groups_of_sid) (const struct sam_methods *, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups);
-
- void (*free_private_data)(void **);
-} SAM_METHODS;
-
-typedef NTSTATUS (*sam_init_function)(SAM_METHODS *, const char *);
-
-struct sam_init_function_entry {
- char *module_name;
- /* Function to create a member of the sam_methods list */
- sam_init_function init;
-};
-
-typedef struct sam_backend_entry {
- char *module_name;
- char *module_params;
- char *domain_name;
- DOM_SID *domain_sid;
-} SAM_BACKEND_ENTRY;
-
-
-#endif /* _SAM_H */
diff --git a/source3/include/tdbsam2.h b/source3/include/tdbsam2.h
deleted file mode 100644
index 0ca9d34618..0000000000
--- a/source3/include/tdbsam2.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * tdbsam2 genstruct enabled header file
- * Copyright (C) Simo Sorce 2002
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 675
- * Mass Ave, Cambridge, MA 02139, USA.
- */
-
-
-/* ALL strings assumes UTF8 as encoding */
-
-GENSTRUCT struct tdbsam2_domain_data {
- uint32 xcounter; /* counter to be updated at any change */
-
- SEC_DESC *sec_desc; /* Security Descriptor */
- DOM_SID *user_sid; /* The User SID */
- char *name; _NULLTERM /* NT User Name */
- char *description; _NULLTERM /* Descritpion (Gecos) */
-};
-
-GENSTRUCT struct tdbsam2_user_data {
- uint32 xcounter; /* counter to be updated at any change */
-
- SEC_DESC *sec_desc; /* Security Descriptor */
- DOM_SID *user_sid; /* The User SID */
- char *name; _NULLTERM /* NT User Name */
- char *description; _NULLTERM /* Descritpion (Gecos) */
-
- DOM_SID *group_sid; /* The Primary Group SID */
-
- NTTIME *logon_time;
- NTTIME *logoff_time;
- NTTIME *kickoff_time;
- NTTIME *pass_last_set_time;
- NTTIME *pass_can_change_time;
- NTTIME *pass_must_change_time;
-
- char *full_name; _NULLTERM /* The Full Name */
- char *home_dir; _NULLTERM /* Home Directory */
- char *dir_drive; _NULLTERM /* Drive Letter the home should be mapped to */
- char *logon_script; _NULLTERM /* Logon script path */
- char *profile_path; _NULLTERM /* Profile is stored here */
- char *workstations; _NULLTERM /* List of Workstation names the user is allowed to LogIn */
- char *unknown_str; _NULLTERM /* Guess ... Unknown */
- char *munged_dial; _NULLTERM /* Callback Number */
-
- /* passwords are 16 byte leght, pointer is null if no password */
- uint8 *lm_pw_ptr; _LEN(16) /* Lanman hashed password */
- uint8 *nt_pw_ptr; _LEN(16) /* NT hashed password */
-
- uint16 logon_divs; /* 168 - num of hours in a week */
- uint32 hours_len; /* normally 21 */
- uint8 *hours; _LEN(hours_len) /* normally 21 bytes (depends on hours_len) */
-
- uint32 unknown_3; /* 0x00ff ffff */
- uint32 unknown_5; /* 0x0002 0000 */
- uint32 unknown_6; /* 0x0000 04ec */
-};
-
-GENSTRUCT struct tdbsam2_group_data {
- uint32 xcounter; /* counter to be updated at any change */
-
- SEC_DESC *sec_desc; /* Security Descriptor */
- DOM_SID *group_sid; /* The Group SID */
- char *name; _NULLTERM /* NT User Name */
- char *description; _NULLTERM /* Descritpion (Gecos) */
-
- uint32 count; /* number of sids */
- DOM_SID **members; _LEN(count) /* SID array */
-};
-
-GENSTRUCT struct tdbsam2_privilege_data {
- uint32 xcounter; /* counter to be updated at any change */
-
- LUID_ATTR *privilege; /* Privilege */
- char *name; _NULLTERM /* NT User Name */
- char *description; _NULLTERM /* Descritpion (Gecos) */
-
- uint32 count; /* number of sids */
- DOM_SID **members; _LEN(count) /* SID array */
-};
-
diff --git a/source3/include/version.h b/source3/include/version.h
index c0a1c702f2..15d223fd7f 100644
--- a/source3/include/version.h
+++ b/source3/include/version.h
@@ -1 +1 @@
-#define VERSION "post3.0-HEAD"
+#define VERSION "3.0alpha22cvs"
diff --git a/source3/lib/debug.c b/source3/lib/debug.c
index 83a470872a..2efdd3c2a3 100644
--- a/source3/lib/debug.c
+++ b/source3/lib/debug.c
@@ -625,7 +625,7 @@ BOOL need_to_check_log_size( void )
{
int maxlog;
- if( debug_count < 100 )
+ if( debug_count++ < 100 )
return( False );
maxlog = lp_max_log_size() * 1024;
@@ -710,8 +710,6 @@ void check_log_size( void )
va_list ap;
int old_errno = errno;
- debug_count++;
-
if( stdout_logging )
{
va_start( ap, format_str );
diff --git a/source3/lib/domain_namemap.c b/source3/lib/domain_namemap.c
deleted file mode 100644
index 988f5e5d65..0000000000
--- a/source3/lib/domain_namemap.c
+++ /dev/null
@@ -1,1317 +0,0 @@
-/*
- Unix SMB/Netbios implementation.
- Version 1.9.
- Groupname handling
- Copyright (C) Jeremy Allison 1998.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/*
- * UNIX gid and Local or Domain SID resolution. This module resolves
- * only those entries in the map files, it is *NOT* responsible for
- * resolving UNIX groups not listed: that is an entirely different
- * matter, altogether...
- */
-
-/*
- *
- *
-
- format of the file is:
-
- unixname NT Group name
- unixname Domain Admins (well-known Domain Group)
- unixname DOMAIN_NAME\NT Group name
- unixname OTHER_DOMAIN_NAME\NT Group name
- unixname DOMAIN_NAME\Domain Admins (well-known Domain Group)
- ....
-
- if the DOMAIN_NAME\ component is left off, then your own domain is assumed.
-
- *
- *
- */
-
-
-#include "includes.h"
-extern int DEBUGLEVEL;
-
-extern fstring global_myworkgroup;
-extern DOM_SID global_member_sid;
-extern fstring global_sam_name;
-extern DOM_SID global_sam_sid;
-extern DOM_SID global_sid_S_1_5_20;
-
-/*******************************************************************
- converts UNIX uid to an NT User RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uid_t pwdb_user_rid_to_uid(uint32 user_rid)
-{
- return ((user_rid & (~RID_TYPE_USER))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Group RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_group_rid_to_gid(uint32 group_rid)
-{
- return ((group_rid & (~RID_TYPE_GROUP))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Alias RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_alias_rid_to_gid(uint32 alias_rid)
-{
- return ((alias_rid & (~RID_TYPE_ALIAS))- 1000)/RID_MULTIPLIER;
-}
-
-/*******************************************************************
- converts NT Group RID to a UNIX uid. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_gid_to_group_rid(uint32 gid)
-{
- uint32 grp_rid = ((((gid)*RID_MULTIPLIER) + 1000) | RID_TYPE_GROUP);
- return grp_rid;
-}
-
-/******************************************************************
- converts UNIX gid to an NT Alias RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_gid_to_alias_rid(uint32 gid)
-{
- uint32 alias_rid = ((((gid)*RID_MULTIPLIER) + 1000) | RID_TYPE_ALIAS);
- return alias_rid;
-}
-
-/*******************************************************************
- converts UNIX uid to an NT User RID. NOTE: IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_uid_to_user_rid(uint32 uid)
-{
- uint32 user_rid = ((((uid)*RID_MULTIPLIER) + 1000) | RID_TYPE_USER);
- return user_rid;
-}
-
-/******************************************************************
- converts SID + SID_NAME_USE type to a UNIX id. the Domain SID is,
- and can only be, our own SID.
- ********************************************************************/
-static BOOL pwdb_sam_sid_to_unixid(DOM_SID *sid, uint8 type, uint32 *id)
-{
- DOM_SID tmp_sid;
- uint32 rid;
-
- sid_copy(&tmp_sid, sid);
- sid_split_rid(&tmp_sid, &rid);
- if (!sid_equal(&global_sam_sid, &tmp_sid))
- {
- return False;
- }
-
- switch (type)
- {
- case SID_NAME_USER:
- {
- *id = pwdb_user_rid_to_uid(rid);
- return True;
- }
- case SID_NAME_ALIAS:
- {
- *id = pwdb_alias_rid_to_gid(rid);
- return True;
- }
- case SID_NAME_DOM_GRP:
- case SID_NAME_WKN_GRP:
- {
- *id = pwdb_group_rid_to_gid(rid);
- return True;
- }
- }
- return False;
-}
-
-/******************************************************************
- converts UNIX gid + SID_NAME_USE type to a SID. the Domain SID is,
- and can only be, our own SID.
- ********************************************************************/
-static BOOL pwdb_unixid_to_sam_sid(uint32 id, uint8 type, DOM_SID *sid)
-{
- sid_copy(sid, &global_sam_sid);
- switch (type)
- {
- case SID_NAME_USER:
- {
- sid_append_rid(sid, pwdb_uid_to_user_rid(id));
- return True;
- }
- case SID_NAME_ALIAS:
- {
- sid_append_rid(sid, pwdb_gid_to_alias_rid(id));
- return True;
- }
- case SID_NAME_DOM_GRP:
- case SID_NAME_WKN_GRP:
- {
- sid_append_rid(sid, pwdb_gid_to_group_rid(id));
- return True;
- }
- }
- return False;
-}
-
-/*******************************************************************
- Decides if a RID is a well known RID.
- ********************************************************************/
-static BOOL pwdb_rid_is_well_known(uint32 rid)
-{
- return (rid < 1000);
-}
-
-/*******************************************************************
- determines a rid's type. NOTE: THIS IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-static uint32 pwdb_rid_type(uint32 rid)
-{
- /* lkcl i understand that NT attaches an enumeration to a RID
- * such that it can be identified as either a user, group etc
- * type: SID_ENUM_TYPE.
- */
- if (pwdb_rid_is_well_known(rid))
- {
- /*
- * The only well known user RIDs are DOMAIN_USER_RID_ADMIN
- * and DOMAIN_USER_RID_GUEST.
- */
- if (rid == DOMAIN_USER_RID_ADMIN || rid == DOMAIN_USER_RID_GUEST)
- {
- return RID_TYPE_USER;
- }
- if (DOMAIN_GROUP_RID_ADMINS <= rid && rid <= DOMAIN_GROUP_RID_GUESTS)
- {
- return RID_TYPE_GROUP;
- }
- if (BUILTIN_ALIAS_RID_ADMINS <= rid && rid <= BUILTIN_ALIAS_RID_REPLICATOR)
- {
- return RID_TYPE_ALIAS;
- }
- }
- return (rid & RID_TYPE_MASK);
-}
-
-/*******************************************************************
- checks whether rid is a user rid. NOTE: THIS IS SOMETHING SPECIFIC TO SAMBA
- ********************************************************************/
-BOOL pwdb_rid_is_user(uint32 rid)
-{
- return pwdb_rid_type(rid) == RID_TYPE_USER;
-}
-
-/**************************************************************************
- Groupname map functionality. The code loads a groupname map file and
- (currently) loads it into a linked list. This is slow and memory
- hungry, but can be changed into a more efficient storage format
- if the demands on it become excessive.
-***************************************************************************/
-
-typedef struct name_map
-{
- ubi_slNode next;
- DOM_NAME_MAP grp;
-
-} name_map_entry;
-
-static ubi_slList groupname_map_list;
-static ubi_slList aliasname_map_list;
-static ubi_slList ntusrname_map_list;
-
-static void delete_name_entry(name_map_entry *gmep)
-{
- if (gmep->grp.nt_name)
- {
- free(gmep->grp.nt_name);
- }
- if (gmep->grp.nt_domain)
- {
- free(gmep->grp.nt_domain);
- }
- if (gmep->grp.unix_name)
- {
- free(gmep->grp.unix_name);
- }
- free((char*)gmep);
-}
-
-/**************************************************************************
- Delete all the entries in the name map list.
-***************************************************************************/
-
-static void delete_map_list(ubi_slList *map_list)
-{
- name_map_entry *gmep;
-
- while ((gmep = (name_map_entry *)ubi_slRemHead(map_list )) != NULL)
- {
- delete_name_entry(gmep);
- }
-}
-
-
-/**************************************************************************
- makes a group sid out of a domain sid and a _unix_ gid.
-***************************************************************************/
-static BOOL make_mydomain_sid(DOM_NAME_MAP *grp, DOM_MAP_TYPE type)
-{
- int ret = False;
- fstring sid_str;
-
- if (!map_domain_name_to_sid(&grp->sid, &(grp->nt_domain)))
- {
- DEBUG(0,("make_mydomain_sid: unknown domain %s\n",
- grp->nt_domain));
- return False;
- }
-
- if (sid_equal(&grp->sid, &global_sid_S_1_5_20))
- {
- /*
- * only builtin aliases are recognised in S-1-5-20
- */
- DEBUG(10,("make_mydomain_sid: group %s in builtin domain\n",
- grp->nt_name));
-
- if (lookup_builtin_alias_name(grp->nt_name, "BUILTIN", &grp->sid, &grp->type) != 0x0)
- {
- DEBUG(0,("unix group %s mapped to an unrecognised BUILTIN domain name %s\n",
- grp->unix_name, grp->nt_name));
- return False;
- }
- ret = True;
- }
- else if (lookup_wk_user_name(grp->nt_name, grp->nt_domain, &grp->sid, &grp->type) == 0x0)
- {
- if (type != DOM_MAP_USER)
- {
- DEBUG(0,("well-known NT user %s\\%s listed in wrong map file\n",
- grp->nt_domain, grp->nt_name));
- return False;
- }
- ret = True;
- }
- else if (lookup_wk_group_name(grp->nt_name, grp->nt_domain, &grp->sid, &grp->type) == 0x0)
- {
- if (type != DOM_MAP_DOMAIN)
- {
- DEBUG(0,("well-known NT group %s\\%s listed in wrong map file\n",
- grp->nt_domain, grp->nt_name));
- return False;
- }
- ret = True;
- }
- else
- {
- switch (type)
- {
- case DOM_MAP_USER:
- {
- grp->type = SID_NAME_USER;
- break;
- }
- case DOM_MAP_DOMAIN:
- {
- grp->type = SID_NAME_DOM_GRP;
- break;
- }
- case DOM_MAP_LOCAL:
- {
- grp->type = SID_NAME_ALIAS;
- break;
- }
- }
-
- ret = pwdb_unixid_to_sam_sid(grp->unix_id, grp->type, &grp->sid);
- }
-
- sid_to_string(sid_str, &grp->sid);
- DEBUG(10,("nt name %s\\%s gid %d mapped to %s\n",
- grp->nt_domain, grp->nt_name, grp->unix_id, sid_str));
- return ret;
-}
-
-/**************************************************************************
- makes a group sid out of an nt domain, nt group name or a unix group name.
-***************************************************************************/
-static BOOL unix_name_to_nt_name_info(DOM_NAME_MAP *map, DOM_MAP_TYPE type)
-{
- /*
- * Attempt to get the unix gid_t for this name.
- */
-
- DEBUG(5,("unix_name_to_nt_name_info: unix_name:%s\n", map->unix_name));
-
- if (type == DOM_MAP_USER)
- {
- const struct passwd *pwptr = Get_Pwnam(map->unix_name, False);
- if (pwptr == NULL)
- {
- DEBUG(0,("unix_name_to_nt_name_info: Get_Pwnam for user %s\
-failed. Error was %s.\n", map->unix_name, strerror(errno) ));
- return False;
- }
-
- map->unix_id = (uint32)pwptr->pw_uid;
- }
- else
- {
- struct group *gptr = getgrnam(map->unix_name);
- if (gptr == NULL)
- {
- DEBUG(0,("unix_name_to_nt_name_info: getgrnam for group %s\
-failed. Error was %s.\n", map->unix_name, strerror(errno) ));
- return False;
- }
-
- map->unix_id = (uint32)gptr->gr_gid;
- }
-
- DEBUG(5,("unix_name_to_nt_name_info: unix gid:%d\n", map->unix_id));
-
- /*
- * Now map the name to an NT SID+RID.
- */
-
- if (map->nt_domain != NULL && !strequal(map->nt_domain, global_sam_name))
- {
- /* Must add client-call lookup code here, to
- * resolve remote domain's sid and the group's rid,
- * in that domain.
- *
- * NOTE: it is _incorrect_ to put code here that assumes
- * we are responsible for lookups for foriegn domains' RIDs.
- *
- * for foriegn domains for which we are *NOT* the PDC, all
- * we can be responsible for is the unix gid_t to which
- * the foriegn SID+rid maps to, on this _local_ machine.
- * we *CANNOT* make any short-cuts or assumptions about
- * RIDs in a foriegn domain.
- */
-
- if (!map_domain_name_to_sid(&map->sid, &(map->nt_domain)))
- {
- DEBUG(0,("unix_name_to_nt_name_info: no known sid for %s\n",
- map->nt_domain));
- return False;
- }
- }
-
- return make_mydomain_sid(map, type);
-}
-
-static BOOL make_name_entry(name_map_entry **new_ep,
- char *nt_domain, char *nt_group, char *unix_group,
- DOM_MAP_TYPE type)
-{
- /*
- * Create the list entry and add it onto the list.
- */
-
- DEBUG(5,("make_name_entry:%s,%s,%s\n", nt_domain, nt_group, unix_group));
-
- (*new_ep) = (name_map_entry *)malloc(sizeof(name_map_entry));
- if ((*new_ep) == NULL)
- {
- DEBUG(0,("make_name_entry: malloc fail for name_map_entry.\n"));
- return False;
- }
-
- ZERO_STRUCTP(*new_ep);
-
- (*new_ep)->grp.nt_name = strdup(nt_group );
- (*new_ep)->grp.nt_domain = strdup(nt_domain );
- (*new_ep)->grp.unix_name = strdup(unix_group);
-
- if ((*new_ep)->grp.nt_name == NULL ||
- (*new_ep)->grp.unix_name == NULL)
- {
- DEBUG(0,("make_name_entry: malloc fail for names in name_map_entry.\n"));
- delete_name_entry((*new_ep));
- return False;
- }
-
- /*
- * look up the group names, make the Group-SID and unix gid
- */
-
- if (!unix_name_to_nt_name_info(&(*new_ep)->grp, type))
- {
- delete_name_entry((*new_ep));
- return False;
- }
-
- return True;
-}
-
-/**************************************************************************
- Load a name map file. Sets last accessed timestamp.
-***************************************************************************/
-static ubi_slList *load_name_map(DOM_MAP_TYPE type)
-{
- static time_t groupmap_file_last_modified = (time_t)0;
- static time_t aliasmap_file_last_modified = (time_t)0;
- static time_t ntusrmap_file_last_modified = (time_t)0;
- static BOOL initialised_group = False;
- static BOOL initialised_alias = False;
- static BOOL initialised_ntusr = False;
- char *groupname_map_file = lp_groupname_map();
- char *aliasname_map_file = lp_aliasname_map();
- char *ntusrname_map_file = lp_ntusrname_map();
-
- FILE *fp;
- char *s;
- pstring buf;
- name_map_entry *new_ep;
-
- time_t *file_last_modified = NULL;
- int *initialised = NULL;
- char *map_file = NULL;
- ubi_slList *map_list = NULL;
-
- switch (type)
- {
- case DOM_MAP_DOMAIN:
- {
- file_last_modified = &groupmap_file_last_modified;
- initialised = &initialised_group;
- map_file = groupname_map_file;
- map_list = &groupname_map_list;
-
- break;
- }
- case DOM_MAP_LOCAL:
- {
- file_last_modified = &aliasmap_file_last_modified;
- initialised = &initialised_alias;
- map_file = aliasname_map_file;
- map_list = &aliasname_map_list;
-
- break;
- }
- case DOM_MAP_USER:
- {
- file_last_modified = &ntusrmap_file_last_modified;
- initialised = &initialised_ntusr;
- map_file = ntusrname_map_file;
- map_list = &ntusrname_map_list;
-
- break;
- }
- }
-
- if (!(*initialised))
- {
- DEBUG(10,("initialising map %s\n", map_file));
- ubi_slInitList(map_list);
- (*initialised) = True;
- }
-
- if (!*map_file)
- {
- return map_list;
- }
-
- /*
- * Load the file.
- */
-
- fp = open_file_if_modified(map_file, "r", file_last_modified);
- if (!fp)
- {
- return map_list;
- }
-
- /*
- * Throw away any previous list.
- */
- delete_map_list(map_list);
-
- DEBUG(4,("load_name_map: Scanning name map %s\n",map_file));
-
- while ((s = fgets_slash(buf, sizeof(buf), fp)) != NULL)
- {
- pstring unixname;
- pstring nt_name;
- fstring nt_domain;
- fstring ntname;
- char *p;
-
- DEBUG(10,("Read line |%s|\n", s));
-
- memset(nt_name, 0, sizeof(nt_name));
-
- if (!*s || strchr("#;",*s))
- continue;
-
- if (!next_token(&s,unixname, "\t\n\r=", sizeof(unixname)))
- continue;
-
- if (!next_token(&s,nt_name, "\t\n\r=", sizeof(nt_name)))
- continue;
-
- trim_string(unixname, " ", " ");
- trim_string(nt_name, " ", " ");
-
- if (!*nt_name)
- continue;
-
- if (!*unixname)
- continue;
-
- p = strchr(nt_name, '\\');
-
- if (p == NULL)
- {
- memset(nt_domain, 0, sizeof(nt_domain));
- fstrcpy(ntname, nt_name);
- }
- else
- {
- *p = 0;
- p++;
- fstrcpy(nt_domain, nt_name);
- fstrcpy(ntname , p);
- }
-
- if (make_name_entry(&new_ep, nt_domain, ntname, unixname, type))
- {
- ubi_slAddTail(map_list, (ubi_slNode *)new_ep);
- DEBUG(5,("unixname = %s, ntname = %s\\%s type = %d\n",
- new_ep->grp.unix_name,
- new_ep->grp.nt_domain,
- new_ep->grp.nt_name,
- new_ep->grp.type));
- }
- }
-
- DEBUG(10,("load_name_map: Added %ld entries to name map.\n",
- ubi_slCount(map_list)));
-
- fclose(fp);
-
- return map_list;
-}
-
-static void copy_grp_map_entry(DOM_NAME_MAP *grp, const DOM_NAME_MAP *from)
-{
- sid_copy(&grp->sid, &from->sid);
- grp->unix_id = from->unix_id;
- grp->nt_name = from->nt_name;
- grp->nt_domain = from->nt_domain;
- grp->unix_name = from->unix_name;
- grp->type = from->type;
-}
-
-#if 0
-/***********************************************************
- Lookup unix name.
-************************************************************/
-static BOOL map_unixname(DOM_MAP_TYPE type,
- char *unixname, DOM_NAME_MAP *grp_info)
-{
- name_map_entry *gmep;
- ubi_slList *map_list;
-
- /*
- * Initialise and load if not already loaded.
- */
- map_list = load_name_map(type);
-
- for (gmep = (name_map_entry *)ubi_slFirst(map_list);
- gmep != NULL;
- gmep = (name_map_entry *)ubi_slNext(gmep ))
- {
- if (strequal(gmep->grp.unix_name, unixname))
- {
- copy_grp_map_entry(grp_info, &gmep->grp);
- DEBUG(7,("map_unixname: Mapping unix name %s to nt group %s.\n",
- gmep->grp.unix_name, gmep->grp.nt_name ));
- return True;
- }
- }
-
- return False;
-}
-
-#endif
-
-/***********************************************************
- Lookup nt name.
-************************************************************/
-static BOOL map_ntname(DOM_MAP_TYPE type, char *ntname, char *ntdomain,
- DOM_NAME_MAP *grp_info)
-{
- name_map_entry *gmep;
- ubi_slList *map_list;
-
- /*
- * Initialise and load if not already loaded.
- */
- map_list = load_name_map(type);
-
- for (gmep = (name_map_entry *)ubi_slFirst(map_list);
- gmep != NULL;
- gmep = (name_map_entry *)ubi_slNext(gmep ))
- {
- if (strequal(gmep->grp.nt_name , ntname) &&
- strequal(gmep->grp.nt_domain, ntdomain))
- {
- copy_grp_map_entry(grp_info, &gmep->grp);
- DEBUG(7,("map_ntname: Mapping unix name %s to nt name %s.\n",
- gmep->grp.unix_name, gmep->grp.nt_name ));
- return True;
- }
- }
-
- return False;
-}
-
-
-/***********************************************************
- Lookup by SID
-************************************************************/
-static BOOL map_sid(DOM_MAP_TYPE type,
- DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
- name_map_entry *gmep;
- ubi_slList *map_list;
-
- /*
- * Initialise and load if not already loaded.
- */
- map_list = load_name_map(type);
-
- for (gmep = (name_map_entry *)ubi_slFirst(map_list);
- gmep != NULL;
- gmep = (name_map_entry *)ubi_slNext(gmep ))
- {
- if (sid_equal(&gmep->grp.sid, psid))
- {
- copy_grp_map_entry(grp_info, &gmep->grp);
- DEBUG(7,("map_sid: Mapping unix name %s to nt name %s.\n",
- gmep->grp.unix_name, gmep->grp.nt_name ));
- return True;
- }
- }
-
- return False;
-}
-
-/***********************************************************
- Lookup by gid_t.
-************************************************************/
-static BOOL map_unixid(DOM_MAP_TYPE type, uint32 unix_id, DOM_NAME_MAP *grp_info)
-{
- name_map_entry *gmep;
- ubi_slList *map_list;
-
- /*
- * Initialise and load if not already loaded.
- */
- map_list = load_name_map(type);
-
- for (gmep = (name_map_entry *)ubi_slFirst(map_list);
- gmep != NULL;
- gmep = (name_map_entry *)ubi_slNext(gmep ))
- {
- fstring sid_str;
- sid_to_string(sid_str, &gmep->grp.sid);
- DEBUG(10,("map_unixid: enum entry unix group %s %d nt %s %s\n",
- gmep->grp.unix_name, gmep->grp.unix_id, gmep->grp.nt_name, sid_str));
- if (gmep->grp.unix_id == unix_id)
- {
- copy_grp_map_entry(grp_info, &gmep->grp);
- DEBUG(7,("map_unixid: Mapping unix name %s to nt name %s type %d\n",
- gmep->grp.unix_name, gmep->grp.nt_name, gmep->grp.type));
- return True;
- }
- }
-
- return False;
-}
-
-/***********************************************************
- *
- * Call four functions to resolve unix group ids and either
- * local group SIDs or domain group SIDs listed in the local group
- * or domain group map files.
- *
- * Note that it is *NOT* the responsibility of these functions to
- * resolve entries that are not in the map files.
- *
- * Any SID can be in the map files (i.e from any Domain).
- *
- ***********************************************************/
-
-#if 0
-
-/***********************************************************
- Lookup a UNIX Group entry by name.
-************************************************************/
-BOOL map_unix_group_name(char *group_name, DOM_NAME_MAP *grp_info)
-{
- return map_unixname(DOM_MAP_DOMAIN, group_name, grp_info);
-}
-
-/***********************************************************
- Lookup a UNIX Alias entry by name.
-************************************************************/
-BOOL map_unix_alias_name(char *alias_name, DOM_NAME_MAP *grp_info)
-{
- return map_unixname(DOM_MAP_LOCAL, alias_name, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias name entry
-************************************************************/
-BOOL map_nt_alias_name(char *ntalias_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
- return map_ntname(DOM_MAP_LOCAL, ntalias_name, nt_domain, grp_info);
-}
-
-/***********************************************************
- Lookup a Group entry
-************************************************************/
-BOOL map_nt_group_name(char *ntgroup_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
- return map_ntname(DOM_MAP_DOMAIN, ntgroup_name, nt_domain, grp_info);
-}
-
-#endif
-
-/***********************************************************
- Lookup a Username entry by name.
-************************************************************/
-static BOOL map_nt_username(char *nt_name, char *nt_domain, DOM_NAME_MAP *grp_info)
-{
- return map_ntname(DOM_MAP_USER, nt_name, nt_domain, grp_info);
-}
-
-/***********************************************************
- Lookup a Username entry by SID.
-************************************************************/
-static BOOL map_username_sid(DOM_SID *sid, DOM_NAME_MAP *grp_info)
-{
- return map_sid(DOM_MAP_USER, sid, grp_info);
-}
-
-/***********************************************************
- Lookup a Username SID entry by uid.
-************************************************************/
-static BOOL map_username_uid(uid_t gid, DOM_NAME_MAP *grp_info)
-{
- return map_unixid(DOM_MAP_USER, (uint32)gid, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias SID entry by name.
-************************************************************/
-BOOL map_alias_sid(DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
- return map_sid(DOM_MAP_LOCAL, psid, grp_info);
-}
-
-/***********************************************************
- Lookup a Group entry by sid.
-************************************************************/
-BOOL map_group_sid(DOM_SID *psid, DOM_NAME_MAP *grp_info)
-{
- return map_sid(DOM_MAP_DOMAIN, psid, grp_info);
-}
-
-/***********************************************************
- Lookup an Alias SID entry by gid_t.
-************************************************************/
-static BOOL map_alias_gid(gid_t gid, DOM_NAME_MAP *grp_info)
-{
- return map_unixid(DOM_MAP_LOCAL, (uint32)gid, grp_info);
-}
-
-/***********************************************************
- Lookup a Group SID entry by gid_t.
-************************************************************/
-static BOOL map_group_gid( gid_t gid, DOM_NAME_MAP *grp_info)
-{
- return map_unixid(DOM_MAP_DOMAIN, (uint32)gid, grp_info);
-}
-
-
-/************************************************************************
- Routine to look up User details by UNIX name
-*************************************************************************/
-BOOL lookupsmbpwnam(const char *unix_usr_name, DOM_NAME_MAP *grp)
-{
- uid_t uid;
- DEBUG(10,("lookupsmbpwnam: unix user name %s\n", unix_usr_name));
- if (nametouid(unix_usr_name, &uid))
- {
- return lookupsmbpwuid(uid, grp);
- }
- else
- {
- return False;
- }
-}
-
-/************************************************************************
- Routine to look up a remote nt name
-*************************************************************************/
-static BOOL lookup_remote_ntname(const char *ntname, DOM_SID *sid, uint8 *type)
-{
- struct cli_state cli;
- POLICY_HND lsa_pol;
- fstring srv_name;
- extern struct ntuser_creds *usr_creds;
- struct ntuser_creds usr;
-
- BOOL res3 = True;
- BOOL res4 = True;
- uint32 num_sids;
- DOM_SID *sids;
- uint8 *types;
- char *names[1];
-
- usr_creds = &usr;
-
- ZERO_STRUCT(usr);
- pwd_set_nullpwd(&usr.pwd);
-
- DEBUG(5,("lookup_remote_ntname: %s\n", ntname));
-
- if (!cli_connect_serverlist(&cli, lp_passwordserver()))
- {
- return False;
- }
-
- names[0] = ntname;
-
- fstrcpy(srv_name, "\\\\");
- fstrcat(srv_name, cli.desthost);
- strupper(srv_name);
-
- /* lookup domain controller; receive a policy handle */
- res3 = res3 ? lsa_open_policy( srv_name,
- &lsa_pol, True) : False;
-
- /* send lsa lookup sids call */
- res4 = res3 ? lsa_lookup_names( &lsa_pol,
- 1, names,
- &sids, &types, &num_sids) : False;
-
- res3 = res3 ? lsa_close(&lsa_pol) : False;
-
- if (res4 && res3 && sids != NULL && types != NULL)
- {
- sid_copy(sid, &sids[0]);
- *type = types[0];
- }
- else
- {
- res3 = False;
- }
- if (types != NULL)
- {
- free(types);
- }
-
- if (sids != NULL)
- {
- free(sids);
- }
-
- return res3 && res4;
-}
-
-/************************************************************************
- Routine to look up a remote nt name
-*************************************************************************/
-static BOOL get_sid_and_type(const char *fullntname, uint8 expected_type,
- DOM_NAME_MAP *gmep)
-{
- /*
- * check with the PDC to see if it owns the name. if so,
- * the SID is resolved with the PDC database.
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
- if (lookup_remote_ntname(fullntname, &gmep->sid, &gmep->type))
- {
- if (sid_front_equal(&gmep->sid, &global_member_sid) &&
- strequal(gmep->nt_domain, global_myworkgroup) &&
- gmep->type == expected_type)
- {
- return True;
- }
- return False;
- }
- }
-
- /*
- * ... otherwise, it's one of ours. map the sid ourselves,
- * which can only happen in our own SAM database.
- */
-
- if (!strequal(gmep->nt_domain, global_sam_name))
- {
- return False;
- }
- if (!pwdb_unixid_to_sam_sid(gmep->unix_id, gmep->type, &gmep->sid))
- {
- return False;
- }
-
- return True;
-}
-
-/*
- * used by lookup functions below
- */
-
-static fstring nt_name;
-static fstring unix_name;
-static fstring nt_domain;
-
-/*************************************************************************
- looks up a uid, returns User Information.
-*************************************************************************/
-BOOL lookupsmbpwuid(uid_t uid, DOM_NAME_MAP *gmep)
-{
- DEBUG(10,("lookupsmbpwuid: unix uid %d\n", uid));
- if (map_username_uid(uid, gmep))
- {
- return True;
- }
-#if 0
- if (lp_server_role() != ROLE_DOMAIN_NONE)
-#endif
- {
- gmep->nt_name = nt_name;
- gmep->unix_name = unix_name;
- gmep->nt_domain = nt_domain;
-
- gmep->unix_id = (uint32)uid;
-
- /*
- * ok, assume it's one of ours. then double-check it
- * if we are a member of a domain
- */
-
- gmep->type = SID_NAME_USER;
- fstrcpy(gmep->nt_name, uidtoname(uid));
- fstrcpy(gmep->unix_name, gmep->nt_name);
-
- /*
- * here we should do a LsaLookupNames() call
- * to check the status of the name with the PDC.
- * if the PDC know nothing of the name, it's ours.
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
-#if 0
- lsa_lookup_names(global_myworkgroup, gmep->nt_name, &gmep->sid...);
-#endif
- }
-
- /*
- * ok, it's one of ours.
- */
-
- gmep->nt_domain = global_sam_name;
- pwdb_unixid_to_sam_sid(gmep->unix_id, gmep->type, &gmep->sid);
-
- return True;
- }
-
- /* oops. */
-
- return False;
-}
-
-/*************************************************************************
- looks up by NT name, returns User Information.
-*************************************************************************/
-BOOL lookupsmbpwntnam(const char *fullntname, DOM_NAME_MAP *gmep)
-{
- DEBUG(10,("lookupsmbpwntnam: nt user name %s\n", fullntname));
-
- if (!split_domain_name(fullntname, nt_domain, nt_name))
- {
- return False;
- }
-
- if (map_nt_username(nt_name, nt_domain, gmep))
- {
- return True;
- }
- if (lp_server_role() != ROLE_DOMAIN_NONE)
- {
- uid_t uid;
- gmep->nt_name = nt_name;
- gmep->unix_name = unix_name;
- gmep->nt_domain = nt_domain;
-
- /*
- * ok, it's one of ours. we therefore "create" an nt user named
- * after the unix user. this is the point where "appliance mode"
- * should get its teeth in, as unix users won't really exist,
- * they will only be numbers...
- */
-
- gmep->type = SID_NAME_USER;
- fstrcpy(gmep->unix_name, gmep->nt_name);
- if (!nametouid(gmep->unix_name, &uid))
- {
- return False;
- }
- gmep->unix_id = (uint32)uid;
-
- return get_sid_and_type(fullntname, gmep->type, gmep);
- }
-
- /* oops. */
-
- return False;
-}
-
-/*************************************************************************
- looks up by RID, returns User Information.
-*************************************************************************/
-BOOL lookupsmbpwsid(DOM_SID *sid, DOM_NAME_MAP *gmep)
-{
- fstring sid_str;
- sid_to_string(sid_str, sid);
- DEBUG(10,("lookupsmbpwsid: nt sid %s\n", sid_str));
-
- if (map_username_sid(sid, gmep))
- {
- return True;
- }
- if (lp_server_role() != ROLE_DOMAIN_NONE)
- {
- gmep->nt_name = nt_name;
- gmep->unix_name = unix_name;
- gmep->nt_domain = nt_domain;
-
- /*
- * here we should do a LsaLookupNames() call
- * to check the status of the name with the PDC.
- * if the PDC know nothing of the name, it's ours.
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
-#if 0
- if (lookup_remote_sid(global_myworkgroup, gmep->sid, gmep->nt_name, gmep->nt_domain...);
-#endif
- }
-
- /*
- * ok, it's one of ours. we therefore "create" an nt user named
- * after the unix user. this is the point where "appliance mode"
- * should get its teeth in, as unix users won't really exist,
- * they will only be numbers...
- */
-
- gmep->type = SID_NAME_USER;
- sid_copy(&gmep->sid, sid);
- if (!pwdb_sam_sid_to_unixid(&gmep->sid, gmep->type, &gmep->unix_id))
- {
- return False;
- }
- fstrcpy(gmep->nt_name, uidtoname((uid_t)gmep->unix_id));
- fstrcpy(gmep->unix_name, gmep->nt_name);
- gmep->nt_domain = global_sam_name;
-
- return True;
- }
-
- /* oops. */
-
- return False;
-}
-
-/************************************************************************
- Routine to look up group / alias / well-known group RID by UNIX name
-*************************************************************************/
-BOOL lookupsmbgrpnam(const char *unix_grp_name, DOM_NAME_MAP *grp)
-{
- gid_t gid;
- DEBUG(10,("lookupsmbgrpnam: unix user group %s\n", unix_grp_name));
- if (nametogid(unix_grp_name, &gid))
- {
- return lookupsmbgrpgid(gid, grp);
- }
- else
- {
- return False;
- }
-}
-
-/*************************************************************************
- looks up a SID, returns name map entry
-*************************************************************************/
-BOOL lookupsmbgrpsid(DOM_SID *sid, DOM_NAME_MAP *gmep)
-{
- fstring sid_str;
- sid_to_string(sid_str, sid);
- DEBUG(10,("lookupsmbgrpsid: nt sid %s\n", sid_str));
-
- if (map_alias_sid(sid, gmep))
- {
- return True;
- }
- if (map_group_sid(sid, gmep))
- {
- return True;
- }
- if (lp_server_role() != ROLE_DOMAIN_NONE)
- {
- gmep->nt_name = nt_name;
- gmep->unix_name = unix_name;
- gmep->nt_domain = nt_domain;
-
- /*
- * here we should do a LsaLookupNames() call
- * to check the status of the name with the PDC.
- * if the PDC know nothing of the name, it's ours.
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
-#if 0
- lsa_lookup_sids(global_myworkgroup, gmep->sid, gmep->nt_name, gmep->nt_domain...);
-#endif
- }
-
- /*
- * ok, it's one of ours. we therefore "create" an nt group or
- * alias name named after the unix group. this is the point
- * where "appliance mode" should get its teeth in, as unix
- * groups won't really exist, they will only be numbers...
- */
-
- /* name is not explicitly mapped
- * with map files or the PDC
- * so we are responsible for it...
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
- /* ... as a LOCAL group. */
- gmep->type = SID_NAME_ALIAS;
- }
- else
- {
- /* ... as a DOMAIN group. */
- gmep->type = SID_NAME_DOM_GRP;
- }
-
- sid_copy(&gmep->sid, sid);
- if (!pwdb_sam_sid_to_unixid(&gmep->sid, gmep->type, &gmep->unix_id))
- {
- return False;
- }
- fstrcpy(gmep->nt_name, gidtoname((gid_t)gmep->unix_id));
- fstrcpy(gmep->unix_name, gmep->nt_name);
- gmep->nt_domain = global_sam_name;
-
- return True;
- }
-
- /* oops */
- return False;
-}
-
-/*************************************************************************
- looks up a gid, returns RID and type local, domain or well-known domain group
-*************************************************************************/
-BOOL lookupsmbgrpgid(gid_t gid, DOM_NAME_MAP *gmep)
-{
- DEBUG(10,("lookupsmbgrpgid: unix gid %d\n", (int)gid));
- if (map_alias_gid(gid, gmep))
- {
- return True;
- }
- if (map_group_gid(gid, gmep))
- {
- return True;
- }
- if (lp_server_role() != ROLE_DOMAIN_NONE)
- {
- gmep->nt_name = nt_name;
- gmep->unix_name = unix_name;
- gmep->nt_domain = nt_domain;
-
- gmep->unix_id = (uint32)gid;
-
- /*
- * here we should do a LsaLookupNames() call
- * to check the status of the name with the PDC.
- * if the PDC know nothing of the name, it's ours.
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
-#if 0
- if (lsa_lookup_names(global_myworkgroup, gmep->nt_name, &gmep->sid...);
- {
- return True;
- }
-#endif
- }
-
- /*
- * ok, it's one of ours. we therefore "create" an nt group or
- * alias name named after the unix group. this is the point
- * where "appliance mode" should get its teeth in, as unix
- * groups won't really exist, they will only be numbers...
- */
-
- /* name is not explicitly mapped
- * with map files or the PDC
- * so we are responsible for it...
- */
-
- if (lp_server_role() == ROLE_DOMAIN_MEMBER)
- {
- /* ... as a LOCAL group. */
- gmep->type = SID_NAME_ALIAS;
- }
- else
- {
- /* ... as a DOMAIN group. */
- gmep->type = SID_NAME_DOM_GRP;
- }
- fstrcpy(gmep->nt_name, gidtoname(gid));
- fstrcpy(gmep->unix_name, gmep->nt_name);
-
- return get_sid_and_type(gmep->nt_name, gmep->type, gmep);
- }
-
- /* oops */
- return False;
-}
-
diff --git a/source3/lib/genparser.c b/source3/lib/genparser.c
deleted file mode 100644
index 9fa9dbd33b..0000000000
--- a/source3/lib/genparser.c
+++ /dev/null
@@ -1,775 +0,0 @@
-/*
- Copyright (C) Andrew Tridgell <genstruct@tridgell.net> 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/*
- automatic marshalling/unmarshalling system for C structures
-*/
-
-#include "includes.h"
-
-/* see if a range of memory is all zero. Used to prevent dumping of zero elements */
-static int all_zero(const char *ptr, unsigned size)
-{
- int i;
- if (!ptr) return 1;
- for (i=0;i<size;i++) {
- if (ptr[i]) return 0;
- }
- return 1;
-}
-
-/* encode a buffer of bytes into a escaped string */
-static char *encode_bytes(const char *ptr, unsigned len)
-{
- const char *hexdig = "0123456789abcdef";
- char *ret, *p;
- unsigned i;
- ret = malloc(len*3 + 1); /* worst case size */
- if (!ret) return NULL;
- for (p=ret,i=0;i<len;i++) {
- if (isalnum(ptr[i]) || isspace(ptr[i]) ||
- (ispunct(ptr[i]) && !strchr("\\{}", ptr[i]))) {
- *p++ = ptr[i];
- } else {
- unsigned char c = *(unsigned char *)(ptr+i);
- if (c == 0 && all_zero(ptr+i, len-i)) break;
- p[0] = '\\';
- p[1] = hexdig[c>>4];
- p[2] = hexdig[c&0xF];
- p += 3;
- }
- }
-
- *p = 0;
-
- return ret;
-}
-
-/* decode an escaped string from encode_bytes() into a buffer */
-static char *decode_bytes(const char *s, unsigned *len)
-{
- char *ret, *p;
- unsigned i;
- ret = calloc(1, strlen(s)+1); /* worst case length */
-
- if (*s == '{') s++;
-
- for (p=ret,i=0;s[i];i++) {
- if (s[i] == '}') {
- break;
- } else if (s[i] == '\\') {
- unsigned v;
- if (sscanf(&s[i+1], "%02x", &v) != 1 || v > 255) {
- free(ret);
- return NULL;
- }
- *(unsigned char *)p = v;
- p++;
- i += 2;
- } else {
- *p++ = s[i];
- }
- }
- *p = 0;
-
- (*len) = (unsigned)(p - ret);
-
- return ret;
-}
-
-/* the add*() functions deal with adding things to a struct
- parse_string */
-
-/* allocate more space if needed */
-static int addgen_alloc(struct parse_string *p, int n)
-{
- if (p->length + n <= p->allocated) return 0;
- p->allocated = p->length + n + 200;
- p->s = realloc(p->s, p->allocated);
- if (!p->s) {
- errno = ENOMEM;
- return -1;
- }
- return 0;
-}
-
-/* add a character to the buffer */
-static int addchar(struct parse_string *p, char c)
-{
- if (addgen_alloc(p, 2) != 0) {
- return -1;
- }
- p->s[p->length++] = c;
- p->s[p->length] = 0;
- return 0;
-}
-
-/* add a string to the buffer */
-int addstr(struct parse_string *p, const char *s)
-{
- int len = strlen(s);
- if (addgen_alloc(p, len+1) != 0) {
- return -1;
- }
- memcpy(p->s + p->length, s, len+1);
- p->length += len;
- return 0;
-}
-
-/* add a string to the buffer with a tab prefix */
-static int addtabbed(struct parse_string *p, const char *s, unsigned indent)
-{
- int len = strlen(s);
- if (addgen_alloc(p, indent+len+1) != 0) {
- return -1;
- }
- while (indent--) {
- p->s[p->length++] = '\t';
- }
- memcpy(p->s + p->length, s, len+1);
- p->length += len;
- return 0;
-}
-
-/* note! this can only be used for results up to 60 chars wide! */
-int addshort(struct parse_string *p, const char *fmt, ...)
-{
- char buf[60];
- int n;
- va_list ap;
- va_start(ap, fmt);
- n = vsnprintf(buf, sizeof(buf), fmt, ap);
- va_end(ap);
- if (addgen_alloc(p, n + 1) != 0) {
- return -1;
- }
- if (n != 0) {
- memcpy(p->s + p->length, buf, n);
- }
- p->length += n;
- p->s[p->length] = 0;
- return 0;
-}
-
-/*
- this is here to make it easier for people to write dump functions
- for their own types
- */
-int gen_addgen(struct parse_string *p, const char *fmt, ...)
-{
- char *buf = NULL;
- int n;
- va_list ap;
- va_start(ap, fmt);
- n = vasprintf(&buf, fmt, ap);
- va_end(ap);
- if (addgen_alloc(p, n + 1) != 0) {
- if (buf) free(buf);
- return -1;
- }
- if (n != 0) {
- memcpy(p->s + p->length, buf, n);
- }
- p->length += n;
- p->s[p->length] = 0;
- if (buf) free(buf);
- return 0;
-}
-
-/* dump a enumerated type */
-int gen_dump_enum(const struct enum_struct *einfo,
- struct parse_string *p,
- const char *ptr,
- unsigned indent)
-{
- unsigned v = *(unsigned *)ptr;
- int i;
- for (i=0;einfo[i].name;i++) {
- if (v == einfo[i].value) {
- addstr(p, einfo[i].name);
- return 0;
- }
- }
- /* hmm, maybe we should just fail? */
- return gen_dump_unsigned(p, ptr, indent);
-}
-
-/* dump a single non-array element, hanlding struct and enum */
-static int gen_dump_one(struct parse_string *p,
- const struct parse_struct *pinfo,
- const char *ptr,
- unsigned indent)
-{
- if (pinfo->dump_fn == gen_dump_char && pinfo->ptr_count == 1) {
- char *s = encode_bytes(ptr, strlen(ptr));
- if (addchar(p,'{') ||
- addstr(p, s) ||
- addstr(p, "}")) {
- free(s);
- return -1;
- }
- return 0;
- }
-
- return pinfo->dump_fn(p, ptr, indent);
-}
-
-/* handle dumping of an array of arbitrary type */
-static int gen_dump_array(struct parse_string *p,
- const struct parse_struct *pinfo,
- const char *ptr,
- int array_len,
- int indent)
-{
- int i, count=0;
-
- /* special handling of fixed length strings */
- if (array_len != 0 &&
- pinfo->ptr_count == 0 &&
- pinfo->dump_fn == gen_dump_char) {
- char *s = encode_bytes(ptr, array_len);
- if (!s) return -1;
- if (addtabbed(p, pinfo->name, indent) ||
- addstr(p, " = {") ||
- addstr(p, s) ||
- addstr(p, "}\n")) {
- free(s);
- return -1;
- }
- free(s);
- return 0;
- }
-
- for (i=0;i<array_len;i++) {
- const char *p2 = ptr;
- unsigned size = pinfo->size;
-
- /* generic pointer dereference */
- if (pinfo->ptr_count) {
- p2 = *(const char **)ptr;
- size = sizeof(void *);
- }
-
- if ((count || pinfo->ptr_count) &&
- !(pinfo->flags & FLAG_ALWAYS) &&
- all_zero(ptr, size)) {
- ptr += size;
- continue;
- }
- if (count == 0) {
- if (addtabbed(p, pinfo->name, indent) ||
- addshort(p, " = %u:", i)) {
- return -1;
- }
- } else {
- if (addshort(p, ", %u:", i) != 0) {
- return -1;
- }
- }
- if (gen_dump_one(p, pinfo, p2, indent) != 0) {
- return -1;
- }
- ptr += size;
- count++;
- }
- if (count) {
- return addstr(p, "\n");
- }
- return 0;
-}
-
-/* find a variable by name in a loaded structure and return its value
- as an integer. Used to support dynamic arrays */
-static int find_var(const struct parse_struct *pinfo,
- const char *data,
- const char *var)
-{
- int i;
- const char *ptr;
-
- /* this allows for constant lengths */
- if (isdigit(*var)) {
- return atoi(var);
- }
-
- for (i=0;pinfo[i].name;i++) {
- if (strcmp(pinfo[i].name, var) == 0) break;
- }
- if (!pinfo[i].name) return -1;
-
- ptr = data + pinfo[i].offset;
-
- switch (pinfo[i].size) {
- case sizeof(int):
- return *(int *)ptr;
- case sizeof(char):
- return *(char *)ptr;
- }
-
- return -1;
-}
-
-
-int gen_dump_struct(const struct parse_struct *pinfo,
- struct parse_string *p,
- const char *ptr,
- unsigned indent)
-{
- char *s = gen_dump(pinfo, ptr, indent+1);
- if (!s) return -1;
- if (addstr(p, "{\n") ||
- addstr(p,s) ||
- addtabbed(p,"}", indent)) {
- free(s);
- return -1;
- }
- free(s);
- return 0;
-}
-
-static int gen_dump_string(struct parse_string *p,
- const struct parse_struct *pinfo,
- const char *data,
- unsigned indent)
-{
- const char *ptr = *(char **)data;
- char *s = encode_bytes(ptr, strlen(ptr));
- if (addtabbed(p, pinfo->name, indent) ||
- addstr(p, " = ") ||
- addchar(p,'{') ||
- addstr(p, s) ||
- addstr(p, "}\n")) {
- free(s);
- return -1;
- }
- return 0;
-}
-
-/*
- find the length of a nullterm array
-*/
-static int len_nullterm(const char *ptr, int size, int array_len)
-{
- int len;
-
- if (size == 1) {
- len = strnlen(ptr, array_len);
- } else {
- for (len=0;len<array_len;len++) {
- if (all_zero(ptr+len*size, size)) break;
- }
- }
-
- if (len == 0) len = 1;
-
- return len;
-}
-
-
-/* the generic dump routine. Scans the parse information for this structure
- and processes it recursively */
-char *gen_dump(const struct parse_struct *pinfo,
- const char *data,
- unsigned indent)
-{
- struct parse_string p;
- int i;
-
- p.length = 0;
- p.allocated = 0;
- p.s = NULL;
-
- if (addstr(&p, "") != 0) {
- return NULL;
- }
-
- for (i=0;pinfo[i].name;i++) {
- const char *ptr = data + pinfo[i].offset;
- unsigned size = pinfo[i].size;
-
- if (pinfo[i].ptr_count) {
- size = sizeof(void *);
- }
-
- /* special handling for array types */
- if (pinfo[i].array_len) {
- unsigned len = pinfo[i].array_len;
- if (pinfo[i].flags & FLAG_NULLTERM) {
- len = len_nullterm(ptr, size, len);
- }
- if (gen_dump_array(&p, &pinfo[i], ptr,
- len, indent)) {
- goto failed;
- }
- continue;
- }
-
- /* and dynamically sized arrays */
- if (pinfo[i].dynamic_len) {
- int len = find_var(pinfo, data, pinfo[i].dynamic_len);
- struct parse_struct p2 = pinfo[i];
- if (len < 0) {
- goto failed;
- }
- if (len > 0) {
- if (pinfo[i].flags & FLAG_NULLTERM) {
- len = len_nullterm(*(char **)ptr,
- pinfo[i].size, len);
- }
- p2.ptr_count--;
- p2.dynamic_len = NULL;
- if (gen_dump_array(&p, &p2, *(char **)ptr,
- len, indent) != 0) {
- goto failed;
- }
- }
- continue;
- }
-
- /* don't dump zero elements */
- if (!(pinfo[i].flags & FLAG_ALWAYS) && all_zero(ptr, size)) continue;
-
- /* assume char* is a null terminated string */
- if (pinfo[i].size == 1 && pinfo[i].ptr_count == 1 &&
- pinfo[i].dump_fn == gen_dump_char) {
- if (gen_dump_string(&p, &pinfo[i], ptr, indent) != 0) {
- goto failed;
- }
- continue;
- }
-
- /* generic pointer dereference */
- if (pinfo[i].ptr_count) {
- ptr = *(const char **)ptr;
- }
-
- if (addtabbed(&p, pinfo[i].name, indent) ||
- addstr(&p, " = ") ||
- gen_dump_one(&p, &pinfo[i], ptr, indent) ||
- addstr(&p, "\n")) {
- goto failed;
- }
- }
- return p.s;
-
-failed:
- free(p.s);
- return NULL;
-}
-
-/* search for a character in a string, skipping over sections within
- matching braces */
-static char *match_braces(char *s, char c)
-{
- int depth = 0;
- while (*s) {
- switch (*s) {
- case '}':
- depth--;
- break;
- case '{':
- depth++;
- break;
- }
- if (depth == 0 && *s == c) {
- return s;
- }
- s++;
- }
- return s;
-}
-
-/* parse routine for enumerated types */
-int gen_parse_enum(const struct enum_struct *einfo,
- char *ptr,
- const char *str)
-{
- unsigned v;
- int i;
-
- if (isdigit(*str)) {
- if (sscanf(str, "%u", &v) != 1) {
- errno = EINVAL;
- return -1;
- }
- *(unsigned *)ptr = v;
- return 0;
- }
-
- for (i=0;einfo[i].name;i++) {
- if (strcmp(einfo[i].name, str) == 0) {
- *(unsigned *)ptr = einfo[i].value;
- return 0;
- }
- }
-
- /* unknown enum value?? */
- return -1;
-}
-
-
-/* parse all base types */
-static int gen_parse_base(const struct parse_struct *pinfo,
- char *ptr,
- const char *str)
-{
- if (pinfo->parse_fn == gen_parse_char && pinfo->ptr_count==1) {
- unsigned len;
- char *s = decode_bytes(str, &len);
- if (!s) return -1;
- *(char **)ptr = s;
- return 0;
- }
-
- if (pinfo->ptr_count) {
- struct parse_struct p2 = *pinfo;
- *(void **)ptr = calloc(1, pinfo->ptr_count>1?sizeof(void *):pinfo->size);
- if (! *(void **)ptr) {
- return -1;
- }
- ptr = *(char **)ptr;
- p2.ptr_count--;
- return gen_parse_base(&p2, ptr, str);
- }
-
- return pinfo->parse_fn(ptr, str);
-}
-
-/* parse a generic array */
-static int gen_parse_array(const struct parse_struct *pinfo,
- char *ptr,
- const char *str,
- int array_len)
-{
- char *p, *p2;
- unsigned size = pinfo->size;
-
- /* special handling of fixed length strings */
- if (array_len != 0 &&
- pinfo->ptr_count == 0 &&
- pinfo->dump_fn == gen_dump_char) {
- unsigned len = 0;
- char *s = decode_bytes(str, &len);
- if (!s) return -1;
- memset(ptr, 0, array_len);
- memcpy(ptr, s, len);
- free(s);
- return 0;
- }
-
- if (pinfo->ptr_count) {
- size = sizeof(void *);
- }
-
- while (*str) {
- unsigned idx;
- int done;
-
- idx = atoi(str);
- p = strchr(str,':');
- if (!p) break;
- p++;
- p2 = match_braces(p, ',');
- done = (*p2 != ',');
- *p2 = 0;
-
- if (*p == '{') {
- p++;
- p[strlen(p)-1] = 0;
- }
-
- if (gen_parse_base(pinfo, ptr + idx*size, p) != 0) {
- return -1;
- }
-
- if (done) break;
- str = p2+1;
- }
-
- return 0;
-}
-
-/* parse one element, hanlding dynamic and static arrays */
-static int gen_parse_one(const struct parse_struct *pinfo,
- const char *name,
- char *data,
- const char *str)
-{
- int i;
- for (i=0;pinfo[i].name;i++) {
- if (strcmp(pinfo[i].name, name) == 0) {
- break;
- }
- }
- if (pinfo[i].name == NULL) {
- return 0;
- }
-
- if (pinfo[i].array_len) {
- return gen_parse_array(&pinfo[i], data+pinfo[i].offset,
- str, pinfo[i].array_len);
- }
-
- if (pinfo[i].dynamic_len) {
- int len = find_var(pinfo, data, pinfo[i].dynamic_len);
- if (len < 0) {
- errno = EINVAL;
- return -1;
- }
- if (len > 0) {
- unsigned size;
- struct parse_struct p2 = pinfo[i];
- char *ptr;
- size = pinfo[i].ptr_count>1?sizeof(void*):pinfo[i].size;
- ptr = calloc(len, size);
- if (!ptr) {
- errno = ENOMEM;
- return -1;
- }
- *((char **)(data + pinfo[i].offset)) = ptr;
- p2.ptr_count--;
- p2.dynamic_len = NULL;
- return gen_parse_array(&p2, ptr, str, len);
- }
- return 0;
- }
-
- return gen_parse_base(&pinfo[i], data + pinfo[i].offset, str);
-}
-
-int gen_parse_struct(const struct parse_struct *pinfo, char *ptr, const char *str)
-{
- return gen_parse(pinfo, ptr, str);
-}
-
-/* the main parse routine */
-int gen_parse(const struct parse_struct *pinfo, char *data, const char *s)
-{
- char *str, *s0;
-
- s0 = strdup(s);
- str = s0;
-
- while (*str) {
- char *p;
- char *name;
- char *value;
-
- /* skip leading whitespace */
- while (isspace(*str)) str++;
-
- p = strchr(str, '=');
- if (!p) break;
- value = p+1;
- while (p > str && isspace(*(p-1))) {
- p--;
- }
-
- *p = 0;
- name = str;
-
- while (isspace(*value)) value++;
-
- if (*value == '{') {
- str = match_braces(value, '}');
- value++;
- } else {
- str = match_braces(value, '\n');
- }
-
- *str++ = 0;
-
- if (gen_parse_one(pinfo, name, data, value) != 0) {
- free(s0);
- return -1;
- }
- }
-
- free(s0);
- return 0;
-}
-
-
-
-/* for convenience supply some standard dumpers and parsers here */
-
-int gen_parse_char(char *ptr, const char *str)
-{
- *(unsigned char *)ptr = atoi(str);
- return 0;
-}
-
-int gen_parse_int(char *ptr, const char *str)
-{
- *(int *)ptr = atoi(str);
- return 0;
-}
-
-int gen_parse_unsigned(char *ptr, const char *str)
-{
- *(unsigned *)ptr = strtoul(str, NULL, 10);
- return 0;
-}
-
-int gen_parse_time_t(char *ptr, const char *str)
-{
- *(time_t *)ptr = strtoul(str, NULL, 10);
- return 0;
-}
-
-int gen_parse_double(char *ptr, const char *str)
-{
- *(double *)ptr = atof(str);
- return 0;
-}
-
-int gen_parse_float(char *ptr, const char *str)
-{
- *(float *)ptr = atof(str);
- return 0;
-}
-
-int gen_dump_char(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(p, "%u", *(unsigned char *)(ptr));
-}
-
-int gen_dump_int(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(p, "%d", *(int *)(ptr));
-}
-
-int gen_dump_unsigned(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(p, "%u", *(unsigned *)(ptr));
-}
-
-int gen_dump_time_t(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(p, "%u", *(time_t *)(ptr));
-}
-
-int gen_dump_double(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(p, "%lg", *(double *)(ptr));
-}
-
-int gen_dump_float(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(p, "%g", *(float *)(ptr));
-}
diff --git a/source3/lib/genparser_samba.c b/source3/lib/genparser_samba.c
deleted file mode 100644
index 6c700d1094..0000000000
--- a/source3/lib/genparser_samba.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- Copyright (C) Andrew Tridgell <genstruct@tridgell.net> 2002
- Copyright (C) Simo Sorce <idra@samba.org> 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "genparser_samba.h"
-
-/* PARSE functions */
-
-int gen_parse_uint8(char *ptr, const char *str)
-{
- *(uint8 *)ptr = atoi(str);
- return 0;
-}
-
-int gen_parse_uint16(char *ptr, const char *str)
-{
- *(uint16 *)ptr = atoi(str);
- return 0;
-}
-
-int gen_parse_uint32(char *ptr, const char *str)
-{
- *(uint32 *)ptr = strtoul(str, NULL, 10);
- return 0;
-}
-
-int gen_parse_NTTIME(char *ptr, const char *str)
-{
- if(sscanf(str, "%u,%u", &(((NTTIME *)(ptr))->high), &(((NTTIME *)(ptr))->low)) != 2) {
- errno = EINVAL;
- return -1;
- }
- return 0;
-}
-
-int gen_parse_DOM_SID(char *ptr, const char *str)
-{
- if(!string_to_sid((DOM_SID *)ptr, str)) return -1;
- return 0;
-}
-
-int gen_parse_SEC_ACCESS(char *ptr, const char *str)
-{
- ((SEC_ACCESS *)ptr)->mask = strtoul(str, NULL, 10);
- return 0;
-}
-
-int gen_parse_GUID(char *ptr, const char *str)
-{
- int info[GUID_SIZE];
- int i;
- char *sc;
- char *p;
- char *m;
-
- m = strdup(str);
- if (!m) return -1;
- sc = m;
-
- memset(info, 0, sizeof(info));
- for (i = 0; i < GUID_SIZE; i++) {
- p = strchr(sc, ',');
- if (p != NULL) p = '\0';
- info[i] = atoi(sc);
- if (p != NULL) sc = p + 1;
- }
- free(m);
-
- for (i = 0; i < GUID_SIZE; i++) {
- ((GUID *)ptr)->info[i] = info[i];
- }
-
- return 0;
-}
-
-int gen_parse_SEC_ACE(char *ptr, const char *str)
-{
- return gen_parse_struct(pinfo_security_ace_info, ptr, str);
-}
-
-int gen_parse_SEC_ACL(char *ptr, const char *str)
-{
- return gen_parse_struct(pinfo_security_acl_info, ptr, str);
-}
-
-int gen_parse_SEC_DESC(char *ptr, const char *str)
-{
- return gen_parse_struct(pinfo_security_descriptor_info, ptr, str);
-}
-
-int gen_parse_LUID_ATTR(char *ptr, const char *str)
-{
- return gen_parse_struct(pinfo_luid_attr_info, ptr, str);
-}
-
-int gen_parse_LUID(char *ptr, const char *str)
-{
- if(sscanf(str, "%u,%u", &(((LUID *)(ptr))->high), &(((LUID *)(ptr))->low)) != 2) {
- errno = EINVAL;
- return -1;
- }
- return 0;
-}
-
-
-
-/* DUMP functions */
-
-int gen_dump_uint8(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(p, "%u", *(uint8 *)(ptr));
-}
-
-int gen_dump_uint16(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(p, "%u", *(uint16 *)(ptr));
-}
-
-int gen_dump_uint32(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(p, "%u", *(uint32 *)(ptr));
-}
-
-int gen_dump_NTTIME(struct parse_string *p, const char *ptr, unsigned indent)
-{
- uint32 low, high;
-
- high = ((NTTIME *)(ptr))->high;
- low = ((NTTIME *)(ptr))->low;
- return addshort(p, "%u,%u", high, low);
-}
-
-int gen_dump_DOM_SID(struct parse_string *p, const char *ptr, unsigned indent)
-{
- fstring sidstr;
-
- sid_to_string(sidstr, (DOM_SID *)ptr);
- return addstr(p, sidstr);
-}
-
-int gen_dump_SEC_ACCESS(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return addshort(p, "%u", ((SEC_ACCESS *)ptr)->mask);
-}
-
-int gen_dump_GUID(struct parse_string *p, const char *ptr, unsigned indent)
-{
- int i, r;
-
- for (i = 0; i < (GUID_SIZE - 1); i++) {
- if (!(r = addshort(p, "%d,", ((GUID *)ptr)->info[i]))) return r;
- }
- return addshort(p, "%d", ((GUID *)ptr)->info[i]);
-}
-
-int gen_dump_SEC_ACE(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return gen_dump_struct(pinfo_security_ace_info, p, ptr, indent);
-}
-
-int gen_dump_SEC_ACL(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return gen_dump_struct(pinfo_security_acl_info, p, ptr, indent);
-}
-
-int gen_dump_SEC_DESC(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return gen_dump_struct(pinfo_security_descriptor_info, p, ptr, indent);
-}
-
-int gen_dump_LUID_ATTR(struct parse_string *p, const char *ptr, unsigned indent)
-{
- return gen_dump_struct(pinfo_luid_attr_info, p, ptr, indent);
-}
-
-int gen_dump_LUID(struct parse_string *p, const char *ptr, unsigned indent)
-{
- uint32 low, high;
-
- high = ((LUID *)(ptr))->high;
- low = ((LUID *)(ptr))->low;
- return addshort(p, "%u,%u", high, low);
-}
-
diff --git a/source3/lib/iconv.c b/source3/lib/iconv.c
index 5292e9cf0a..43350d9349 100644
--- a/source3/lib/iconv.c
+++ b/source3/lib/iconv.c
@@ -2,7 +2,6 @@
Unix SMB/CIFS implementation.
minimal iconv implementation
Copyright (C) Andrew Tridgell 2001
- Copyright (C) Jelmer Vernooij 2002
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,51 +24,31 @@ static size_t ascii_pull(void *,char **, size_t *, char **, size_t *);
static size_t ascii_push(void *,char **, size_t *, char **, size_t *);
static size_t utf8_pull(void *,char **, size_t *, char **, size_t *);
static size_t utf8_push(void *,char **, size_t *, char **, size_t *);
+static size_t weird_pull(void *,char **, size_t *, char **, size_t *);
+static size_t weird_push(void *,char **, size_t *, char **, size_t *);
static size_t ucs2hex_pull(void *,char **, size_t *, char **, size_t *);
static size_t ucs2hex_push(void *,char **, size_t *, char **, size_t *);
static size_t iconv_copy(void *,char **, size_t *, char **, size_t *);
-static struct charset_functions builtin_functions[] = {
+/*
+ for each charset we have a function that pulls from that charset to
+ a ucs2 buffer, and a function that pushes to a ucs2 buffer
+*/
+static struct {
+ char *name;
+ size_t (*pull)(void *, char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft);
+ size_t (*push)(void *, char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft);
+} charsets[] = {
{"UCS-2LE", iconv_copy, iconv_copy},
{"UTF8", utf8_pull, utf8_push},
{"ASCII", ascii_pull, ascii_push},
+ {"WEIRD", weird_pull, weird_push},
{"UCS2-HEX", ucs2hex_pull, ucs2hex_push},
{NULL, NULL, NULL}
};
-static struct charset_functions *charsets = NULL;
-
-BOOL smb_register_charset(struct charset_functions *funcs)
-{
- struct charset_functions *c = charsets;
-
- DEBUG(5, ("Attempting to register new charset %s\n", funcs->name));
- /* Check whether we already have this charset... */
- while(c) {
- if(!strcasecmp(c->name, funcs->name)){
- DEBUG(2, ("Duplicate charset %s, not registering\n", funcs->name));
- return False;
- }
- c = c->next;
- }
-
- funcs->next = funcs->prev = NULL;
- DEBUG(5, ("Registered charset %s\n", funcs->name));
- DLIST_ADD(charsets, funcs);
- return True;
-}
-
-void lazy_initialize_iconv(void)
-{
- static BOOL initialized = False;
- int i;
-
- if (!initialized) {
- initialized = True;
- for(i = 0; builtin_functions[i].name; i++)
- smb_register_charset(&builtin_functions[i]);
- }
-}
/* if there was an error then reset the internal state,
this ensures that we don't have a shift state remaining for
@@ -136,11 +115,7 @@ size_t smb_iconv(smb_iconv_t cd,
smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
{
smb_iconv_t ret;
- struct charset_functions *from, *to;
-
- lazy_initialize_iconv();
- from = charsets;
- to = charsets;
+ int from, to;
ret = (smb_iconv_t)malloc(sizeof(*ret));
if (!ret) {
@@ -158,52 +133,48 @@ smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
return ret;
}
- while (from) {
- if (strcasecmp(from->name, fromcode) == 0) break;
- from = from->next;
+ for (from=0; charsets[from].name; from++) {
+ if (strcasecmp(charsets[from].name, fromcode) == 0) break;
}
-
- while (to) {
- if (strcasecmp(to->name, tocode) == 0) break;
- to = to->next;
+ for (to=0; charsets[to].name; to++) {
+ if (strcasecmp(charsets[to].name, tocode) == 0) break;
}
#ifdef HAVE_NATIVE_ICONV
- if (!from) {
+ if (!charsets[from].name) {
ret->pull = sys_iconv;
ret->cd_pull = iconv_open("UCS-2LE", fromcode);
if (ret->cd_pull == (iconv_t)-1) goto failed;
}
-
- if (!to) {
+ if (!charsets[to].name) {
ret->push = sys_iconv;
ret->cd_push = iconv_open(tocode, "UCS-2LE");
if (ret->cd_push == (iconv_t)-1) goto failed;
}
#else
- if (!from || !to) {
+ if (!charsets[from].name || !charsets[to].name) {
goto failed;
}
#endif
/* check for conversion to/from ucs2 */
- if (strcasecmp(fromcode, "UCS-2LE") == 0 && to) {
- ret->direct = to->push;
+ if (from == 0 && charsets[to].name) {
+ ret->direct = charsets[to].push;
return ret;
}
- if (strcasecmp(tocode, "UCS-2LE") == 0 && from) {
- ret->direct = from->pull;
+ if (to == 0 && charsets[from].name) {
+ ret->direct = charsets[from].pull;
return ret;
}
#ifdef HAVE_NATIVE_ICONV
- if (strcasecmp(fromcode, "UCS-2LE") == 0) {
+ if (from == 0) {
ret->direct = sys_iconv;
ret->cd_direct = ret->cd_push;
ret->cd_push = NULL;
return ret;
}
- if (strcasecmp(tocode, "UCS-2LE") == 0) {
+ if (to == 0) {
ret->direct = sys_iconv;
ret->cd_direct = ret->cd_pull;
ret->cd_pull = NULL;
@@ -212,8 +183,8 @@ smb_iconv_t smb_iconv_open(const char *tocode, const char *fromcode)
#endif
/* the general case has to go via a buffer */
- if (!ret->pull) ret->pull = from->pull;
- if (!ret->push) ret->push = to->push;
+ if (!ret->pull) ret->pull = charsets[from].pull;
+ if (!ret->push) ret->push = charsets[to].push;
return ret;
failed:
@@ -381,6 +352,111 @@ static size_t ucs2hex_push(void *cd, char **inbuf, size_t *inbytesleft,
}
+/* the "weird" character set is very useful for testing multi-byte
+ support and finding bugs. Don't use on a production system!
+*/
+static struct {
+ char from;
+ char *to;
+ int len;
+} weird_table[] = {
+ {'q', "^q^", 3},
+ {'Q', "^Q^", 3},
+ {0, NULL}
+};
+
+static size_t weird_pull(void *cd, char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft)
+{
+ while (*inbytesleft >= 1 && *outbytesleft >= 2) {
+ int i;
+ int done = 0;
+ for (i=0;weird_table[i].from;i++) {
+ if (strncmp((*inbuf),
+ weird_table[i].to,
+ weird_table[i].len) == 0) {
+ if (*inbytesleft < weird_table[i].len) {
+ DEBUG(0,("ERROR: truncated weird string\n"));
+ /* smb_panic("weird_pull"); */
+
+ } else {
+ (*outbuf)[0] = weird_table[i].from;
+ (*outbuf)[1] = 0;
+ (*inbytesleft) -= weird_table[i].len;
+ (*outbytesleft) -= 2;
+ (*inbuf) += weird_table[i].len;
+ (*outbuf) += 2;
+ done = 1;
+ break;
+ }
+ }
+ }
+ if (done) continue;
+ (*outbuf)[0] = (*inbuf)[0];
+ (*outbuf)[1] = 0;
+ (*inbytesleft) -= 1;
+ (*outbytesleft) -= 2;
+ (*inbuf) += 1;
+ (*outbuf) += 2;
+ }
+
+ if (*inbytesleft > 0) {
+ errno = E2BIG;
+ return -1;
+ }
+
+ return 0;
+}
+
+static size_t weird_push(void *cd, char **inbuf, size_t *inbytesleft,
+ char **outbuf, size_t *outbytesleft)
+{
+ int ir_count=0;
+
+ while (*inbytesleft >= 2 && *outbytesleft >= 1) {
+ int i;
+ int done=0;
+ for (i=0;weird_table[i].from;i++) {
+ if ((*inbuf)[0] == weird_table[i].from &&
+ (*inbuf)[1] == 0) {
+ if (*outbytesleft < weird_table[i].len) {
+ DEBUG(0,("No room for weird character\n"));
+ /* smb_panic("weird_push"); */
+ } else {
+ memcpy(*outbuf, weird_table[i].to,
+ weird_table[i].len);
+ (*inbytesleft) -= 2;
+ (*outbytesleft) -= weird_table[i].len;
+ (*inbuf) += 2;
+ (*outbuf) += weird_table[i].len;
+ done = 1;
+ break;
+ }
+ }
+ }
+ if (done) continue;
+
+ (*outbuf)[0] = (*inbuf)[0];
+ if ((*inbuf)[1]) ir_count++;
+ (*inbytesleft) -= 2;
+ (*outbytesleft) -= 1;
+ (*inbuf) += 2;
+ (*outbuf) += 1;
+ }
+
+ if (*inbytesleft == 1) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (*inbytesleft > 1) {
+ errno = E2BIG;
+ return -1;
+ }
+
+ return ir_count;
+}
+
static size_t iconv_copy(void *cd, char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft)
{
diff --git a/source3/lib/util.c b/source3/lib/util.c
index 13f5b17781..d13d993da7 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -4,7 +4,6 @@
Copyright (C) Andrew Tridgell 1992-1998
Copyright (C) Jeremy Allison 2001-2002
Copyright (C) Simo Sorce 2001
- Copyright (C) Anthony Liguori 2003
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -249,7 +248,13 @@ BOOL init_names(void)
int n;
if (global_myname() == NULL || *global_myname() == '\0') {
- if (!set_global_myname(myhostname())) {
+ fstring name;
+
+ fstrcpy( name, myhostname() );
+ p = strchr( name, '.' );
+ if (p)
+ *p = 0;
+ if (!set_global_myname(name)) {
DEBUG( 0, ( "init_structs: malloc fail.\n" ) );
return False;
}
@@ -1008,7 +1013,7 @@ BOOL get_myfullname(char *my_name)
Get my own domain name.
****************************************************************************/
-BOOL get_mydomname(fstring my_domname)
+BOOL get_mydomname(char *my_domname)
{
pstring hostname;
char *p;
@@ -1724,23 +1729,6 @@ BOOL is_myname_or_ipaddr(const char *s)
}
/*******************************************************************
- Is the name specified our workgroup/domain.
- Returns true if it is equal, false otherwise.
-********************************************************************/
-
-BOOL is_myworkgroup(const char *s)
-{
- BOOL ret = False;
-
- if (strequal(s, lp_workgroup())) {
- ret=True;
- }
-
- DEBUG(8, ("is_myworkgroup(\"%s\") returns %d\n", s, ret));
- return(ret);
-}
-
-/*******************************************************************
Set the horrid remote_arch string based on an enum.
********************************************************************/
@@ -2194,17 +2182,6 @@ char *lib_path(const char *name)
return fname;
}
-/**
- * @brief Returns the platform specific shared library extension.
- *
- * @retval Pointer to a static #fstring containing the extension.
- **/
-
-const char *shlib_ext(void)
-{
- return dyn_SHLIBEXT;
-}
-
/*******************************************************************
Given a filename - get its directory name
NB: Returned in static storage. Caveats:
diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c
index 3c34df6f33..799bc64cc6 100644
--- a/source3/lib/util_str.c
+++ b/source3/lib/util_str.c
@@ -1535,100 +1535,6 @@ void rfc1738_unescape(char *buf)
}
}
-static const char *b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-/***************************************************************************
-decode a base64 string into a DATA_BLOB - simple and slow algorithm
- ***************************************************************************/
-DATA_BLOB base64_decode_data_blob(const char *s)
-{
- int bit_offset, byte_offset, idx, i, n;
- DATA_BLOB decoded = data_blob(s, strlen(s)+1);
- unsigned char *d = decoded.data;
- char *p;
-
- n=i=0;
-
- while (*s && (p=strchr_m(b64,*s))) {
- idx = (int)(p - b64);
- byte_offset = (i*6)/8;
- bit_offset = (i*6)%8;
- d[byte_offset] &= ~((1<<(8-bit_offset))-1);
- if (bit_offset < 3) {
- d[byte_offset] |= (idx << (2-bit_offset));
- n = byte_offset+1;
- } else {
- d[byte_offset] |= (idx >> (bit_offset-2));
- d[byte_offset+1] = 0;
- d[byte_offset+1] |= (idx << (8-(bit_offset-2))) & 0xFF;
- n = byte_offset+2;
- }
- s++; i++;
- }
-
- /* fix up length */
- decoded.length = n;
- return decoded;
-}
-
-/***************************************************************************
-decode a base64 string in-place - wrapper for the above
-***************************************************************************/
-void base64_decode(char *s)
-{
- DATA_BLOB decoded = base64_decode_data_blob(s);
- memcpy(s, decoded.data, decoded.length);
- data_blob_free(&decoded);
-
- /* null terminate */
- s[decoded.length] = '\0';
-}
-
-/***************************************************************************
-encode a base64 string into a malloc()ed string caller to free.
-
-From SQUID: adopted from http://ftp.sunet.se/pub2/gnu/vm/base64-encode.c with adjustments
-***************************************************************************/
-char * base64_encode_data_blob(DATA_BLOB data)
-{
- int bits = 0;
- int char_count = 0;
- int out_cnt = 0;
- size_t len = data.length;
- size_t output_len = data.length * 2;
- char *result = malloc(output_len); /* get us plenty of space */
-
- while (len-- && out_cnt < (data.length * 2) - 5) {
- int c = (unsigned char) *(data.data++);
- bits += c;
- char_count++;
- if (char_count == 3) {
- result[out_cnt++] = b64[bits >> 18];
- result[out_cnt++] = b64[(bits >> 12) & 0x3f];
- result[out_cnt++] = b64[(bits >> 6) & 0x3f];
- result[out_cnt++] = b64[bits & 0x3f];
- bits = 0;
- char_count = 0;
- } else {
- bits <<= 8;
- }
- }
- if (char_count != 0) {
- bits <<= 16 - (8 * char_count);
- result[out_cnt++] = b64[bits >> 18];
- result[out_cnt++] = b64[(bits >> 12) & 0x3f];
- if (char_count == 1) {
- result[out_cnt++] = '=';
- result[out_cnt++] = '=';
- } else {
- result[out_cnt++] = b64[(bits >> 6) & 0x3f];
- result[out_cnt++] = '=';
- }
- }
- result[out_cnt] = '\0'; /* terminate */
- return result;
-}
-
#ifdef VALGRIND
size_t valgrind_strlen(const char *s)
{
diff --git a/source3/libads/ads_utils.c b/source3/libads/ads_utils.c
index 626c177926..750940e336 100644
--- a/source3/libads/ads_utils.c
+++ b/source3/libads/ads_utils.c
@@ -89,52 +89,6 @@ uint32 ads_uf2atype(uint32 uf)
}
/*
-translated the GROUP_CTRL Flags to GroupType (groupType)
-*/
-uint32 ads_gcb2gtype(uint16 gcb)
-{
- uint32 gtype = 0x00000000;
-
- if (gcb & GCB_ALIAS_GROUP) gtype |= GTYPE_SECURITY_BUILTIN_LOCAL_GROUP;
- else if(gcb & GCB_LOCAL_GROUP) gtype |= GTYPE_SECURITY_DOMAIN_LOCAL_GROUP;
- if (gcb & GCB_GLOBAL_GROUP) gtype |= GTYPE_SECURITY_GLOBAL_GROUP;
-
- return gtype;
-}
-
-/*
-translated the GroupType (groupType) to GROUP_CTRL Flags
-*/
-uint16 ads_gtype2gcb(uint32 gtype)
-{
- uint16 gcb = 0x0000;
-
- switch(gtype) {
- case GTYPE_SECURITY_BUILTIN_LOCAL_GROUP:
- gcb = GCB_ALIAS_GROUP;
- break;
- case GTYPE_SECURITY_DOMAIN_LOCAL_GROUP:
- gcb = GCB_LOCAL_GROUP;
- break;
- case GTYPE_SECURITY_GLOBAL_GROUP:
- gcb = GCB_GLOBAL_GROUP;
- break;
-
- case GTYPE_DISTRIBUTION_GLOBAL_GROUP:
- gcb = GCB_GLOBAL_GROUP;
- break;
- case GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP:
- gcb = GCB_LOCAL_GROUP;
- break;
- case GTYPE_DISTRIBUTION_UNIVERSAL_GROUP:
- gcb = GCB_GLOBAL_GROUP;
- break;
- }
-
- return gcb;
-}
-
-/*
get the accountType from the groupType
*/
uint32 ads_gtype2atype(uint32 gtype)
diff --git a/source3/libads/kerberos_verify.c b/source3/libads/kerberos_verify.c
index c1402b1370..268326fca9 100644
--- a/source3/libads/kerberos_verify.c
+++ b/source3/libads/kerberos_verify.c
@@ -36,17 +36,13 @@ NTSTATUS ads_verify_ticket(ADS_STRUCT *ads, const DATA_BLOB *ticket,
krb5_keytab keytab = NULL;
krb5_data packet;
krb5_ticket *tkt = NULL;
- krb5_data salt;
- krb5_encrypt_block eblock;
- int ret, i;
+ int ret;
krb5_keyblock * key;
krb5_principal host_princ;
char *host_princ_s;
fstring myname;
char *password_s;
krb5_data password;
- krb5_enctype *enctypes = NULL;
- BOOL auth_ok = False;
if (!secrets_init()) {
DEBUG(1,("secrets_init failed\n"));
@@ -71,6 +67,7 @@ NTSTATUS ads_verify_ticket(ADS_STRUCT *ads, const DATA_BLOB *ticket,
ret = krb5_set_default_realm(context, ads->auth.realm);
if (ret) {
DEBUG(1,("krb5_set_default_realm failed (%s)\n", error_message(ret)));
+ ads_destroy(&ads);
return NT_STATUS_LOGON_FAILURE;
}
@@ -92,59 +89,32 @@ NTSTATUS ads_verify_ticket(ADS_STRUCT *ads, const DATA_BLOB *ticket,
return NT_STATUS_LOGON_FAILURE;
}
- ret = krb5_principal2salt(context, host_princ, &salt);
- if (ret) {
- DEBUG(1,("krb5_principal2salt failed (%s)\n", error_message(ret)));
- return NT_STATUS_LOGON_FAILURE;
- }
-
if (!(key = (krb5_keyblock *)malloc(sizeof(*key)))) {
return NT_STATUS_NO_MEMORY;
}
- if ((ret = krb5_get_permitted_enctypes(context, &enctypes))) {
- DEBUG(1,("krb5_get_permitted_enctypes failed (%s)\n",
- error_message(ret)));
+ if (create_kerberos_key_from_string(context, host_princ, &password, key)) {
+ SAFE_FREE(key);
return NT_STATUS_LOGON_FAILURE;
}
+
+ krb5_auth_con_setuseruserkey(context, auth_context, key);
- /* we need to setup a auth context with each possible encoding type in turn */
- for (i=0;enctypes[i];i++) {
- krb5_use_enctype(context, &eblock, enctypes[i]);
-
- ret = krb5_string_to_key(context, &eblock, key, &password, &salt);
- if (ret) {
- continue;
- }
-
- krb5_auth_con_setuseruserkey(context, auth_context, key);
-
- packet.length = ticket->length;
- packet.data = (krb5_pointer)ticket->data;
+ packet.length = ticket->length;
+ packet.data = (krb5_pointer)ticket->data;
- if (!(ret = krb5_rd_req(context, &auth_context, &packet,
- NULL, keytab, NULL, &tkt))) {
- krb5_free_ktypes(context, enctypes);
- auth_ok = True;
- break;
- }
- }
+#if 0
+ file_save("/tmp/ticket.dat", ticket->data, ticket->length);
+#endif
- if (!auth_ok) {
+ if ((ret = krb5_rd_req(context, &auth_context, &packet,
+ NULL, keytab, NULL, &tkt))) {
DEBUG(3,("krb5_rd_req with auth failed (%s)\n",
error_message(ret)));
return NT_STATUS_LOGON_FAILURE;
}
-#if 0
- file_save("/tmp/ticket.dat", ticket->data, ticket->length);
-#endif
-
-
- if (tkt->enc_part2) {
- *auth_data = data_blob(tkt->enc_part2->authorization_data[0]->contents,
- tkt->enc_part2->authorization_data[0]->length);
- }
+ get_auth_data_from_tkt(auth_data, tkt);
#if 0
if (tkt->enc_part2) {
@@ -154,7 +124,7 @@ NTSTATUS ads_verify_ticket(ADS_STRUCT *ads, const DATA_BLOB *ticket,
}
#endif
- if ((ret = krb5_unparse_name(context, tkt->enc_part2->client, principal))) {
+ if ((ret = krb5_unparse_name(context, get_principal_from_tkt(tkt), principal))) {
DEBUG(3,("krb5_unparse_name failed (%s)\n",
error_message(ret)));
return NT_STATUS_LOGON_FAILURE;
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index 389b7a1733..b758af41c4 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -465,8 +465,7 @@ static BOOL cli_session_setup_ntlmssp(struct cli_state *cli, const char *user,
neg_flags = NTLMSSP_NEGOTIATE_UNICODE |
NTLMSSP_NEGOTIATE_128 |
- NTLMSSP_NEGOTIATE_NTLM |
- NTLMSSP_REQUEST_TARGET;
+ NTLMSSP_NEGOTIATE_NTLM;
memset(sess_key, 0, 16);
@@ -477,8 +476,8 @@ static BOOL cli_session_setup_ntlmssp(struct cli_state *cli, const char *user,
"NTLMSSP",
NTLMSSP_NEGOTIATE,
neg_flags,
- workgroup,
- cli->calling.name);
+ workgroup, strlen(workgroup),
+ cli->calling.name, strlen(cli->calling.name) + 1);
DEBUG(10, ("neg_flags: %0X, workgroup: %s, calling name %s\n",
neg_flags, workgroup, cli->calling.name));
/* and wrap it in a SPNEGO wrapper */
diff --git a/source3/libsmb/clikrb5.c b/source3/libsmb/clikrb5.c
index 2047efd704..203d9d874b 100644
--- a/source3/libsmb/clikrb5.c
+++ b/source3/libsmb/clikrb5.c
@@ -70,6 +70,128 @@
__ERROR__XX__UNKNOWN_ADDRTYPE
#endif
+#if defined(HAVE_KRB5_PRINCIPAL2SALT) && defined(HAVE_KRB5_USE_ENCTYPE) && defined(HAVE_KRB5_STRING_TO_KEY)
+ int create_kerberos_key_from_string(krb5_context context,
+ krb5_principal host_princ,
+ krb5_data *password,
+ krb5_keyblock *key)
+{
+ int ret;
+ krb5_data salt;
+ krb5_encrypt_block eblock;
+
+ ret = krb5_principal2salt(context, host_princ, &salt);
+ if (ret) {
+ DEBUG(1,("krb5_principal2salt failed (%s)\n", error_message(ret)));
+ return ret;
+ }
+ krb5_use_enctype(context, &eblock, ENCTYPE_DES_CBC_MD5);
+ return krb5_string_to_key(context, &eblock, key, password, &salt);
+}
+#elif defined(HAVE_KRB5_GET_PW_SALT) && defined(HAVE_KRB5_STRING_TO_KEY_SALT)
+ int create_kerberos_key_from_string(krb5_context context,
+ krb5_principal host_princ,
+ krb5_data *password,
+ krb5_keyblock *key)
+{
+ int ret;
+ krb5_salt salt;
+
+ ret = krb5_get_pw_salt(context, host_princ, &salt);
+ if (ret) {
+ DEBUG(1,("krb5_get_pw_salt failed (%s)\n", error_message(ret)));
+ return ret;
+ }
+ return krb5_string_to_key_salt(context, ENCTYPE_DES_CBC_MD5, password->data,
+ salt, key);
+}
+#else
+ __ERROR_XX_UNKNOWN_CREATE_KEY_FUNCTIONS
+#endif
+
+#if defined(HAVE_KRB5_AUTH_CON_SETKEY) && !defined(HAVE_KRB5_AUTH_CON_SETUSERUSERKEY)
+ krb5_error_code krb5_auth_con_setuseruserkey(krb5_context context,
+ krb5_auth_context auth_context,
+ krb5_keyblock *keyblock)
+{
+ return krb5_auth_con_setkey(context, auth_context, keyblock);
+}
+#endif
+
+ void get_auth_data_from_tkt(DATA_BLOB *auth_data, krb5_ticket *tkt)
+{
+#if defined(HAVE_KRB5_TKT_ENC_PART2)
+ if (tkt->enc_part2)
+ *auth_data = data_blob(tkt->enc_part2->authorization_data[0]->contents,
+ tkt->enc_part2->authorization_data[0]->length);
+#else
+ if (tkt->ticket.authorization_data && tkt->ticket.authorization_data->len)
+ *auth_data = data_blob(tkt->ticket.authorization_data->val->ad_data.data,
+ tkt->ticket.authorization_data->val->ad_data.length);
+#endif
+}
+
+ krb5_const_principal get_principal_from_tkt(krb5_ticket *tkt)
+{
+#if defined(HAVE_KRB5_TKT_ENC_PART2)
+ return tkt->enc_part2->client;
+#else
+ return tkt->client;
+#endif
+}
+
+#if !defined(HAVE_KRB5_LOCATE_KDC)
+ krb5_error_code krb5_locate_kdc(krb5_context ctx, const krb5_data *realm, struct sockaddr **addr_pp, int *naddrs, int get_masters)
+{
+ krb5_krbhst_handle hnd;
+ krb5_krbhst_info *hinfo;
+ krb5_error_code rc;
+ int num_kdcs, i;
+ struct sockaddr *sa;
+
+ *addr_pp = NULL;
+ *naddrs = 0;
+
+ rc = krb5_krbhst_init(ctx, realm->data, KRB5_KRBHST_KDC, &hnd);
+ if (rc) {
+ DEBUG(0, ("krb5_locate_kdc: krb5_krbhst_init failed (%s)\n", error_message(rc)));
+ return rc;
+ }
+
+ for ( num_kdcs = 0; (rc = krb5_krbhst_next(ctx, hnd, &hinfo) == 0); num_kdcs++)
+ ;
+
+ krb5_krbhst_reset(ctx, hnd);
+
+ if (!num_kdcs) {
+ DEBUG(0, ("krb5_locate_kdc: zero kdcs found !\n"));
+ krb5_krbhst_free(ctx, hnd);
+ return -1;
+ }
+
+ sa = malloc( sizeof(struct sockaddr) * num_kdcs );
+ if (!sa) {
+ DEBUG(0, ("krb5_locate_kdc: malloc failed\n"));
+ krb5_krbhst_free(ctx, hnd);
+ naddrs = 0;
+ return -1;
+ }
+
+ memset(*addr_pp, '\0', sizeof(struct sockaddr) * num_kdcs );
+
+ for (i = 0; i < num_kdcs && (rc = krb5_krbhst_next(ctx, hnd, &hinfo) == 0); i++) {
+ if (hinfo->ai->ai_family == AF_INET)
+ memcpy(&sa[i], hinfo->ai->ai_addr, sizeof(struct sockaddr));
+ }
+
+ krb5_krbhst_free(ctx, hnd);
+
+ *naddrs = num_kdcs;
+ *addr_pp = sa;
+ return 0;
+}
+#endif
+
/*
we can't use krb5_mk_req because w2k wants the service to be in a particular format
*/
diff --git a/source3/libsmb/clispnego.c b/source3/libsmb/clispnego.c
index 3e28baa417..55f49c5987 100644
--- a/source3/libsmb/clispnego.c
+++ b/source3/libsmb/clispnego.c
@@ -387,6 +387,51 @@ BOOL spnego_parse_challenge(DATA_BLOB blob,
/*
+ generate a spnego NTLMSSP challenge packet given two security blobs
+ The second challenge is optional
+*/
+BOOL spnego_gen_challenge(DATA_BLOB *blob,
+ DATA_BLOB *chal1, DATA_BLOB *chal2)
+{
+ ASN1_DATA data;
+
+ ZERO_STRUCT(data);
+
+ asn1_push_tag(&data,ASN1_CONTEXT(1));
+ asn1_push_tag(&data,ASN1_SEQUENCE(0));
+
+ asn1_push_tag(&data,ASN1_CONTEXT(0));
+ asn1_write_enumerated(&data,1);
+ asn1_pop_tag(&data);
+
+ asn1_push_tag(&data,ASN1_CONTEXT(1));
+ asn1_write_OID(&data, OID_NTLMSSP);
+ asn1_pop_tag(&data);
+
+ asn1_push_tag(&data,ASN1_CONTEXT(2));
+ asn1_write_OctetString(&data, chal1->data, chal1->length);
+ asn1_pop_tag(&data);
+
+ /* the second challenge is optional (XP doesn't send it) */
+ if (chal2) {
+ asn1_push_tag(&data,ASN1_CONTEXT(3));
+ asn1_write_OctetString(&data, chal2->data, chal2->length);
+ asn1_pop_tag(&data);
+ }
+
+ asn1_pop_tag(&data);
+ asn1_pop_tag(&data);
+
+ if (data.has_error) {
+ return False;
+ }
+
+ *blob = data_blob(data.data, data.length);
+ asn1_free(&data);
+ return True;
+}
+
+/*
generate a SPNEGO NTLMSSP auth packet. This will contain the encrypted passwords
*/
DATA_BLOB spnego_gen_auth(DATA_BLOB blob)
@@ -440,37 +485,18 @@ BOOL spnego_parse_auth(DATA_BLOB blob, DATA_BLOB *auth)
/*
generate a minimal SPNEGO NTLMSSP response packet. Doesn't contain much.
*/
-DATA_BLOB spnego_gen_auth_response(DATA_BLOB *ntlmssp_reply, NTSTATUS nt_status)
+DATA_BLOB spnego_gen_auth_response(void)
{
ASN1_DATA data;
DATA_BLOB ret;
- uint8 negResult;
-
- if (NT_STATUS_IS_OK(nt_status)) {
- negResult = SPNGEO_NEG_RESULT_ACCEPT;
- } else if (NT_STATUS_EQUAL(nt_status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
- negResult = SPNGEO_NEG_RESULT_INCOMPLETE;
- } else {
- negResult = SPNGEO_NEG_RESULT_REJECT;
- }
- ZERO_STRUCT(data);
+ memset(&data, 0, sizeof(data));
asn1_push_tag(&data, ASN1_CONTEXT(1));
asn1_push_tag(&data, ASN1_SEQUENCE(0));
asn1_push_tag(&data, ASN1_CONTEXT(0));
- asn1_write_enumerated(&data, negResult);
+ asn1_write_enumerated(&data, 0);
asn1_pop_tag(&data);
- if (negResult == SPNGEO_NEG_RESULT_INCOMPLETE) {
- asn1_push_tag(&data,ASN1_CONTEXT(1));
- asn1_write_OID(&data, OID_NTLMSSP);
- asn1_pop_tag(&data);
-
- asn1_push_tag(&data,ASN1_CONTEXT(2));
- asn1_write_OctetString(&data, ntlmssp_reply->data, ntlmssp_reply->length);
- asn1_pop_tag(&data);
- }
-
asn1_pop_tag(&data);
asn1_pop_tag(&data);
@@ -488,9 +514,8 @@ DATA_BLOB spnego_gen_auth_response(DATA_BLOB *ntlmssp_reply, NTSTATUS nt_status)
format specifiers are:
U = unicode string (input is unix string)
- a = address (input is BOOL unicode, char *unix_string)
- (1 byte type, 1 byte length, unicode/ASCII string, all inline)
- A = ASCII string (input is unix string)
+ a = address (1 byte type, 1 byte length, unicode string, all inline)
+ A = ASCII string (pointer + length) Actually same as B
B = data blob (pointer + length)
b = data blob in header (pointer + length)
D
@@ -506,7 +531,6 @@ BOOL msrpc_gen(DATA_BLOB *blob,
uint8 *b;
int head_size=0, data_size=0;
int head_ofs, data_ofs;
- BOOL unicode;
/* first scan the format to work out the header and body size */
va_start(ap, format);
@@ -517,21 +541,12 @@ BOOL msrpc_gen(DATA_BLOB *blob,
head_size += 8;
data_size += str_charnum(s) * 2;
break;
- case 'A':
- s = va_arg(ap, char *);
- head_size += 8;
- data_size += str_ascii_charnum(s);
- break;
case 'a':
- unicode = va_arg(ap, BOOL);
n = va_arg(ap, int);
s = va_arg(ap, char *);
- if (unicode) {
- data_size += (str_charnum(s) * 2) + 4;
- } else {
- data_size += (str_ascii_charnum(s)) + 4;
- }
+ data_size += (str_charnum(s) * 2) + 4;
break;
+ case 'A':
case 'B':
b = va_arg(ap, uint8 *);
head_size += 8;
@@ -571,39 +586,20 @@ BOOL msrpc_gen(DATA_BLOB *blob,
push_string(NULL, blob->data+data_ofs, s, n*2, STR_UNICODE|STR_NOALIGN);
data_ofs += n*2;
break;
- case 'A':
- s = va_arg(ap, char *);
- n = str_ascii_charnum(s);
- SSVAL(blob->data, head_ofs, n); head_ofs += 2;
- SSVAL(blob->data, head_ofs, n); head_ofs += 2;
- SIVAL(blob->data, head_ofs, data_ofs); head_ofs += 4;
- push_string(NULL, blob->data+data_ofs, s, n, STR_ASCII|STR_NOALIGN);
- data_ofs += n;
- break;
case 'a':
- unicode = va_arg(ap, BOOL);
n = va_arg(ap, int);
SSVAL(blob->data, data_ofs, n); data_ofs += 2;
s = va_arg(ap, char *);
- if (unicode) {
- n = str_charnum(s);
- SSVAL(blob->data, data_ofs, n*2); data_ofs += 2;
- if (0 < n) {
- push_string(NULL, blob->data+data_ofs, s, n*2,
- STR_UNICODE|STR_NOALIGN);
- }
- data_ofs += n*2;
- } else {
- n = str_ascii_charnum(s);
- SSVAL(blob->data, data_ofs, n); data_ofs += 2;
- if (0 < n) {
- push_string(NULL, blob->data+data_ofs, s, n,
- STR_ASCII|STR_NOALIGN);
- }
- data_ofs += n;
+ n = str_charnum(s);
+ SSVAL(blob->data, data_ofs, n*2); data_ofs += 2;
+ if (0 < n) {
+ push_string(NULL, blob->data+data_ofs, s, n*2,
+ STR_UNICODE|STR_NOALIGN);
}
+ data_ofs += n*2;
break;
+ case 'A':
case 'B':
b = va_arg(ap, uint8 *);
n = va_arg(ap, int);
@@ -718,7 +714,7 @@ BOOL msrpc_parse(DATA_BLOB *blob,
break;
case 'C':
s = va_arg(ap, char *);
- head_ofs += pull_string(NULL, p, blob->data+head_ofs, sizeof(p),
+ head_ofs += pull_string(NULL, p, blob->data+head_ofs, -1,
blob->length - head_ofs,
STR_ASCII|STR_TERMINATE);
if (strcmp(s, p) != 0) {
diff --git a/source3/modules/developer.c b/source3/modules/developer.c
deleted file mode 100644
index c12bbc562a..0000000000
--- a/source3/modules/developer.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Samba module with developer tools
- Copyright (C) Andrew Tridgell 2001
- Copyright (C) Jelmer Vernooij 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-static struct {
- char from;
- char *to;
- int len;
-} weird_table[] = {
- {'q', "^q^", 3},
- {'Q', "^Q^", 3},
- {0, NULL}
-};
-
-static size_t weird_pull(void *cd, char **inbuf, size_t *inbytesleft,
- char **outbuf, size_t *outbytesleft)
-{
- while (*inbytesleft >= 1 && *outbytesleft >= 2) {
- int i;
- int done = 0;
- for (i=0;weird_table[i].from;i++) {
- if (strncmp((*inbuf),
- weird_table[i].to,
- weird_table[i].len) == 0) {
- if (*inbytesleft < weird_table[i].len) {
- DEBUG(0,("ERROR: truncated weird string\n"));
- /* smb_panic("weird_pull"); */
-
- } else {
- (*outbuf)[0] = weird_table[i].from;
- (*outbuf)[1] = 0;
- (*inbytesleft) -= weird_table[i].len;
- (*outbytesleft) -= 2;
- (*inbuf) += weird_table[i].len;
- (*outbuf) += 2;
- done = 1;
- break;
- }
- }
- }
- if (done) continue;
- (*outbuf)[0] = (*inbuf)[0];
- (*outbuf)[1] = 0;
- (*inbytesleft) -= 1;
- (*outbytesleft) -= 2;
- (*inbuf) += 1;
- (*outbuf) += 2;
- }
-
- if (*inbytesleft > 0) {
- errno = E2BIG;
- return -1;
- }
-
- return 0;
-}
-
-static size_t weird_push(void *cd, char **inbuf, size_t *inbytesleft,
- char **outbuf, size_t *outbytesleft)
-{
- int ir_count=0;
-
- while (*inbytesleft >= 2 && *outbytesleft >= 1) {
- int i;
- int done=0;
- for (i=0;weird_table[i].from;i++) {
- if ((*inbuf)[0] == weird_table[i].from &&
- (*inbuf)[1] == 0) {
- if (*outbytesleft < weird_table[i].len) {
- DEBUG(0,("No room for weird character\n"));
- /* smb_panic("weird_push"); */
- } else {
- memcpy(*outbuf, weird_table[i].to,
- weird_table[i].len);
- (*inbytesleft) -= 2;
- (*outbytesleft) -= weird_table[i].len;
- (*inbuf) += 2;
- (*outbuf) += weird_table[i].len;
- done = 1;
- break;
- }
- }
- }
- if (done) continue;
-
- (*outbuf)[0] = (*inbuf)[0];
- if ((*inbuf)[1]) ir_count++;
- (*inbytesleft) -= 2;
- (*outbytesleft) -= 1;
- (*inbuf) += 2;
- (*outbuf) += 1;
- }
-
- if (*inbytesleft == 1) {
- errno = EINVAL;
- return -1;
- }
-
- if (*inbytesleft > 1) {
- errno = E2BIG;
- return -1;
- }
-
- return ir_count;
-}
-
-struct charset_functions weird_functions = {"WEIRD", weird_pull, weird_push};
-
-int init_module(void)
-{
- smb_register_charset(&weird_functions);
- return 0;
-}
diff --git a/source3/modules/vfs_fake_perms.c b/source3/modules/vfs_fake_perms.c
deleted file mode 100644
index 7fbf27e907..0000000000
--- a/source3/modules/vfs_fake_perms.c
+++ /dev/null
@@ -1,471 +0,0 @@
-/*
- * Fake Perms VFS module. Implements passthrough operation of all VFS
- * calls to disk functions, except for file permissions, which are now
- * mode 0700 for the current uid/gid.
- *
- * Copyright (C) Tim Potter, 1999-2000
- * Copyright (C) Alexander Bokovoy, 2002
- * Copyright (C) Andrew Bartlett, 2002
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <sys/stat.h>
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif
-#ifdef HAVE_DIRENT_H
-#include <dirent.h>
-#endif
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-#include <errno.h>
-#include <string.h>
-
-#include <includes.h>
-#include <vfs.h>
-
-static struct vfs_ops default_vfs_ops; /* For passthrough operation */
-static struct smb_vfs_handle_struct *fake_perms_handle; /* use fake_perms_handle->data for storing per-instance private data */
-
-static int fake_perms_connect(struct connection_struct *conn, const char *service, const char *user)
-{
- return default_vfs_ops.connect(conn, service, user);
-}
-
-static void fake_perms_disconnect(struct connection_struct *conn)
-{
- default_vfs_ops.disconnect(conn);
-}
-
-static SMB_BIG_UINT fake_perms_disk_free(struct connection_struct *conn, const char *path,
- BOOL small_query, SMB_BIG_UINT *bsize,
- SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize)
-{
- return default_vfs_ops.disk_free(conn, path, small_query, bsize,
- dfree, dsize);
-}
-
-static DIR *fake_perms_opendir(struct connection_struct *conn, const char *fname)
-{
- return default_vfs_ops.opendir(conn, fname);
-}
-
-static struct dirent *fake_perms_readdir(struct connection_struct *conn, DIR *dirp)
-{
- return default_vfs_ops.readdir(conn, dirp);
-}
-
-static int fake_perms_mkdir(struct connection_struct *conn, const char *path, mode_t mode)
-{
- return default_vfs_ops.mkdir(conn, path, mode);
-}
-
-static int fake_perms_rmdir(struct connection_struct *conn, const char *path)
-{
- return default_vfs_ops.rmdir(conn, path);
-}
-
-static int fake_perms_closedir(struct connection_struct *conn, DIR *dir)
-{
- return default_vfs_ops.closedir(conn, dir);
-}
-
-static int fake_perms_open(struct connection_struct *conn, const char *fname, int flags, mode_t mode)
-{
- return default_vfs_ops.open(conn, fname, flags, mode);
-}
-
-static int fake_perms_close(struct files_struct *fsp, int fd)
-{
- return default_vfs_ops.close(fsp, fd);
-}
-
-static ssize_t fake_perms_read(struct files_struct *fsp, int fd, void *data, size_t n)
-{
- return default_vfs_ops.read(fsp, fd, data, n);
-}
-
-static ssize_t fake_perms_write(struct files_struct *fsp, int fd, const void *data, size_t n)
-{
- return default_vfs_ops.write(fsp, fd, data, n);
-}
-
-static SMB_OFF_T fake_perms_lseek(struct files_struct *fsp, int filedes, SMB_OFF_T offset, int whence)
-{
- return default_vfs_ops.lseek(fsp, filedes, offset, whence);
-}
-
-static int fake_perms_rename(struct connection_struct *conn, const char *old, const char *new)
-{
- return default_vfs_ops.rename(conn, old, new);
-}
-
-static int fake_perms_fsync(struct files_struct *fsp, int fd)
-{
- return default_vfs_ops.fsync(fsp, fd);
-}
-
-static int fake_perms_stat(struct connection_struct *conn, const char *fname, SMB_STRUCT_STAT *sbuf)
-{
- int ret = default_vfs_ops.stat(conn, fname, sbuf);
- extern struct current_user current_user;
-
- if (S_ISDIR(sbuf->st_mode)) {
- sbuf->st_mode = S_IFDIR | S_IRWXU;
- } else {
- sbuf->st_mode = S_IRWXU;
- }
- sbuf->st_uid = current_user.uid;
- sbuf->st_gid = current_user.gid;
- return ret;
-}
-
-static int fake_perms_fstat(struct files_struct *fsp, int fd, SMB_STRUCT_STAT *sbuf)
-{
- return default_vfs_ops.fstat(fsp, fd, sbuf);
-}
-
-static int fake_perms_lstat(struct connection_struct *conn, const char *path, SMB_STRUCT_STAT *sbuf)
-{
- return default_vfs_ops.lstat(conn, path, sbuf);
-}
-
-static int fake_perms_unlink(struct connection_struct *conn, const char *path)
-{
- return default_vfs_ops.unlink(conn, path);
-}
-
-static int fake_perms_chmod(struct connection_struct *conn, const char *path, mode_t mode)
-{
- return default_vfs_ops.chmod(conn, path, mode);
-}
-
-static int fake_perms_fchmod(struct files_struct *fsp, int fd, mode_t mode)
-{
- return default_vfs_ops.fchmod(fsp, fd, mode);
-}
-
-static int fake_perms_chown(struct connection_struct *conn, const char *path, uid_t uid, gid_t gid)
-{
- return default_vfs_ops.chown(conn, path, uid, gid);
-}
-
-static int fake_perms_fchown(struct files_struct *fsp, int fd, uid_t uid, gid_t gid)
-{
- return default_vfs_ops.fchown(fsp, fd, uid, gid);
-}
-
-static int fake_perms_chdir(struct connection_struct *conn, const char *path)
-{
- return default_vfs_ops.chdir(conn, path);
-}
-
-static char *fake_perms_getwd(struct connection_struct *conn, char *buf)
-{
- return default_vfs_ops.getwd(conn, buf);
-}
-
-static int fake_perms_utime(struct connection_struct *conn, const char *path, struct utimbuf *times)
-{
- return default_vfs_ops.utime(conn, path, times);
-}
-
-static int fake_perms_ftruncate(struct files_struct *fsp, int fd, SMB_OFF_T offset)
-{
- return default_vfs_ops.ftruncate(fsp, fd, offset);
-}
-
-static BOOL fake_perms_lock(struct files_struct *fsp, int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type)
-{
- return default_vfs_ops.lock(fsp, fd, op, offset, count, type);
-}
-
-static BOOL fake_perms_symlink(struct connection_struct *conn, const char *oldpath, const char *newpath)
-{
- return default_vfs_ops.symlink(conn, oldpath, newpath);
-}
-
-static BOOL fake_perms_readlink(struct connection_struct *conn, const char *path, char *buf, size_t bufsiz)
-{
- return default_vfs_ops.readlink(conn, path, buf, bufsiz);
-}
-
-static int fake_perms_link(struct connection_struct *conn, const char *oldpath, const char *newpath)
-{
- return default_vfs_ops.link(conn, oldpath, newpath);
-}
-
-static int fake_perms_mknod(struct connection_struct *conn, const char *path, mode_t mode, SMB_DEV_T dev)
-{
- return default_vfs_ops.mknod(conn, path, mode, dev);
-}
-
-static char *fake_perms_realpath(struct connection_struct *conn, const char *path, char *resolved_path)
-{
- return default_vfs_ops.realpath(conn, path, resolved_path);
-}
-
-static size_t fake_perms_fget_nt_acl(struct files_struct *fsp, int fd, struct security_descriptor_info **ppdesc)
-{
- return default_vfs_ops.fget_nt_acl(fsp, fd, ppdesc);
-}
-
-static size_t fake_perms_get_nt_acl(struct files_struct *fsp, const char *name, struct security_descriptor_info **ppdesc)
-{
- return default_vfs_ops.get_nt_acl(fsp, name, ppdesc);
-}
-
-static BOOL fake_perms_fset_nt_acl(struct files_struct *fsp, int fd, uint32 security_info_sent, struct security_descriptor_info *psd)
-{
- return default_vfs_ops.fset_nt_acl(fsp, fd, security_info_sent, psd);
-}
-
-static BOOL fake_perms_set_nt_acl(struct files_struct *fsp, const char *name, uint32 security_info_sent, struct security_descriptor_info *psd)
-{
- return default_vfs_ops.set_nt_acl(fsp, name, security_info_sent, psd);
-}
-
-static BOOL fake_perms_chmod_acl(struct connection_struct *conn, const char *name, mode_t mode)
-{
- return default_vfs_ops.chmod_acl(conn, name, mode);
-}
-
-static BOOL fake_perms_fchmod_acl(struct files_struct *fsp, int fd, mode_t mode)
-{
- return default_vfs_ops.fchmod_acl(fsp, fd, mode);
-}
-
-static int fake_perms_sys_acl_get_entry(struct connection_struct *conn, SMB_ACL_T theacl, int entry_id, SMB_ACL_ENTRY_T *entry_p)
-{
- return default_vfs_ops.sys_acl_get_entry(conn, theacl, entry_id, entry_p);
-}
-
-static int fake_perms_sys_acl_get_tag_type(struct connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_TAG_T *tag_type_p)
-{
- return default_vfs_ops.sys_acl_get_tag_type(conn, entry_d, tag_type_p);
-}
-
-static int fake_perms_sys_acl_get_permset(struct connection_struct *conn, SMB_ACL_ENTRY_T entry_d, SMB_ACL_PERMSET_T *permset_p)
-{
- return default_vfs_ops.sys_acl_get_permset(conn, entry_d, permset_p);
-}
-
-static void *fake_perms_sys_acl_get_qualifier(struct connection_struct *conn, SMB_ACL_ENTRY_T entry_d)
-{
- return default_vfs_ops.sys_acl_get_qualifier(conn, entry_d);
-}
-
-static SMB_ACL_T fake_perms_sys_acl_get_file(struct connection_struct *conn, const char *path_p, SMB_ACL_TYPE_T type)
-{
- return default_vfs_ops.sys_acl_get_file(conn, path_p, type);
-}
-
-static SMB_ACL_T fake_perms_sys_acl_get_fd(struct files_struct *fsp, int fd)
-{
- return default_vfs_ops.sys_acl_get_fd(fsp, fd);
-}
-
-static int fake_perms_sys_acl_clear_perms(struct connection_struct *conn, SMB_ACL_PERMSET_T permset)
-{
- return default_vfs_ops.sys_acl_clear_perms(conn, permset);
-}
-
-static int fake_perms_sys_acl_add_perm(struct connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm)
-{
- return default_vfs_ops.sys_acl_add_perm(conn, permset, perm);
-}
-
-static char *fake_perms_sys_acl_to_text(struct connection_struct *conn, SMB_ACL_T theacl, ssize_t *plen)
-{
- return default_vfs_ops.sys_acl_to_text(conn, theacl, plen);
-}
-
-static SMB_ACL_T fake_perms_sys_acl_init(struct connection_struct *conn, int count)
-{
- return default_vfs_ops.sys_acl_init(conn, count);
-}
-
-static int fake_perms_sys_acl_create_entry(struct connection_struct *conn, SMB_ACL_T *pacl, SMB_ACL_ENTRY_T *pentry)
-{
- return default_vfs_ops.sys_acl_create_entry(conn, pacl, pentry);
-}
-
-static int fake_perms_sys_acl_set_tag_type(struct connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_TAG_T tagtype)
-{
- return default_vfs_ops.sys_acl_set_tag_type(conn, entry, tagtype);
-}
-
-static int fake_perms_sys_acl_set_qualifier(struct connection_struct *conn, SMB_ACL_ENTRY_T entry, void *qual)
-{
- return default_vfs_ops.sys_acl_set_qualifier(conn, entry, qual);
-}
-
-static int fake_perms_sys_acl_set_permset(struct connection_struct *conn, SMB_ACL_ENTRY_T entry, SMB_ACL_PERMSET_T permset)
-{
- return default_vfs_ops.sys_acl_set_permset(conn, entry, permset);
-}
-
-static int fake_perms_sys_acl_valid(struct connection_struct *conn, SMB_ACL_T theacl )
-{
- return default_vfs_ops.sys_acl_valid(conn, theacl );
-}
-
-static int fake_perms_sys_acl_set_file(struct connection_struct *conn, const char *name, SMB_ACL_TYPE_T acltype, SMB_ACL_T theacl)
-{
- return default_vfs_ops.sys_acl_set_file(conn, name, acltype, theacl);
-}
-
-static int fake_perms_sys_acl_set_fd(struct files_struct *fsp, int fd, SMB_ACL_T theacl)
-{
- return default_vfs_ops.sys_acl_set_fd(fsp, fd, theacl);
-}
-
-static int fake_perms_sys_acl_delete_def_file(struct connection_struct *conn, const char *path)
-{
- return default_vfs_ops.sys_acl_delete_def_file(conn, path);
-}
-
-static int fake_perms_sys_acl_get_perm(struct connection_struct *conn, SMB_ACL_PERMSET_T permset, SMB_ACL_PERM_T perm)
-{
- return default_vfs_ops.sys_acl_get_perm(conn, permset, perm);
-}
-
-static int fake_perms_sys_acl_free_text(struct connection_struct *conn, char *text)
-{
- return default_vfs_ops.sys_acl_free_text(conn, text);
-}
-
-static int fake_perms_sys_acl_free_acl(struct connection_struct *conn, SMB_ACL_T posix_acl)
-{
- return default_vfs_ops.sys_acl_free_acl(conn, posix_acl);
-}
-
-static int fake_perms_sys_acl_free_qualifier(struct connection_struct *conn, void *qualifier, SMB_ACL_TAG_T tagtype)
-{
- return default_vfs_ops.sys_acl_free_qualifier(conn, qualifier, tagtype);
-}
-
-
-/* VFS operations structure */
-
-static vfs_op_tuple fake_perms_ops[] = {
-
- /* Disk operations */
-
- {fake_perms_connect, SMB_VFS_OP_CONNECT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_disconnect, SMB_VFS_OP_DISCONNECT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_disk_free, SMB_VFS_OP_DISK_FREE, SMB_VFS_LAYER_TRANSPARENT},
-
- /* Directory operations */
-
- {fake_perms_opendir, SMB_VFS_OP_OPENDIR, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_readdir, SMB_VFS_OP_READDIR, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_mkdir, SMB_VFS_OP_MKDIR, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_rmdir, SMB_VFS_OP_RMDIR, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_closedir, SMB_VFS_OP_CLOSEDIR, SMB_VFS_LAYER_TRANSPARENT},
-
- /* File operations */
-
- {fake_perms_open, SMB_VFS_OP_OPEN, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_close, SMB_VFS_OP_CLOSE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_read, SMB_VFS_OP_READ, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_write, SMB_VFS_OP_WRITE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_lseek, SMB_VFS_OP_LSEEK, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_rename, SMB_VFS_OP_RENAME, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_fsync, SMB_VFS_OP_FSYNC, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_stat, SMB_VFS_OP_STAT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_fstat, SMB_VFS_OP_FSTAT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_lstat, SMB_VFS_OP_LSTAT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_unlink, SMB_VFS_OP_UNLINK, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_chmod, SMB_VFS_OP_CHMOD, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_fchmod, SMB_VFS_OP_FCHMOD, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_chown, SMB_VFS_OP_CHOWN, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_fchown, SMB_VFS_OP_FCHOWN, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_chdir, SMB_VFS_OP_CHDIR, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_getwd, SMB_VFS_OP_GETWD, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_utime, SMB_VFS_OP_UTIME, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_ftruncate, SMB_VFS_OP_FTRUNCATE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_lock, SMB_VFS_OP_LOCK, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_symlink, SMB_VFS_OP_SYMLINK, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_readlink, SMB_VFS_OP_READLINK, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_link, SMB_VFS_OP_LINK, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_mknod, SMB_VFS_OP_MKNOD, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_realpath, SMB_VFS_OP_REALPATH, SMB_VFS_LAYER_TRANSPARENT},
-
- /* NT File ACL operations */
-
- {fake_perms_fget_nt_acl, SMB_VFS_OP_FGET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_get_nt_acl, SMB_VFS_OP_GET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_fset_nt_acl, SMB_VFS_OP_FSET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_set_nt_acl, SMB_VFS_OP_SET_NT_ACL, SMB_VFS_LAYER_TRANSPARENT},
-
- /* POSIX ACL operations */
-
- {fake_perms_chmod_acl, SMB_VFS_OP_CHMOD_ACL, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_fchmod_acl, SMB_VFS_OP_FCHMOD_ACL, SMB_VFS_LAYER_TRANSPARENT},
-
- {fake_perms_sys_acl_get_entry, SMB_VFS_OP_SYS_ACL_GET_ENTRY, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_tag_type, SMB_VFS_OP_SYS_ACL_GET_TAG_TYPE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_permset, SMB_VFS_OP_SYS_ACL_GET_PERMSET, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_qualifier, SMB_VFS_OP_SYS_ACL_GET_QUALIFIER, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_file, SMB_VFS_OP_SYS_ACL_GET_FILE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_fd, SMB_VFS_OP_SYS_ACL_GET_FD, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_clear_perms, SMB_VFS_OP_SYS_ACL_CLEAR_PERMS, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_add_perm, SMB_VFS_OP_SYS_ACL_ADD_PERM, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_to_text, SMB_VFS_OP_SYS_ACL_TO_TEXT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_init, SMB_VFS_OP_SYS_ACL_INIT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_create_entry, SMB_VFS_OP_SYS_ACL_CREATE_ENTRY, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_set_tag_type, SMB_VFS_OP_SYS_ACL_SET_TAG_TYPE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_set_qualifier, SMB_VFS_OP_SYS_ACL_SET_QUALIFIER, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_set_permset, SMB_VFS_OP_SYS_ACL_SET_PERMSET, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_valid, SMB_VFS_OP_SYS_ACL_VALID, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_set_file, SMB_VFS_OP_SYS_ACL_SET_FILE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_set_fd, SMB_VFS_OP_SYS_ACL_SET_FD, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_delete_def_file, SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_get_perm, SMB_VFS_OP_SYS_ACL_GET_PERM, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_free_text, SMB_VFS_OP_SYS_ACL_FREE_TEXT, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_free_acl, SMB_VFS_OP_SYS_ACL_FREE_ACL, SMB_VFS_LAYER_TRANSPARENT},
- {fake_perms_sys_acl_free_qualifier, SMB_VFS_OP_SYS_ACL_FREE_QUALIFIER, SMB_VFS_LAYER_TRANSPARENT},
-
- {NULL, SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP}
-};
-
-/* VFS initialisation - return initialized vfs_op_tuple array back to Samba */
-
-vfs_op_tuple *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops,
- struct smb_vfs_handle_struct *vfs_handle)
-{
- DEBUG(3, ("Initialising default vfs hooks\n"));
-
- *vfs_version = SMB_VFS_INTERFACE_VERSION;
- memcpy(&default_vfs_ops, def_vfs_ops, sizeof(struct vfs_ops));
-
- /* Remember vfs_handle for further allocation and referencing of private
- information in vfs_handle->data
- */
- fake_perms_handle = vfs_handle;
- return fake_perms_ops;
-}
-
-/* VFS finalization function */
-void vfs_done(connection_struct *conn)
-{
- DEBUG(3, ("Finalizing default vfs hooks\n"));
-}
diff --git a/source3/modules/vfs_recycle.c b/source3/modules/vfs_recycle.c
index dcd83b7acd..eedb65cd9d 100644
--- a/source3/modules/vfs_recycle.c
+++ b/source3/modules/vfs_recycle.c
@@ -37,7 +37,7 @@ static const char *delimiter = "|"; /* delimiter for options */
typedef struct recycle_bin_struct
{
- TALLOC_CTX *mem_ctx;
+ TALLOC_CTX *ctx;
char *repository; /* name of the recycle bin directory */
BOOL keep_dir_tree; /* keep directory structure of deleted file in recycle bin */
BOOL versions; /* create versions of deleted files with identical name */
@@ -48,19 +48,6 @@ typedef struct recycle_bin_struct
SMB_OFF_T maxsize; /* maximum file size to be saved */
} recycle_bin_struct;
-typedef struct recycle_bin_connections {
- int conn;
- recycle_bin_struct *data;
- struct recycle_bin_connections *next;
-} recycle_bin_connections;
-
-typedef struct recycle_bin_private_data {
- TALLOC_CTX *mem_ctx;
- recycle_bin_connections *conns;
-} recycle_bin_private_data;
-
-struct smb_vfs_handle_struct *recycle_bin_private_handle;
-
/* VFS operations */
static struct vfs_ops default_vfs_ops; /* For passthrough operation */
@@ -82,6 +69,16 @@ static vfs_op_tuple recycle_ops[] = {
{NULL, SMB_VFS_OP_NOOP, SMB_VFS_LAYER_NOOP}
};
+static BOOL check_bool_param(const char *value)
+{
+ if (strwicmp(value, "yes") == 0 ||
+ strwicmp(value, "true") == 0 ||
+ strwicmp(value, "1") == 0)
+ return True;
+
+ return False;
+}
+
/**
* VFS initialisation function.
*
@@ -90,8 +87,6 @@ static vfs_op_tuple recycle_ops[] = {
vfs_op_tuple *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops,
struct smb_vfs_handle_struct *vfs_handle)
{
- TALLOC_CTX *mem_ctx = NULL;
-
DEBUG(10, ("Initializing VFS module recycle\n"));
*vfs_version = SMB_VFS_INTERFACE_VERSION;
memcpy(&default_vfs_ops, def_vfs_ops, sizeof(struct vfs_ops));
@@ -103,20 +98,6 @@ vfs_op_tuple *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops,
DEBUG(0, ("vfs_recycle: Debug class number of 'vfs_recycle': %d\n", vfs_recycle_debug_level));
}
- recycle_bin_private_handle = vfs_handle;
- if (!(mem_ctx = talloc_init("recycle bin data"))) {
- DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
- return NULL;
- }
-
- recycle_bin_private_handle->data = talloc(mem_ctx, sizeof(recycle_bin_private_data));
- if (recycle_bin_private_handle->data == NULL) {
- DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
- return NULL;
- }
- ((recycle_bin_private_data *)(recycle_bin_private_handle->data))->mem_ctx = mem_ctx;
- ((recycle_bin_private_data *)(recycle_bin_private_handle->data))->conns = NULL;
-
return recycle_ops;
}
@@ -124,67 +105,34 @@ vfs_op_tuple *vfs_init(int *vfs_version, struct vfs_ops *def_vfs_ops,
* VFS finalization function.
*
**/
-void vfs_done(void)
+void vfs_done(connection_struct *conn)
{
- recycle_bin_private_data *recdata;
- recycle_bin_connections *recconn;
-
- DEBUG(10, ("Unloading/Cleaning VFS module recycle bin\n"));
-
- if (recycle_bin_private_handle)
- recdata = (recycle_bin_private_data *)(recycle_bin_private_handle->data);
- else {
- DEBUG(0, ("Recycle bin not initialized!\n"));
- return;
- }
-
- if (recdata) {
- if (recdata->conns) {
- recconn = recdata->conns;
- while (recconn) {
- talloc_destroy(recconn->data->mem_ctx);
- recconn = recconn->next;
- }
- }
- if (recdata->mem_ctx) {
- talloc_destroy(recdata->mem_ctx);
- }
- recdata = NULL;
- }
+ DEBUG(10,("Called for connection %d\n", SNUM(conn)));
}
static int recycle_connect(struct connection_struct *conn, const char *service, const char *user)
{
TALLOC_CTX *ctx = NULL;
recycle_bin_struct *recbin;
- recycle_bin_connections *recconn;
- recycle_bin_connections *recconnbase;
- recycle_bin_private_data *recdata;
+ char *servicename;
char *tmp_str;
DEBUG(10, ("Called for service %s (%d) as user %s\n", service, SNUM(conn), user));
- if (recycle_bin_private_handle)
- recdata = (recycle_bin_private_data *)(recycle_bin_private_handle->data);
- else {
- DEBUG(0, ("Recycle bin not initialized!\n"));
- return -1;
- }
-
- if (!(ctx = talloc_init("recycle bin connection"))) {
+ if (!(ctx = talloc_init("recycle bin"))) {
DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
- return -1;
+ return 0;
}
- recbin = talloc(ctx, sizeof(recycle_bin_struct));
- if (recbin == NULL) {
+ recbin = talloc(ctx,sizeof(recycle_bin_struct));
+ if ( recbin == NULL) {
DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
return -1;
}
- recbin->mem_ctx = ctx;
+ recbin->ctx = ctx;
/* Set defaults */
- recbin->repository = talloc_strdup(recbin->mem_ctx, ".recycle");
+ recbin->repository = talloc_strdup(ctx, ".recycle");
ALLOC_CHECK(recbin->repository, error);
recbin->keep_dir_tree = False;
recbin->versions = False;
@@ -195,61 +143,55 @@ static int recycle_connect(struct connection_struct *conn, const char *service,
recbin->maxsize = 0;
/* parse configuration options */
- if ((tmp_str = lp_parm_string(SNUM(conn), "vfs_recycle_bin", "repository")) != NULL) {
- recbin->repository = talloc_sub_conn(recbin->mem_ctx, conn, tmp_str);
+ servicename = talloc_strdup(recbin->ctx, lp_servicename(SNUM(conn)));
+ DEBUG(10, ("servicename = %s\n",servicename));
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "repository")) != NULL) {
+ recbin->repository = talloc_sub_conn(ctx, conn, tmp_str);
ALLOC_CHECK(recbin->repository, error);
trim_string(recbin->repository, "/", "/");
DEBUG(5, ("recycle.bin: repository = %s\n", recbin->repository));
}
-
- recbin->keep_dir_tree = lp_parm_bool(SNUM(conn), "vfs_recycle_bin", "keeptree");
- DEBUG(5, ("recycle.bin: keeptree = %d\n", recbin->keep_dir_tree));
-
- recbin->versions = lp_parm_bool(SNUM(conn), "vfs_recycle_bin", "versions");
- DEBUG(5, ("recycle.bin: versions = %d\n", recbin->versions));
-
- recbin->touch = lp_parm_bool(SNUM(conn), "vfs_recycle_bin", "touch");
- DEBUG(5, ("recycle.bin: touch = %d\n", recbin->touch));
-
- recbin->maxsize = lp_parm_ulong(SNUM(conn), "vfs_recycle_bin", "maxsize");
- if (recbin->maxsize == 0) {
- recbin->maxsize = -1;
- DEBUG(5, ("recycle.bin: maxsize = -infinite-\n"));
- } else {
- DEBUG(5, ("recycle.bin: maxsize = %ld\n", (long int)recbin->maxsize));
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "keeptree")) != NULL) {
+ if (check_bool_param(tmp_str) == True)
+ recbin->keep_dir_tree = True;
+ DEBUG(5, ("recycle.bin: keeptree = %s\n", tmp_str));
+ }
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "versions")) != NULL) {
+ if (check_bool_param(tmp_str) == True)
+ recbin->versions = True;
+ DEBUG(5, ("recycle.bin: versions = %s\n", tmp_str));
+ }
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "touch")) != NULL) {
+ if (check_bool_param(tmp_str) == True)
+ recbin->touch = True;
+ DEBUG(5, ("recycle.bin: touch = %s\n", tmp_str));
+ }
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "maxsize")) != NULL) {
+ recbin->maxsize = strtoul(tmp_str, NULL, 10);
+ if (recbin->maxsize == 0) {
+ recbin->maxsize = -1;
+ DEBUG(5, ("recycle.bin: maxsize = -infinite-\n"));
+ } else {
+ DEBUG(5, ("recycle.bin: maxsize = %ld\n", (long int)recbin->maxsize));
+ }
}
-
- if ((tmp_str = lp_parm_string(SNUM(conn), "vfs_recycle_bin", "exclude")) != NULL) {
- recbin->exclude = talloc_strdup(recbin->mem_ctx, tmp_str);
+ if ((tmp_str = lp_parm_string(servicename, "vfs_recycle_bin", "exclude")) != NULL) {
+ recbin->exclude = talloc_strdup(ctx, tmp_str);
ALLOC_CHECK(recbin->exclude, error);
DEBUG(5, ("recycle.bin: exclude = %s\n", recbin->exclude));
}
- if ((tmp_str = lp_parm_string(SNUM(conn), "vfs_recycle_bin", "exclude_dir")) != NULL) {
- recbin->exclude_dir = talloc_strdup(recbin->mem_ctx, tmp_str);
+ if ((tmp_str = lp_parm_string(servicename,"vfs_recycle_bin", "exclude_dir")) != NULL) {
+ recbin->exclude_dir = talloc_strdup(ctx, tmp_str);
ALLOC_CHECK(recbin->exclude_dir, error);
DEBUG(5, ("recycle.bin: exclude_dir = %s\n", recbin->exclude_dir));
}
- if ((tmp_str = lp_parm_string(SNUM(conn), "vfs_recycle_bin", "noversions")) != NULL) {
- recbin->noversions = talloc_strdup(recbin->mem_ctx, tmp_str);
+ if ((tmp_str = lp_parm_string(servicename,"vfs_recycle_bin", "noversions")) != NULL) {
+ recbin->noversions = talloc_strdup(ctx, tmp_str);
ALLOC_CHECK(recbin->noversions, error);
DEBUG(5, ("recycle.bin: noversions = %s\n", recbin->noversions));
}
- recconn = talloc(recdata->mem_ctx, sizeof(recycle_bin_connections));
- if (recconn == NULL) {
- DEBUG(0, ("Failed to allocate memory in VFS module recycle_bin\n"));
- goto error;
- }
- recconn->conn = SNUM(conn);
- recconn->data = recbin;
- recconn->next = NULL;
- if (recdata->conns) {
- recconnbase = recdata->conns;
- while (recconnbase->next != NULL) recconnbase = recconnbase->next;
- recconnbase->next = recconn;
- } else {
- recdata->conns = recconn;
- }
+ conn->vfs_private = (void *)recbin;
return default_vfs_ops.connect(conn, service, user);
error:
@@ -259,35 +201,10 @@ error:
static void recycle_disconnect(struct connection_struct *conn)
{
- recycle_bin_private_data *recdata;
- recycle_bin_connections *recconn;
-
DEBUG(10, ("Disconnecting VFS module recycle bin\n"));
-
- if (recycle_bin_private_handle)
- recdata = (recycle_bin_private_data *)(recycle_bin_private_handle->data);
- else {
- DEBUG(0, ("Recycle bin not initialized!\n"));
- return;
- }
-
- if (recdata) {
- if (recdata->conns) {
- if (recdata->conns->conn == SNUM(conn)) {
- talloc_destroy(recdata->conns->data->mem_ctx);
- recdata->conns = recdata->conns->next;
- } else {
- recconn = recdata->conns;
- while (recconn->next) {
- if (recconn->next->conn == SNUM(conn)) {
- talloc_destroy(recconn->next->data->mem_ctx);
- recconn->next = recconn->next->next;
- break;
- }
- recconn = recconn->next;
- }
- }
- }
+ if (conn->vfs_private) {
+ talloc_destroy(((recycle_bin_struct *)conn->vfs_private)->ctx);
+ conn->vfs_private = NULL;
}
default_vfs_ops.disconnect(conn);
}
@@ -474,8 +391,6 @@ static void recycle_touch(connection_struct *conn, const char *fname)
**/
static int recycle_unlink(connection_struct *conn, const char *inname)
{
- recycle_bin_private_data *recdata;
- recycle_bin_connections *recconn;
recycle_bin_struct *recbin;
char *file_name = NULL;
char *path_name = NULL;
@@ -483,28 +398,17 @@ static int recycle_unlink(connection_struct *conn, const char *inname)
char *final_name = NULL;
char *base;
int i;
-/* SMB_BIG_UINT dfree, dsize, bsize; */
- SMB_OFF_T file_size; /* space_avail; */
+ SMB_BIG_UINT dfree, dsize, bsize;
+ SMB_OFF_T file_size, space_avail;
BOOL exist;
int rc = -1;
file_name = strdup(inname);
ALLOC_CHECK(file_name, done);
- recbin = NULL;
- if (recycle_bin_private_handle) {
- recdata = (recycle_bin_private_data *)(recycle_bin_private_handle->data);
- if (recdata) {
- if (recdata->conns) {
- recconn = recdata->conns;
- while (recconn && recconn->conn != SNUM(conn)) recconn = recconn->next;
- if (recconn != NULL) {
- recbin = recconn->data;
- }
- }
- }
- }
- if (recbin == NULL) {
+ if (conn->vfs_private)
+ recbin = (recycle_bin_struct *)conn->vfs_private;
+ else {
DEBUG(0, ("Recycle bin not initialized!\n"));
rc = default_vfs_ops.unlink(conn, file_name);
goto done;
diff --git a/source3/nsswitch/winbindd.c b/source3/nsswitch/winbindd.c
index c99bb39f7d..e1bb7179e5 100644
--- a/source3/nsswitch/winbindd.c
+++ b/source3/nsswitch/winbindd.c
@@ -264,7 +264,6 @@ static struct dispatch_table dispatch_table[] = {
{ WINBINDD_INFO, winbindd_info, "INFO" },
{ WINBINDD_INTERFACE_VERSION, winbindd_interface_version, "INTERFACE_VERSION" },
{ WINBINDD_DOMAIN_NAME, winbindd_domain_name, "DOMAIN_NAME" },
- { WINBINDD_NETBIOS_NAME, winbindd_netbios_name, "NETBIOS_NAME" },
/* WINS functions */
@@ -902,7 +901,6 @@ static void usage(void)
process_loop();
- trustdom_cache_shutdown();
uni_group_cache_shutdown();
return 0;
}
diff --git a/source3/nsswitch/winbindd_misc.c b/source3/nsswitch/winbindd_misc.c
index 0b283812b2..6b7ef382dd 100644
--- a/source3/nsswitch/winbindd_misc.c
+++ b/source3/nsswitch/winbindd_misc.c
@@ -221,15 +221,3 @@ enum winbindd_result winbindd_domain_name(struct winbindd_cli_state *state)
return WINBINDD_OK;
}
-
-/* What's my name again? */
-
-enum winbindd_result winbindd_netbios_name(struct winbindd_cli_state *state)
-{
-
- DEBUG(3, ("[%5d]: request netbios name\n", state->pid));
-
- fstrcpy(state->response.data.netbios_name, global_myname());
-
- return WINBINDD_OK;
-}
diff --git a/source3/nsswitch/winbindd_nss.h b/source3/nsswitch/winbindd_nss.h
index 2c87a77100..5c2db2ac2c 100644
--- a/source3/nsswitch/winbindd_nss.h
+++ b/source3/nsswitch/winbindd_nss.h
@@ -36,7 +36,7 @@
/* Update this when you change the interface. */
-#define WINBIND_INTERFACE_VERSION 7
+#define WINBIND_INTERFACE_VERSION 6
/* Socket commands */
@@ -102,7 +102,6 @@ enum winbindd_cmd {
/* this is like GETGRENT but gives an empty group list */
WINBINDD_GETGRLST,
- WINBINDD_NETBIOS_NAME, /* The netbios name of the server */
/* Placeholder for end of cmd list */
WINBINDD_NUM_CMDS
@@ -222,7 +221,6 @@ struct winbindd_response {
fstring samba_version;
} info;
fstring domain_name;
- fstring netbios_name;
struct auth_reply {
uint32 nt_status;
diff --git a/source3/nsswitch/winbindd_util.c b/source3/nsswitch/winbindd_util.c
index 6d39df9c0a..7a5fa3be20 100644
--- a/source3/nsswitch/winbindd_util.c
+++ b/source3/nsswitch/winbindd_util.c
@@ -178,7 +178,7 @@ void rescan_trusted_domains(void)
int i;
result = domain->methods->trusted_domains(domain, mem_ctx, &num_domains,
- &names, &alt_names, &dom_sids);
+ &names, &alt_names, &dom_sids);
if (!NT_STATUS_IS_OK(result)) {
continue;
}
@@ -187,12 +187,9 @@ void rescan_trusted_domains(void)
the access methods of its parent */
for(i = 0; i < num_domains; i++) {
DEBUG(10,("Found domain %s\n", names[i]));
- add_trusted_domain(names[i], alt_names?alt_names[i]:NULL,
- domain->methods, &dom_sids[i]);
-
- /* store trusted domain in the cache */
- trustdom_cache_store(names[i], alt_names ? alt_names[i] : NULL,
- &dom_sids[i], t + WINBINDD_RESCAN_FREQ);
+ add_trusted_domain(names[i],
+ alt_names?alt_names[i]:NULL,
+ domain->methods, &dom_sids[i]);
}
}
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 73456bbd11..291bfecba0 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -81,13 +81,6 @@ extern int extra_time_offset;
static BOOL defaults_saved = False;
-typedef struct _param_opt_struct param_opt_struct;
-struct _param_opt_struct {
- param_opt_struct *prev, *next;
- char *key;
- char *value;
-};
-
/*
* This structure describes global (ie., server-wide) parameters.
*/
@@ -118,8 +111,6 @@ typedef struct
char *szSMBPasswdFile;
char *szPrivateDir;
char **szPassdbBackend;
- char **szSamBackend;
- char **szModules;
char *szPasswordServer;
char *szSocketOptions;
char *szRealm;
@@ -278,7 +269,6 @@ typedef struct
BOOL bKernelChangeNotify;
int restrict_anonymous;
int name_cache_timeout;
- param_opt_struct *param_opt;
}
global;
@@ -400,7 +390,6 @@ typedef struct
BOOL bNTAclSupport;
BOOL bUseSendfile;
BOOL bProfileAcls;
- param_opt_struct *param_opt;
char dummy[3]; /* for alignment */
}
@@ -520,8 +509,6 @@ static service sDefault = {
True, /* bNTAclSupport */
False, /* bUseSendfile */
False, /* bProfileAcls */
-
- NULL, /* Parametric options */
"" /* dummy */
};
@@ -752,7 +739,6 @@ static struct parm_struct parm_table[] = {
{"smb passwd file", P_STRING, P_GLOBAL, &Globals.szSMBPasswdFile, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"private dir", P_STRING, P_GLOBAL, &Globals.szPrivateDir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"passdb backend", P_LIST, P_GLOBAL, &Globals.szPassdbBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
- {"sam backend", P_LIST, P_GLOBAL, &Globals.szSamBackend, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"non unix account range", P_STRING, P_GLOBAL, &Globals.szNonUnixAccountRange, handle_non_unix_account_range, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"algorithmic rid base", P_INTEGER, P_GLOBAL, &Globals.bAlgorithmicRidBase, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
{"root directory", P_STRING, P_GLOBAL, &Globals.szRootdir, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
@@ -814,7 +800,6 @@ static struct parm_struct parm_table[] = {
{"allow hosts", P_LIST, P_LOCAL, &sDefault.szHostsallow, NULL, NULL, FLAG_HIDE},
{"hosts deny", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_GLOBAL | FLAG_BASIC | FLAG_ADVANCED | FLAG_SHARE | FLAG_PRINT | FLAG_DEVELOPER},
{"deny hosts", P_LIST, P_LOCAL, &sDefault.szHostsdeny, NULL, NULL, FLAG_HIDE},
- {"modules", P_LIST, P_GLOBAL, &Globals.szModules, NULL, NULL, FLAG_BASIC | FLAG_GLOBAL},
{"Logging Options", P_SEP, P_SEPARATOR},
@@ -1592,8 +1577,6 @@ FN_GLOBAL_STRING(lp_nis_home_map_name, &Globals.szNISHomeMapName)
static FN_GLOBAL_STRING(lp_announce_version, &Globals.szAnnounceVersion)
FN_GLOBAL_LIST(lp_netbios_aliases, &Globals.szNetbiosAliases)
FN_GLOBAL_LIST(lp_passdb_backend, &Globals.szPassdbBackend)
-FN_GLOBAL_LIST(lp_sam_backend, &Globals.szSamBackend)
-FN_GLOBAL_LIST(lp_modules, &Globals.szModules)
FN_GLOBAL_STRING(lp_panic_action, &Globals.szPanicAction)
FN_GLOBAL_STRING(lp_adduser_script, &Globals.szAddUserScript)
FN_GLOBAL_STRING(lp_deluser_script, &Globals.szDelUserScript)
@@ -1828,6 +1811,49 @@ FN_GLOBAL_BOOL(lp_hide_local_users, &Globals.bHideLocalUsers)
FN_GLOBAL_BOOL(lp_algorithmic_rid_base, &Globals.bAlgorithmicRidBase)
FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout)
+typedef struct _param_opt_struct param_opt_struct;
+struct _param_opt_struct {
+ char *key;
+ char *value;
+ param_opt_struct *prev, *next;
+};
+
+static param_opt_struct *param_opt = NULL;
+
+/* Return parametric option from given service. Type is a part of option before ':' */
+/* Parametric option has following syntax: 'Type: option = value' */
+/* Returned value is allocated in 'lp_talloc' context */
+
+char *lp_parm_string(const char *servicename, const char *type, const char *option)
+{
+ param_opt_struct *data;
+ pstring vfskey;
+
+ if (param_opt != NULL) {
+ ZERO_STRUCT(vfskey);
+ pstr_sprintf(vfskey, "%s:%s:%s", (servicename==NULL) ? "global" : servicename,
+ type, option);
+ data = param_opt;
+ while (data) {
+ if (strcmp(data->key, vfskey) == 0) {
+ return lp_string(data->value);
+ }
+ data = data->next;
+ }
+ /* Try to fetch the same option but from globals */
+ pstr_sprintf(vfskey, "global:%s:%s", type, option);
+ data = param_opt;
+ while (data) {
+ if (strcmp(data->key, vfskey) == 0) {
+ return lp_string(data->value);
+ }
+ data = data->next;
+ }
+
+ }
+ return NULL;
+}
+
/* local prototypes */
static int map_parameter(const char *pszParmName);
@@ -1841,198 +1867,6 @@ static BOOL do_parameter(const char *pszParmName, const char *pszParmValue);
static BOOL do_section(const char *pszSectionName);
static void init_copymap(service * pservice);
-/* This is a helper function for parametrical options support. */
-/* It returns a pointer to parametrical option value if it exists or NULL otherwise */
-/* Actual parametrical functions are quite simple */
-static const char *get_parametrics(int lookup_service, const char *type, const char *option)
-{
- char* vfskey;
- param_opt_struct *data;
-
- if (lookup_service >= iNumServices) return NULL;
-
- data = (lookup_service < 0) ?
- Globals.param_opt : ServicePtrs[lookup_service]->param_opt;
-
- asprintf(&vfskey, "%s:%s", type, option);
- while (data) {
- if (strcmp(data->key, vfskey) == 0) {
- string_free(&vfskey);
- return data->value;
- }
- data = data->next;
- }
-
- if (lookup_service >= 0) {
- /* Try to fetch the same option but from globals */
- /* but only if we are not already working with Globals */
- data = Globals.param_opt;
- while (data) {
- if (strcmp(data->key, vfskey) == 0) {
- string_free(&vfskey);
- return data->value;
- }
- data = data->next;
- }
- }
-
- string_free(&vfskey);
-
- return NULL;
-}
-
-
-/*******************************************************************
-convenience routine to return int parameters.
-********************************************************************/
-static int lp_int(const char *s)
-{
-
- if (!s) {
- DEBUG(0,("lp_int(%s): is called with NULL!\n",s));
- return (-1);
- }
-
- return atoi(s);
-}
-
-/*******************************************************************
-convenience routine to return unsigned long parameters.
-********************************************************************/
-static int lp_ulong(const char *s)
-{
-
- if (!s) {
- DEBUG(0,("lp_int(%s): is called with NULL!\n",s));
- return (-1);
- }
-
- return strtoul(s, NULL, 10);
-}
-
-/*******************************************************************
-convenience routine to return boolean parameters.
-********************************************************************/
-static BOOL lp_bool(const char *s)
-{
- BOOL ret = False;
-
- if (!s) {
- DEBUG(0,("lp_bool(%s): is called with NULL!\n",s));
- return False;
- }
-
- if (!set_boolean(&ret,s)) {
- DEBUG(0,("lp_bool(%s): value is not boolean!\n",s));
- return False;
- }
-
- return ret;
-}
-
-/*******************************************************************
-convenience routine to return enum parameters.
-********************************************************************/
-static int lp_enum(const char *s,const struct enum_list *_enum)
-{
- int i;
-
- if (!s || !_enum) {
- DEBUG(0,("lp_enum(%s,enum): is called with NULL!\n",s));
- return False;
- }
-
- for (i=0; _enum[i].name; i++) {
- if (strcasecmp(_enum[i].name,s)==0)
- return _enum[i].value;
- }
-
- DEBUG(0,("lp_enum(%s,enum): value is not in enum_list!\n",s));
- return (-1);
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-/* Returned value is allocated in 'lp_talloc' context */
-
-char *lp_parm_string(int lookup_service, const char *type, const char *option)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return lp_string(value);
-
- return NULL;
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-/* Returned value is allocated in 'lp_talloc' context */
-
-char **lp_parm_string_list(int lookup_service, const char *type, const char *option,
- const char *separator)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return str_list_make(value, separator);
-
- return NULL;
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-
-int lp_parm_int(int lookup_service, const char *type, const char *option)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return lp_int(value);
-
- return (-1);
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-
-unsigned long lp_parm_ulong(int lookup_service, const char *type, const char *option)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return lp_ulong(value);
-
- return (0);
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-
-BOOL lp_parm_bool(int lookup_service, const char *type, const char *option)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return lp_bool(value);
-
- return False;
-}
-
-/* Return parametric option from a given service. Type is a part of option before ':' */
-/* Parametric option has following syntax: 'Type: option = value' */
-
-int lp_parm_enum(int lookup_service, const char *type, const char *option,
- const struct enum_list *_enum)
-{
- const char *value = get_parametrics(lookup_service, type, option);
-
- if (value)
- return lp_enum(value, _enum);
-
- return (-1);
-}
-
/***************************************************************************
Initialise a service to the defaults.
@@ -2051,7 +1885,6 @@ static void init_service(service * pservice)
static void free_service(service *pservice)
{
int i;
- param_opt_struct *data, *pdata;
if (!pservice)
return;
@@ -2076,16 +1909,6 @@ static void free_service(service *pservice)
PTR_DIFF(parm_table[i].ptr, &sDefault)));
}
- DEBUG(5,("Freeing parametrics:\n"));
- data = pservice->param_opt;
- while (data) {
- DEBUG(5,("[%s = %s]\n", data->key, data->value));
- string_free(&data->key);
- string_free(&data->value);
- pdata = data->next;
- SAFE_FREE(data);
- data = pdata;
- }
ZERO_STRUCTP(pservice);
}
@@ -2100,27 +1923,14 @@ static int add_a_service(const service *pservice, const char *name)
int i;
service tservice;
int num_to_alloc = iNumServices + 1;
- param_opt_struct *data, *pdata;
tservice = *pservice;
/* it might already exist */
if (name) {
i = getservicebyname(name, NULL);
- if (i >= 0) {
- /* Clean all parametric options for service */
- /* They will be added during parsing again */
- data = ServicePtrs[i]->param_opt;
- while (data) {
- string_free(&data->key);
- string_free(&data->value);
- pdata = data->next;
- SAFE_FREE(data);
- data = pdata;
- }
- ServicePtrs[i]->param_opt = NULL;
+ if (i >= 0)
return (i);
- }
}
/* find an invalid one */
@@ -2363,8 +2173,6 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL
{
int i;
BOOL bcopyall = (pcopymapDest == NULL);
- param_opt_struct *data, *pdata, *paramo;
- BOOL not_added;
for (i = 0; parm_table[i].label; i++)
if (parm_table[i].ptr && parm_table[i].class == P_LOCAL &&
@@ -2418,30 +2226,6 @@ static void copy_service(service * pserviceDest, service * pserviceSource, BOOL
(void *)pserviceSource->copymap,
sizeof(BOOL) * NUMPARAMETERS);
}
-
- data = pserviceSource->param_opt;
- while (data) {
- not_added = True;
- pdata = pserviceDest->param_opt;
- /* Traverse destination */
- while (pdata) {
- /* If we already have same option, override it */
- if (strcmp(pdata->key, data->key) == 0) {
- string_free(&pdata->value);
- pdata->value = strdup(data->value);
- not_added = False;
- break;
- }
- pdata = pdata->next;
- }
- if (not_added) {
- paramo = smb_xmalloc(sizeof(param_opt_struct));
- paramo->key = strdup(data->key);
- paramo->value = strdup(data->value);
- DLIST_ADD(pserviceDest->param_opt, paramo);
- }
- data = data->next;
- }
}
/***************************************************************************
@@ -3056,8 +2840,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
void *def_ptr = NULL;
pstring vfskey;
char *sep;
- param_opt_struct *paramo, *data;
- BOOL not_added;
+ param_opt_struct *paramo;
parmnum = map_parameter(pszParmName);
@@ -3065,35 +2848,15 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
if ((sep=strchr(pszParmName, ':')) != NULL) {
*sep = 0;
ZERO_STRUCT(vfskey);
- pstr_sprintf(vfskey, "%s:", pszParmName);
+ pstr_sprintf(vfskey, "%s:%s:",
+ (snum >= 0) ? lp_servicename(snum) : "global", pszParmName);
slen = strlen(vfskey);
safe_strcat(vfskey, sep+1, sizeof(pstring));
trim_string(vfskey+slen, " ", " ");
- not_added = True;
- data = (snum < 0) ? Globals.param_opt :
- ServicePtrs[snum]->param_opt;
- /* Traverse destination */
- while (data) {
- /* If we already have same option, override it */
- if (strcmp(data->key, vfskey) == 0) {
- string_free(&data->value);
- data->value = strdup(pszParmValue);
- not_added = False;
- break;
- }
- data = data->next;
- }
- if (not_added) {
- paramo = smb_xmalloc(sizeof(param_opt_struct));
- paramo->key = strdup(vfskey);
- paramo->value = strdup(pszParmValue);
- if (snum < 0) {
- DLIST_ADD(Globals.param_opt, paramo);
- } else {
- DLIST_ADD(ServicePtrs[snum]->param_opt, paramo);
- }
- }
-
+ paramo = smb_xmalloc(sizeof(param_opt_struct));
+ paramo->key = strdup(vfskey);
+ paramo->value = strdup(pszParmValue);
+ DLIST_ADD(param_opt, paramo);
*sep = ':';
return (True);
}
@@ -3442,6 +3205,7 @@ static void dump_globals(FILE *f)
{
int i;
param_opt_struct *data;
+ char *s;
fprintf(f, "# Global parameters\n[global]\n");
@@ -3455,11 +3219,14 @@ static void dump_globals(FILE *f)
print_parameter(&parm_table[i], parm_table[i].ptr, f);
fprintf(f, "\n");
}
- if (Globals.param_opt != NULL) {
- data = Globals.param_opt;
+ if (param_opt != NULL) {
+ data = param_opt;
while(data) {
- fprintf(f, "\t%s = %s\n", data->key, data->value);
- data = data->next;
+ if (((s=strstr(data->key, "global")) == data->key) &&
+ (*(s+strlen("global")) == ':')) {
+ fprintf(f, "\t%s = %s\n", s+strlen("global")+1, data->value);
+ }
+ data = data->next;
}
}
@@ -3486,6 +3253,7 @@ static void dump_a_service(service * pService, FILE * f)
{
int i;
param_opt_struct *data;
+ char *s, *sn;
if (pService != &sDefault)
fprintf(f, "\n[%s]\n", pService->szService);
@@ -3514,11 +3282,15 @@ static void dump_a_service(service * pService, FILE * f)
((char *)pService) + pdiff, f);
fprintf(f, "\n");
}
- if (pService->param_opt != NULL) {
- data = pService->param_opt;
+ if (param_opt != NULL) {
+ data = param_opt;
+ sn = (pService == &sDefault) ? "global" : pService->szService;
while(data) {
- fprintf(f, "\t%s = %s\n", data->key, data->value);
- data = data->next;
+ if (((s=strstr(data->key, sn)) == data->key) &&
+ (*(s+strlen(sn)) == ':')) {
+ fprintf(f, "\t%s = %s\n", s+strlen(sn)+1, data->value);
+ }
+ data = data->next;
}
}
}
@@ -3853,16 +3625,16 @@ BOOL lp_load(const char *pszFname, BOOL global_only, BOOL save_defaults,
lp_save_defaults();
}
- if (Globals.param_opt != NULL) {
- data = Globals.param_opt;
+ if (param_opt != NULL) {
+ data = param_opt;
while (data) {
- string_free(&data->key);
- string_free(&data->value);
+ SAFE_FREE(data->key);
+ SAFE_FREE(data->value);
pdata = data->next;
SAFE_FREE(data);
data = pdata;
}
- Globals.param_opt = NULL;
+ param_opt = NULL;
}
/* We get sections first, so have to start 'behind' to make up */
diff --git a/source3/passdb/pdb_interface.c b/source3/passdb/pdb_interface.c
index 778cb9425c..d21cc1d355 100644
--- a/source3/passdb/pdb_interface.c
+++ b/source3/passdb/pdb_interface.c
@@ -25,11 +25,8 @@
#define DBGC_CLASS DBGC_PASSDB
/** List of various built-in passdb modules */
-static const struct {
- const char *name;
- /* Function to create a member of the pdb_methods list */
- pdb_init_function init;
-} builtin_pdb_init_functions[] = {
+
+const struct pdb_init_function_entry builtin_pdb_init_functions[] = {
{ "smbpasswd", pdb_init_smbpasswd },
{ "smbpasswd_nua", pdb_init_smbpasswd_nua },
{ "tdbsam", pdb_init_tdbsam },
@@ -38,53 +35,10 @@ static const struct {
{ "ldapsam_nua", pdb_init_ldapsam_nua },
{ "unixsam", pdb_init_unixsam },
{ "nisplussam", pdb_init_nisplussam },
+ { "plugin", pdb_init_plugin },
{ NULL, NULL}
};
-static struct pdb_init_function_entry *backends;
-static void lazy_initialize_passdb(void);
-
-static void lazy_initialize_passdb()
-{
- int i;
- static BOOL initialised = False;
-
- if(!initialised) {
- initialised = True;
-
- for(i = 0; builtin_pdb_init_functions[i].name; i++) {
- smb_register_passdb(builtin_pdb_init_functions[i].name, builtin_pdb_init_functions[i].init, PASSDB_INTERFACE_VERSION);
- }
- }
-}
-
-BOOL smb_register_passdb(const char *name, pdb_init_function init, int version)
-{
- struct pdb_init_function_entry *entry = backends;
-
- if(version != PASSDB_INTERFACE_VERSION)
- return False;
-
- DEBUG(5,("Attempting to register passdb backend %s\n", name));
-
- /* Check for duplicates */
- while(entry) {
- if(strcasecmp(name, entry->name) == 0) {
- DEBUG(0,("There already is a passdb backend registered with the name %s!\n", name));
- return False;
- }
- entry = entry->next;
- }
-
- entry = smb_xmalloc(sizeof(struct pdb_init_function_entry));
- entry->name = name;
- entry->init = init;
-
- DLIST_ADD(backends, entry);
- DEBUG(5,("Successfully added passdb backend '%s'\n", name));
- return True;
-}
-
static NTSTATUS context_setsampwent(struct pdb_context *context, BOOL update)
{
NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
@@ -417,12 +371,8 @@ static NTSTATUS make_pdb_methods_name(struct pdb_methods **methods, struct pdb_c
{
char *module_name = smb_xstrdup(selected);
char *module_location = NULL, *p;
- struct pdb_init_function_entry *entry;
NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-
- lazy_initialize_passdb();
-
- entry = backends;
+ int i;
p = strchr(module_name, ':');
@@ -435,11 +385,12 @@ static NTSTATUS make_pdb_methods_name(struct pdb_methods **methods, struct pdb_c
trim_string(module_name, " ", " ");
DEBUG(5,("Attempting to find an passdb backend to match %s (%s)\n", selected, module_name));
- while(entry) {
- if (strequal(entry->name, module_name))
+ for (i = 0; builtin_pdb_init_functions[i].name; i++)
+ {
+ if (strequal(builtin_pdb_init_functions[i].name, module_name))
{
- DEBUG(5,("Found pdb backend %s\n", module_name));
- nt_status = entry->init(context, methods, module_location);
+ DEBUG(5,("Found pdb backend %s (at pos %d)\n", module_name, i));
+ nt_status = builtin_pdb_init_functions[i].init(context, methods, module_location);
if (NT_STATUS_IS_OK(nt_status)) {
DEBUG(5,("pdb backend %s has a valid init\n", selected));
} else {
@@ -449,7 +400,6 @@ static NTSTATUS make_pdb_methods_name(struct pdb_methods **methods, struct pdb_c
return nt_status;
break; /* unreached */
}
- entry = entry->next;
}
/* No such backend found */
diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c
index e98a2cf04f..7e443a97c6 100644
--- a/source3/passdb/pdb_ldap.c
+++ b/source3/passdb/pdb_ldap.c
@@ -218,7 +218,7 @@ static int ldapsam_open_connection (struct ldapsam_privates *ldap_state, LDAP **
DEBUG(3,("LDAPS option set...!\n"));
#else
- DEBUG(0,("ldapsam_open_connection: Secure connection not supported by LDAP client libraries!\n"));
+ DEBUG(0,("ldap_open_connection: Secure connection not supported by LDAP client libraries!\n"));
return LDAP_OPERATIONS_ERROR;
#endif
}
@@ -254,12 +254,12 @@ static int ldapsam_open_connection (struct ldapsam_privates *ldap_state, LDAP **
return LDAP_OPERATIONS_ERROR;
}
#else
- DEBUG(0,("ldapsam_open_connection: StartTLS not supported by LDAP client libraries!\n"));
+ DEBUG(0,("ldap_open_connection: StartTLS not supported by LDAP client libraries!\n"));
return LDAP_OPERATIONS_ERROR;
#endif
}
- DEBUG(2, ("ldapsam_open_connection: connection opened\n"));
+ DEBUG(2, ("ldap_open_connection: connection opened\n"));
return rc;
}
@@ -284,7 +284,7 @@ static int rebindproc_with_state (LDAP * ld, char **whop, char **credp,
memset(*credp, '\0', strlen(*credp));
SAFE_FREE(*credp);
} else {
- DEBUG(5,("rebind_proc_with_state: Rebinding as \"%s\"\n",
+ DEBUG(5,("ldap_connect_system: Rebinding as \"%s\"\n",
ldap_state->bind_dn));
*whop = strdup(ldap_state->bind_dn);
@@ -315,7 +315,7 @@ static int rebindproc_connect_with_state (LDAP *ldap_struct,
{
struct ldapsam_privates *ldap_state = arg;
int rc;
- DEBUG(5,("rebindproc_connect_with_state: Rebinding as \"%s\"\n",
+ DEBUG(5,("ldap_connect_system: Rebinding as \"%s\"\n",
ldap_state->bind_dn));
/** @TODO Should we be doing something to check what servers we rebind to?
@@ -385,8 +385,8 @@ static int ldapsam_connect_system(struct ldapsam_privates *ldap_state, LDAP * ld
/* removed the sasl_bind_s "EXTERNAL" stuff, as my testsuite
(OpenLDAP) doesnt' seem to support it */
- DEBUG(10,("ldap_connect_system: Binding to ldap server %s as \"%s\"\n",
- ldap_state->uri, ldap_dn));
+ DEBUG(10,("ldap_connect_system: Binding to ldap server as \"%s\"\n",
+ ldap_dn));
#if defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)
# if LDAP_SET_REBIND_PROC_ARGS == 2
@@ -407,14 +407,7 @@ static int ldapsam_connect_system(struct ldapsam_privates *ldap_state, LDAP * ld
rc = ldap_simple_bind_s(ldap_struct, ldap_dn, ldap_secret);
if (rc != LDAP_SUCCESS) {
- char *ld_error;
- ldap_get_option(ldap_state->ldap_struct, LDAP_OPT_ERROR_STRING,
- &ld_error);
- DEBUG(0,
- ("failed to bind to server with dn= %s Error: %s\n\t%s\n",
- ldap_dn, ldap_err2string(rc),
- ld_error));
- free(ld_error);
+ DEBUG(0, ("Bind failed: %s\n", ldap_err2string(rc)));
return rc;
}
@@ -1860,8 +1853,7 @@ static NTSTATUS ldapsam_add_sam_account(struct pdb_methods *my_methods, SAM_ACCO
}
if (ldap_count_entries(ldap_state->ldap_struct, result) != 0) {
- DEBUG(0,("User '%s' already in the base, with samba properties\n",
- username));
+ DEBUG(0,("User already in the base, with samba properties\n"));
ldap_msgfree(result);
return NT_STATUS_UNSUCCESSFUL;
}
diff --git a/source3/modules/mysql.c b/source3/passdb/pdb_mysql.c
index 1d5819295b..d0f30c6394 100644
--- a/source3/modules/mysql.c
+++ b/source3/passdb/pdb_mysql.c
@@ -1,4 +1,3 @@
-
/*
* MySQL password backend for samba
* Copyright (C) Jelmer Vernooij 2002
@@ -64,10 +63,12 @@ static int mysqlsam_debug_level = DBGC_ALL;
#undef DBGC_CLASS
#define DBGC_CLASS mysqlsam_debug_level
+PDB_MODULE_VERSIONING_MAGIC
+
typedef struct pdb_mysql_data {
MYSQL *handle;
MYSQL_RES *pwent;
- const char *location;
+ char *location;
} pdb_mysql_data;
/* Used to construct insert and update queries */
@@ -946,8 +947,8 @@ static NTSTATUS mysqlsam_enum_group_mapping(struct pdb_methods *methods,
}
-static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_methods ** pdb_method,
- const char *location)
+NTSTATUS pdb_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
+ char *location)
{
NTSTATUS nt_status;
struct pdb_mysql_data *data;
@@ -1031,13 +1032,3 @@ static NTSTATUS mysqlsam_init(struct pdb_context * pdb_context, struct pdb_metho
return NT_STATUS_OK;
}
-
-int init_module(void);
-
-int init_module()
-{
- if(smb_register_passdb("mysql", mysqlsam_init, PASSDB_INTERFACE_VERSION))
- return 0;
-
- return 1;
-}
diff --git a/source3/sam/sam_plugin.c b/source3/passdb/pdb_plugin.c
index fd26c4b8d3..ea67da23a5 100644
--- a/source3/sam/sam_plugin.c
+++ b/source3/passdb/pdb_plugin.c
@@ -1,9 +1,8 @@
/*
Unix SMB/CIFS implementation.
- Loadable san module interface.
- Copyright (C) Jelmer Vernooij 2002
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
+ Loadable passdb module interface.
+ Copyright (C) Jelmer Vernooij 2002
+ Copyright (C) Andrew Bartlett 2002
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -23,57 +22,57 @@
#include "includes.h"
#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
+#define DBGC_CLASS DBGC_PASSDB
-NTSTATUS sam_init_plugin(SAM_METHODS *sam_methods, const char *module_params)
+NTSTATUS pdb_init_plugin(PDB_CONTEXT *pdb_context, PDB_METHODS **pdb_method, const char *location)
{
- void *dl_handle;
- char *plugin_params, *plugin_name, *p;
- sam_init_function plugin_init;
+ void * dl_handle;
+ char *plugin_location, *plugin_name, *p;
+ pdb_init_function plugin_init;
int (*plugin_version)(void);
- if (module_params == NULL) {
+ if (location == NULL) {
DEBUG(0, ("The plugin module needs an argument!\n"));
return NT_STATUS_UNSUCCESSFUL;
}
- plugin_name = smb_xstrdup(module_params);
+ plugin_name = smb_xstrdup(location);
p = strchr(plugin_name, ':');
if (p) {
*p = 0;
- plugin_params = p+1;
- trim_string(plugin_params, " ", " ");
- } else plugin_params = NULL;
+ plugin_location = p+1;
+ trim_string(plugin_location, " ", " ");
+ } else plugin_location = NULL;
trim_string(plugin_name, " ", " ");
DEBUG(5, ("Trying to load sam plugin %s\n", plugin_name));
- dl_handle = sys_dlopen(plugin_name, RTLD_NOW);
+ dl_handle = sys_dlopen(plugin_name, RTLD_NOW );
if (!dl_handle) {
DEBUG(0, ("Failed to load sam plugin %s using sys_dlopen (%s)\n", plugin_name, sys_dlerror()));
return NT_STATUS_UNSUCCESSFUL;
}
- plugin_version = sys_dlsym(dl_handle, "sam_version");
+ plugin_version = sys_dlsym(dl_handle, "pdb_version");
if (!plugin_version) {
sys_dlclose(dl_handle);
- DEBUG(0, ("Failed to find function 'sam_version' using sys_dlsym in sam plugin %s (%s)\n", plugin_name, sys_dlerror()));
+ DEBUG(0, ("Failed to find function 'pdb_version' using sys_dlsym in sam plugin %s (%s)\n", plugin_name, sys_dlerror()));
return NT_STATUS_UNSUCCESSFUL;
}
- if (plugin_version()!=SAM_INTERFACE_VERSION) {
+ if (plugin_version() != PASSDB_INTERFACE_VERSION) {
sys_dlclose(dl_handle);
- DEBUG(0, ("Wrong SAM_INTERFACE_VERSION! sam plugin has version %d and version %d is needed! Please update!\n",
- plugin_version(),SAM_INTERFACE_VERSION));
+ DEBUG(0, ("Wrong PASSDB_INTERFACE_VERSION! sam plugin has version %d and version %d is needed! Please update!\n",
+ plugin_version(),PASSDB_INTERFACE_VERSION));
return NT_STATUS_UNSUCCESSFUL;
}
- plugin_init = sys_dlsym(dl_handle, "sam_init");
+ plugin_init = sys_dlsym(dl_handle, "pdb_init");
if (!plugin_init) {
sys_dlclose(dl_handle);
- DEBUG(0, ("Failed to find function 'sam_init' using sys_dlsym in sam plugin %s (%s)\n", plugin_name, sys_dlerror()));
+ DEBUG(0, ("Failed to find function 'pdb_init' using sys_dlsym in sam plugin %s (%s)\n", plugin_name, sys_dlerror()));
return NT_STATUS_UNSUCCESSFUL;
}
- DEBUG(5, ("Starting sam plugin %s with parameters %s for domain %s\n", plugin_name, plugin_params, sam_methods->domain_name));
- return plugin_init(sam_methods, plugin_params);
+ DEBUG(5, ("Starting sam plugin %s with location %s\n", plugin_name, plugin_location));
+ return plugin_init(pdb_context, pdb_method, plugin_location);
}
diff --git a/source3/modules/xml.c b/source3/passdb/pdb_xml.c
index ead3e3a874..edf70250e2 100644
--- a/source3/modules/xml.c
+++ b/source3/passdb/pdb_xml.c
@@ -40,6 +40,8 @@ static int xmlsam_debug_level = DBGC_ALL;
#undef DBGC_CLASS
#define DBGC_CLASS xmlsam_debug_level
+PDB_MODULE_VERSIONING_MAGIC
+
static char * iota(int a) {
static char tmp[10];
@@ -512,7 +514,7 @@ static NTSTATUS xmlsam_add_sam_account(struct pdb_methods *methods, SAM_ACCOUNT
return NT_STATUS_OK;
}
-NTSTATUS xmlsam_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
+NTSTATUS pdb_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
const char *location)
{
NTSTATUS nt_status;
@@ -563,13 +565,3 @@ NTSTATUS xmlsam_init(PDB_CONTEXT * pdb_context, PDB_METHODS ** pdb_method,
return NT_STATUS_OK;
}
-
-int init_module(void);
-
-int init_module()
-{
- if(smb_register_passdb("xml", xmlsam_init, PASSDB_INTERFACE_VERSION))
- return 0;
-
- return 1;
-}
diff --git a/source3/rpc_server/srv_dfs.c b/source3/rpc_server/srv_dfs.c
index f6e9ca3d56..676ad8e3f3 100644
--- a/source3/rpc_server/srv_dfs.c
+++ b/source3/rpc_server/srv_dfs.c
@@ -3,9 +3,8 @@
* RPC Pipe client / server routines for Dfs
* Copyright (C) Andrew Tridgell 1992-1997,
* Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
- * Copyright (C) Shirish Kalele 2000,
- * Copyright (C) Jeremy Allison 2001,
- * Copyright (C) Anthony Liguori 2003.
+ * Copyright (C) Shirish Kalele 2000.
+ * Copyright (C) Jeremy Allison 2001.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -158,20 +157,21 @@ static BOOL api_dfs_enum(pipes_struct *p)
\pipe\netdfs commands
********************************************************************/
-#ifdef RPC_DFS_DYNAMIC
-int rpc_pipe_init(void)
-#else
-int rpc_dfs_init(void)
-#endif
+struct api_struct api_netdfs_cmds[] =
{
- struct api_struct api_netdfs_cmds[] =
- {
- {"DFS_EXIST", DFS_EXIST, api_dfs_exist },
- {"DFS_ADD", DFS_ADD, api_dfs_add },
- {"DFS_REMOVE", DFS_REMOVE, api_dfs_remove },
- {"DFS_GET_INFO", DFS_GET_INFO, api_dfs_get_info },
- {"DFS_ENUM", DFS_ENUM, api_dfs_enum }
- };
- return rpc_pipe_register_commands("netdfs", "netdfs", api_netdfs_cmds,
- sizeof(api_netdfs_cmds) / sizeof(struct api_struct));
+ {"DFS_EXIST", DFS_EXIST, api_dfs_exist },
+ {"DFS_ADD", DFS_ADD, api_dfs_add },
+ {"DFS_REMOVE", DFS_REMOVE, api_dfs_remove },
+ {"DFS_GET_INFO", DFS_GET_INFO, api_dfs_get_info },
+ {"DFS_ENUM", DFS_ENUM, api_dfs_enum },
+ {NULL, 0, NULL }
+};
+
+/*******************************************************************
+receives a netdfs pipe and responds.
+********************************************************************/
+
+BOOL api_netdfs_rpc(pipes_struct *p)
+{
+ return api_rpcTNP(p, "api_netdfs_rpc", api_netdfs_cmds);
}
diff --git a/source3/rpc_server/srv_lsa.c b/source3/rpc_server/srv_lsa.c
index 815de390ec..a2c2290fb7 100644
--- a/source3/rpc_server/srv_lsa.c
+++ b/source3/rpc_server/srv_lsa.c
@@ -5,8 +5,7 @@
* Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
* Copyright (C) Paul Ashton 1997,
* Copyright (C) Jeremy Allison 2001,
- * Copyright (C) Jim McDonough 2002,
- * Copyright (C) Anthony Liguori 2003.
+ * Copyright (C) Jim McDonough 2002.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -646,36 +645,35 @@ static BOOL api_lsa_query_info2(pipes_struct *p)
\PIPE\ntlsa commands
***************************************************************************/
-#ifdef RPC_LSA_DYNAMIC
-int rpc_pipe_init(void)
-#else
-int rpc_lsa_init(void)
-#endif
+static const struct api_struct api_lsa_cmds[] =
{
- static const struct api_struct api_lsa_cmds[] =
- {
- { "LSA_OPENPOLICY2" , LSA_OPENPOLICY2 , api_lsa_open_policy2 },
- { "LSA_OPENPOLICY" , LSA_OPENPOLICY , api_lsa_open_policy },
- { "LSA_QUERYINFOPOLICY" , LSA_QUERYINFOPOLICY , api_lsa_query_info },
- { "LSA_ENUMTRUSTDOM" , LSA_ENUMTRUSTDOM , api_lsa_enum_trust_dom },
- { "LSA_CLOSE" , LSA_CLOSE , api_lsa_close },
- { "LSA_OPENSECRET" , LSA_OPENSECRET , api_lsa_open_secret },
- { "LSA_LOOKUPSIDS" , LSA_LOOKUPSIDS , api_lsa_lookup_sids },
- { "LSA_LOOKUPNAMES" , LSA_LOOKUPNAMES , api_lsa_lookup_names },
- { "LSA_ENUM_PRIVS" , LSA_ENUM_PRIVS , api_lsa_enum_privs },
- { "LSA_PRIV_GET_DISPNAME",LSA_PRIV_GET_DISPNAME,api_lsa_priv_get_dispname},
- { "LSA_ENUM_ACCOUNTS" , LSA_ENUM_ACCOUNTS , api_lsa_enum_accounts },
- { "LSA_UNK_GET_CONNUSER", LSA_UNK_GET_CONNUSER, api_lsa_unk_get_connuser },
- { "LSA_OPENACCOUNT" , LSA_OPENACCOUNT , api_lsa_open_account },
- { "LSA_ENUMPRIVSACCOUNT", LSA_ENUMPRIVSACCOUNT, api_lsa_enum_privsaccount},
- { "LSA_GETSYSTEMACCOUNT", LSA_GETSYSTEMACCOUNT, api_lsa_getsystemaccount },
- { "LSA_SETSYSTEMACCOUNT", LSA_SETSYSTEMACCOUNT, api_lsa_setsystemaccount },
- { "LSA_ADDPRIVS" , LSA_ADDPRIVS , api_lsa_addprivs },
- { "LSA_REMOVEPRIVS" , LSA_REMOVEPRIVS , api_lsa_removeprivs },
- { "LSA_QUERYSECOBJ" , LSA_QUERYSECOBJ , api_lsa_query_secobj },
- { "LSA_QUERYINFO2" , LSA_QUERYINFO2 , api_lsa_query_info2 }
- };
-
- return rpc_pipe_register_commands("lsarpc", "lsass", api_lsa_cmds,
- sizeof(api_lsa_cmds) / sizeof(struct api_struct));
+ { "LSA_OPENPOLICY2" , LSA_OPENPOLICY2 , api_lsa_open_policy2 },
+ { "LSA_OPENPOLICY" , LSA_OPENPOLICY , api_lsa_open_policy },
+ { "LSA_QUERYINFOPOLICY" , LSA_QUERYINFOPOLICY , api_lsa_query_info },
+ { "LSA_ENUMTRUSTDOM" , LSA_ENUMTRUSTDOM , api_lsa_enum_trust_dom },
+ { "LSA_CLOSE" , LSA_CLOSE , api_lsa_close },
+ { "LSA_OPENSECRET" , LSA_OPENSECRET , api_lsa_open_secret },
+ { "LSA_LOOKUPSIDS" , LSA_LOOKUPSIDS , api_lsa_lookup_sids },
+ { "LSA_LOOKUPNAMES" , LSA_LOOKUPNAMES , api_lsa_lookup_names },
+ { "LSA_ENUM_PRIVS" , LSA_ENUM_PRIVS , api_lsa_enum_privs },
+ { "LSA_PRIV_GET_DISPNAME",LSA_PRIV_GET_DISPNAME,api_lsa_priv_get_dispname},
+ { "LSA_ENUM_ACCOUNTS" , LSA_ENUM_ACCOUNTS , api_lsa_enum_accounts },
+ { "LSA_UNK_GET_CONNUSER", LSA_UNK_GET_CONNUSER, api_lsa_unk_get_connuser },
+ { "LSA_OPENACCOUNT" , LSA_OPENACCOUNT , api_lsa_open_account },
+ { "LSA_ENUMPRIVSACCOUNT", LSA_ENUMPRIVSACCOUNT, api_lsa_enum_privsaccount},
+ { "LSA_GETSYSTEMACCOUNT", LSA_GETSYSTEMACCOUNT, api_lsa_getsystemaccount },
+ { "LSA_SETSYSTEMACCOUNT", LSA_SETSYSTEMACCOUNT, api_lsa_setsystemaccount },
+ { "LSA_ADDPRIVS" , LSA_ADDPRIVS , api_lsa_addprivs },
+ { "LSA_REMOVEPRIVS" , LSA_REMOVEPRIVS , api_lsa_removeprivs },
+ { "LSA_QUERYSECOBJ" , LSA_QUERYSECOBJ , api_lsa_query_secobj },
+ { "LSA_QUERYINFO2" , LSA_QUERYINFO2 , api_lsa_query_info2 },
+ { NULL , 0 , NULL }
+};
+
+/***************************************************************************
+ api_ntLsarpcTNP
+ ***************************************************************************/
+BOOL api_ntlsa_rpc(pipes_struct *p)
+{
+ return api_rpcTNP(p, "api_ntlsa_rpc", api_lsa_cmds);
}
diff --git a/source3/rpc_server/srv_netlog.c b/source3/rpc_server/srv_netlog.c
index f377d3952b..f96a0e2f2d 100644
--- a/source3/rpc_server/srv_netlog.c
+++ b/source3/rpc_server/srv_netlog.c
@@ -3,9 +3,8 @@
* RPC Pipe client / server routines
* Copyright (C) Andrew Tridgell 1992-1997,
* Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
- * Copyright (C) Paul Ashton 1997,
- * Copyright (C) Jeremy Allison 1998-2001,
- * Copyright (C) Anthony Liguori 2003.
+ * Copyright (C) Paul Ashton 1997.
+ * Copyright (C) Jeremy Allison 1998-2001.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -320,26 +319,25 @@ static BOOL api_net_logon_ctrl(pipes_struct *p)
/*******************************************************************
array of \PIPE\NETLOGON operations
********************************************************************/
+static struct api_struct api_net_cmds [] =
+{
+ { "NET_REQCHAL" , NET_REQCHAL , api_net_req_chal },
+ { "NET_AUTH" , NET_AUTH , api_net_auth },
+ { "NET_AUTH2" , NET_AUTH2 , api_net_auth_2 },
+ { "NET_SRVPWSET" , NET_SRVPWSET , api_net_srv_pwset },
+ { "NET_SAMLOGON" , NET_SAMLOGON , api_net_sam_logon },
+ { "NET_SAMLOGOFF" , NET_SAMLOGOFF , api_net_sam_logoff },
+ { "NET_LOGON_CTRL2" , NET_LOGON_CTRL2 , api_net_logon_ctrl2 },
+ { "NET_TRUST_DOM_LIST", NET_TRUST_DOM_LIST, api_net_trust_dom_list },
+ { "NET_LOGON_CTRL" , NET_LOGON_CTRL , api_net_logon_ctrl },
+ { NULL , 0 , NULL }
+};
+
+/*******************************************************************
+ receives a netlogon pipe and responds.
+ ********************************************************************/
-#ifdef RPC_NETLOG_DYNAMIC
-int rpc_pipe_init(void)
-#else
-int rpc_net_init(void)
-#endif
+BOOL api_netlog_rpc(pipes_struct *p)
{
- static struct api_struct api_net_cmds [] =
- {
- { "NET_REQCHAL" , NET_REQCHAL , api_net_req_chal },
- { "NET_AUTH" , NET_AUTH , api_net_auth },
- { "NET_AUTH2" , NET_AUTH2 , api_net_auth_2 },
- { "NET_SRVPWSET" , NET_SRVPWSET , api_net_srv_pwset },
- { "NET_SAMLOGON" , NET_SAMLOGON , api_net_sam_logon },
- { "NET_SAMLOGOFF" , NET_SAMLOGOFF , api_net_sam_logoff },
- { "NET_LOGON_CTRL2" , NET_LOGON_CTRL2 , api_net_logon_ctrl2 },
- { "NET_TRUST_DOM_LIST", NET_TRUST_DOM_LIST, api_net_trust_dom_list },
- { "NET_LOGON_CTRL" , NET_LOGON_CTRL , api_net_logon_ctrl }
- };
-
- return rpc_pipe_register_commands("NETLOGON", "lsass", api_net_cmds,
- sizeof(api_net_cmds) / sizeof(struct api_struct));
+ return api_rpcTNP(p, "api_netlog_rpc", api_net_cmds);
}
diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c
index 4c4b3e7af3..8aaab43461 100644
--- a/source3/rpc_server/srv_pipe.c
+++ b/source3/rpc_server/srv_pipe.c
@@ -3,9 +3,8 @@
* RPC Pipe client / server routines
* Copyright (C) Andrew Tridgell 1992-1998
* Copyright (C) Luke Kenneth Casson Leighton 1996-1998,
- * Copyright (C) Paul Ashton 1997-1998,
- * Copyright (C) Jeremy Allison 1999,
- * Copyright (C) Anthony Liguori 2003.
+ * Copyright (C) Paul Ashton 1997-1998.
+ * Copyright (C) Jeremy Allison 1999.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -458,53 +457,24 @@ failed authentication on named pipe %s.\n", domain, user_name, wks, p->name ));
struct api_cmd
{
- const char *name;
- int (*init)(void);
+ const char * pipe_clnt_name;
+ const char * pipe_srv_name;
+ BOOL (*fn) (pipes_struct *);
};
static struct api_cmd api_fd_commands[] =
{
-#ifndef RPC_LSA_DYNAMIC
- { "lsarpc", rpc_lsa_init },
-#endif
-#ifndef RPC_SAMR_DYNAMIC
- { "samr", rpc_samr_init },
-#endif
-#ifndef RPC_SVC_DYNAMIC
- { "srvsvc", rpc_srv_init },
-#endif
-#ifndef RPC_WKS_DYNAMIC
- { "wkssvc", rpc_wks_init },
-#endif
-#ifndef RPC_NETLOG_DYNAMIC
- { "NETLOGON", rpc_net_init },
-#endif
-#ifndef RPC_REG_DYNAMIC
- { "winreg", rpc_reg_init },
-#endif
-#ifndef RPC_SPOOLSS_DYNAMIC
- { "spoolss", rpc_spoolss_init },
-#endif
-#ifndef RPC_DFS_DYNAMIC
- { "netdfs", rpc_dfs_init },
-#endif
- { NULL, NULL }
+ { "lsarpc", "lsass", api_ntlsa_rpc },
+ { "samr", "lsass", api_samr_rpc },
+ { "srvsvc", "ntsvcs", api_srvsvc_rpc },
+ { "wkssvc", "ntsvcs", api_wkssvc_rpc },
+ { "NETLOGON", "lsass", api_netlog_rpc },
+ { "winreg", "winreg", api_reg_rpc },
+ { "spoolss", "spoolss", api_spoolss_rpc },
+ { "netdfs", "netdfs" , api_netdfs_rpc },
+ { NULL, NULL, NULL }
};
-struct rpc_table
-{
- struct
- {
- const char *clnt;
- const char *srv;
- } pipe;
- struct api_struct *cmds;
- int n_cmds;
-};
-
-static struct rpc_table *rpc_lookup;
-static int rpc_lookup_size;
-
/*******************************************************************
This is the client reply to our challenge for an authenticated
bind request. The challenge we sent is in p->challenge.
@@ -711,7 +681,6 @@ BOOL check_bind_req(char* pipe_name, RPC_IFACE* abstract,
fstrcpy(pname,"\\PIPE\\");
fstrcat(pname,pipe_name);
- DEBUG(3,("check_bind_req for %s\n", pname));
#ifndef SUPPORT_NEW_LSARPC_UUID
@@ -759,82 +728,6 @@ BOOL check_bind_req(char* pipe_name, RPC_IFACE* abstract,
}
/*******************************************************************
- Register commands to an RPC pipe
-*******************************************************************/
-int rpc_pipe_register_commands(const char *clnt, const char *srv, const struct api_struct *cmds, int size)
-{
- struct rpc_table *rpc_entry;
-
-
- /* We use a temporary variable because this call can fail and
- rpc_lookup will still be valid afterwards. It could then succeed if
- called again later */
- rpc_entry = realloc(rpc_lookup,
- ++rpc_lookup_size*sizeof(struct rpc_table));
- if (NULL == rpc_entry) {
- rpc_lookup_size--;
- DEBUG(0, ("rpc_pipe_register_commands: memory allocation failed\n"));
- return 0;
- } else {
- rpc_lookup = rpc_entry;
- }
-
- rpc_entry = rpc_lookup + (rpc_lookup_size - 1);
- ZERO_STRUCTP(rpc_entry);
- rpc_entry->pipe.clnt = strdup(clnt);
- rpc_entry->pipe.srv = strdup(srv);
- rpc_entry->cmds = realloc(rpc_entry->cmds,
- (rpc_entry->n_cmds + size) *
- sizeof(struct api_struct));
- memcpy(rpc_entry->cmds + rpc_entry->n_cmds, cmds,
- size * sizeof(struct api_struct));
- rpc_entry->n_cmds += size;
-
- return size;
-}
-
-/*******************************************************************
- Register commands to an RPC pipe
-*******************************************************************/
-int rpc_load_module(const char *module)
-{
-#ifdef HAVE_DLOPEN
- void *handle;
- int (*module_init)(void);
- pstring full_path;
- char *error;
-
- pstrcpy(full_path, lib_path("rpc"));
- pstrcat(full_path, "/librpc_");
- pstrcat(full_path, module);
- pstrcat(full_path, ".");
- pstrcat(full_path, shlib_ext());
-
- handle = sys_dlopen(full_path, RTLD_LAZY);
- if (!handle) {
- DEBUG(0, ("Could not load requested pipe %s as %s\n",
- module, full_path));
- DEBUG(0, (" Error: %s\n", dlerror()));
- return 0;
- }
-
- DEBUG(3, ("Module '%s' loaded\n", full_path));
-
- module_init = sys_dlsym(handle, "rpc_pipe_init");
- if ((error = sys_dlerror()) != NULL) {
- DEBUG(0, ("Error trying to resolve symbol 'rpc_pipe_init' in %s: %s\n",
- full_path, error));
- return 0;
- }
-
- return module_init();
-#else
- DEBUG(0,("Attempting to load a dynamic RPC pipe when dlopen isn't available\n"));
- return 0;
-#endif
-}
-
-/*******************************************************************
Respond to a pipe bind request.
*******************************************************************/
@@ -861,40 +754,23 @@ BOOL api_pipe_bind_req(pipes_struct *p, prs_struct *rpc_in_p)
* that this is a pipe name we support.
*/
-
- for (i = 0; i < rpc_lookup_size; i++) {
- if (strequal(rpc_lookup[i].pipe.clnt, p->name)) {
- DEBUG(3, ("api_pipe_bind_req: \\PIPE\\%s -> \\PIPE\\%s\n",
- rpc_lookup[i].pipe.clnt, rpc_lookup[i].pipe.srv));
- fstrcpy(p->pipe_srv_name, rpc_lookup[i].pipe.srv);
- break;
- }
+ for (i = 0; api_fd_commands[i].pipe_clnt_name; i++) {
+ if (strequal(api_fd_commands[i].pipe_clnt_name, p->name) &&
+ api_fd_commands[i].fn != NULL) {
+ DEBUG(3,("api_pipe_bind_req: \\PIPE\\%s -> \\PIPE\\%s\n",
+ api_fd_commands[i].pipe_clnt_name,
+ api_fd_commands[i].pipe_srv_name));
+ fstrcpy(p->pipe_srv_name, api_fd_commands[i].pipe_srv_name);
+ break;
+ }
}
- if (i == rpc_lookup_size) {
- for (i = 0; api_fd_commands[i].name; i++) {
- if (strequal(api_fd_commands[i].name, p->name)) {
- api_fd_commands[i].init();
- break;
- }
- }
-
- if (!api_fd_commands[i].name && !rpc_load_module(p->name)) {
- DEBUG(3,("api_pipe_bind_req: Unknown pipe name %s in bind request.\n",
- p->name ));
- if(!setup_bind_nak(p))
- return False;
- return True;
- }
-
- for (i = 0; i < rpc_lookup_size; i++) {
- if (strequal(rpc_lookup[i].pipe.clnt, p->name)) {
- DEBUG(3, ("api_pipe_bind_req: \\PIPE\\%s -> \\PIPE\\%s\n",
- rpc_lookup[i].pipe.clnt, rpc_lookup[i].pipe.srv));
- fstrcpy(p->pipe_srv_name, rpc_lookup[i].pipe.srv);
- break;
- }
- }
+ if (api_fd_commands[i].fn == NULL) {
+ DEBUG(3,("api_pipe_bind_req: Unknown pipe name %s in bind request.\n",
+ p->name ));
+ if(!setup_bind_nak(p))
+ return False;
+ return True;
}
/* decode the bind request */
@@ -1277,46 +1153,14 @@ BOOL api_pipe_request(pipes_struct *p)
}
}
- DEBUG(5, ("Requested \\PIPE\\%s\n", p->name));
-
- for (i = 0; i < rpc_lookup_size; i++) {
- if (strequal(rpc_lookup[i].pipe.clnt, p->name)) {
- DEBUG(3,("Doing \\PIPE\\%s\n",
- rpc_lookup[i].pipe.clnt));
- set_current_rpc_talloc(p->mem_ctx);
- ret = api_rpcTNP(p, rpc_lookup[i].pipe.clnt,
- rpc_lookup[i].cmds,
- rpc_lookup[i].n_cmds);
- set_current_rpc_talloc(NULL);
- break;
- }
- }
-
-
- if (i == rpc_lookup_size) {
- for (i = 0; api_fd_commands[i].name; i++) {
- if (strequal(api_fd_commands[i].name, p->name)) {
- api_fd_commands[i].init();
- break;
- }
- }
-
- if (!api_fd_commands[i].name) {
- rpc_load_module(p->name);
- }
-
- for (i = 0; i < rpc_lookup_size; i++) {
- if (strequal(rpc_lookup[i].pipe.clnt, p->name)) {
- DEBUG(3,("Doing \\PIPE\\%s\n",
- rpc_lookup[i].pipe.clnt));
- set_current_rpc_talloc(p->mem_ctx);
- ret = api_rpcTNP(p, rpc_lookup[i].pipe.clnt,
- rpc_lookup[i].cmds,
- rpc_lookup[i].n_cmds);
- set_current_rpc_talloc(NULL);
- break;
- }
- }
+ for (i = 0; api_fd_commands[i].pipe_clnt_name; i++) {
+ if (strequal(api_fd_commands[i].pipe_clnt_name, p->name) &&
+ api_fd_commands[i].fn != NULL) {
+ DEBUG(3,("Doing \\PIPE\\%s\n", api_fd_commands[i].pipe_clnt_name));
+ set_current_rpc_talloc(p->mem_ctx);
+ ret = api_fd_commands[i].fn(p);
+ set_current_rpc_talloc(NULL);
+ }
}
if(p->ntlmssp_auth_validated)
@@ -1330,7 +1174,7 @@ BOOL api_pipe_request(pipes_struct *p)
********************************************************************/
BOOL api_rpcTNP(pipes_struct *p, const char *rpc_name,
- const struct api_struct *api_rpc_cmds, int n_cmds)
+ const struct api_struct *api_rpc_cmds)
{
int fn_num;
fstring name;
@@ -1342,14 +1186,14 @@ BOOL api_rpcTNP(pipes_struct *p, const char *rpc_name,
slprintf(name, sizeof(name)-1, "in_%s", rpc_name);
prs_dump(name, p->hdr_req.opnum, &p->in_data.data);
- for (fn_num = 0; fn_num < n_cmds; fn_num++) {
+ for (fn_num = 0; api_rpc_cmds[fn_num].name; fn_num++) {
if (api_rpc_cmds[fn_num].opnum == p->hdr_req.opnum && api_rpc_cmds[fn_num].fn != NULL) {
DEBUG(3,("api_rpcTNP: rpc command: %s\n", api_rpc_cmds[fn_num].name));
break;
}
}
- if (fn_num == n_cmds) {
+ if (api_rpc_cmds[fn_num].name == NULL) {
/*
* For an unknown RPC just return a fault PDU but
* return True to allow RPC's on the pipe to continue
@@ -1362,8 +1206,6 @@ BOOL api_rpcTNP(pipes_struct *p, const char *rpc_name,
offset1 = prs_offset(&p->out_data.rdata);
- DEBUG(6, ("api_rpc_cmds[%d].fn == %p\n",
- fn_num, api_rpc_cmds[fn_num].fn));
/* do the actual command */
if(!api_rpc_cmds[fn_num].fn(p)) {
DEBUG(0,("api_rpcTNP: %s: %s failed.\n", rpc_name, api_rpc_cmds[fn_num].name));
diff --git a/source3/rpc_server/srv_reg.c b/source3/rpc_server/srv_reg.c
index 04960f8e3a..d0aaf0199b 100644
--- a/source3/rpc_server/srv_reg.c
+++ b/source3/rpc_server/srv_reg.c
@@ -3,11 +3,10 @@
* RPC Pipe client / server routines
* Copyright (C) Andrew Tridgell 1992-1997,
* Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
- * Copyright (C) Paul Ashton 1997,
- * Copyright (C) Marc Jacobsen 2000,
- * Copyright (C) Jeremy Allison 2001,
- * Copyright (C) Gerald Carter 2002,
- * Copyright (C) Anthony Liguori 2003.
+ * Copyright (C) Paul Ashton 1997.
+ * Copyright (C) Marc Jacobsen 2000.
+ * Copyright (C) Jeremy Allison 2001.
+ * Copyright (C) Gerald Carter 2002.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -372,29 +371,29 @@ static BOOL api_reg_save_key(pipes_struct *p)
/*******************************************************************
array of \PIPE\reg operations
********************************************************************/
+static struct api_struct api_reg_cmds[] =
+{
+ { "REG_CLOSE" , REG_CLOSE , api_reg_close },
+ { "REG_OPEN_ENTRY" , REG_OPEN_ENTRY , api_reg_open_entry },
+ { "REG_OPEN_HKCR" , REG_OPEN_HKCR , api_reg_open_hkcr },
+ { "REG_OPEN_HKLM" , REG_OPEN_HKLM , api_reg_open_hklm },
+ { "REG_OPEN_HKU" , REG_OPEN_HKU , api_reg_open_hku },
+ { "REG_ENUM_KEY" , REG_ENUM_KEY , api_reg_enum_key },
+ { "REG_ENUM_VALUE" , REG_ENUM_VALUE , api_reg_enum_value },
+ { "REG_QUERY_KEY" , REG_QUERY_KEY , api_reg_query_key },
+ { "REG_INFO" , REG_INFO , api_reg_info },
+ { "REG_SHUTDOWN" , REG_SHUTDOWN , api_reg_shutdown },
+ { "REG_ABORT_SHUTDOWN" , REG_ABORT_SHUTDOWN , api_reg_abort_shutdown },
+ { "REG_UNKNOWN_1A" , REG_UNKNOWN_1A , api_reg_unknown_1a },
+ { "REG_SAVE_KEY" , REG_SAVE_KEY , api_reg_save_key },
+ { NULL , 0 , NULL }
+};
+
+/*******************************************************************
+ receives a reg pipe and responds.
+ ********************************************************************/
-#ifdef RPC_REG_DYNAMIC
-int rpc_pipe_init(void)
-#else
-int rpc_reg_init(void)
-#endif
+BOOL api_reg_rpc(pipes_struct *p)
{
- static struct api_struct api_reg_cmds[] =
- {
- { "REG_CLOSE" , REG_CLOSE , api_reg_close },
- { "REG_OPEN_ENTRY" , REG_OPEN_ENTRY , api_reg_open_entry },
- { "REG_OPEN_HKCR" , REG_OPEN_HKCR , api_reg_open_hkcr },
- { "REG_OPEN_HKLM" , REG_OPEN_HKLM , api_reg_open_hklm },
- { "REG_OPEN_HKU" , REG_OPEN_HKU , api_reg_open_hku },
- { "REG_ENUM_KEY" , REG_ENUM_KEY , api_reg_enum_key },
- { "REG_ENUM_VALUE" , REG_ENUM_VALUE , api_reg_enum_value },
- { "REG_QUERY_KEY" , REG_QUERY_KEY , api_reg_query_key },
- { "REG_INFO" , REG_INFO , api_reg_info },
- { "REG_SHUTDOWN" , REG_SHUTDOWN , api_reg_shutdown },
- { "REG_ABORT_SHUTDOWN" , REG_ABORT_SHUTDOWN , api_reg_abort_shutdown },
- { "REG_UNKNOWN_1A" , REG_UNKNOWN_1A , api_reg_unknown_1a },
- { "REG_SAVE_KEY" , REG_SAVE_KEY , api_reg_save_key }
- };
- return rpc_pipe_register_commands("winreg", "winreg", api_reg_cmds,
- sizeof(api_reg_cmds) / sizeof(struct api_struct));
+ return api_rpcTNP(p, "api_reg_rpc", api_reg_cmds);
}
diff --git a/source3/rpc_server/srv_samr.c b/source3/rpc_server/srv_samr.c
index 3a31ec82e1..ab3d94cf75 100644
--- a/source3/rpc_server/srv_samr.c
+++ b/source3/rpc_server/srv_samr.c
@@ -6,7 +6,7 @@
* Copyright (C) Paul Ashton 1997,
* Copyright (C) Marc Jacobsen 1999,
* Copyright (C) Jean François Micouleau 1998-2001,
- * Copyright (C) Anthony Liguori 2002-2003,
+ * Copyright (C) Anthony Liguori 2002,
* Copyright (C) Jim McDonough 2002.
*
* Split into interface and implementation modules by,
@@ -1443,68 +1443,68 @@ static BOOL api_samr_set_dom_info(pipes_struct *p)
array of \PIPE\samr operations
********************************************************************/
-#ifdef RPC_SAMR_DYNAMIC
-int rpc_pipe_init(void)
-#else
-int rpc_samr_init(void)
-#endif
+static struct api_struct api_samr_cmds [] =
{
- static struct api_struct api_samr_cmds [] =
- {
- {"SAMR_CLOSE_HND" , SAMR_CLOSE_HND , api_samr_close_hnd },
- {"SAMR_CONNECT" , SAMR_CONNECT , api_samr_connect },
- {"SAMR_CONNECT_ANON" , SAMR_CONNECT_ANON , api_samr_connect_anon },
- {"SAMR_ENUM_DOMAINS" , SAMR_ENUM_DOMAINS , api_samr_enum_domains },
- {"SAMR_ENUM_DOM_USERS" , SAMR_ENUM_DOM_USERS , api_samr_enum_dom_users },
-
- {"SAMR_ENUM_DOM_GROUPS" , SAMR_ENUM_DOM_GROUPS , api_samr_enum_dom_groups },
- {"SAMR_ENUM_DOM_ALIASES" , SAMR_ENUM_DOM_ALIASES , api_samr_enum_dom_aliases },
- {"SAMR_QUERY_USERALIASES" , SAMR_QUERY_USERALIASES, api_samr_query_useraliases},
- {"SAMR_QUERY_ALIASMEM" , SAMR_QUERY_ALIASMEM , api_samr_query_aliasmem },
- {"SAMR_QUERY_GROUPMEM" , SAMR_QUERY_GROUPMEM , api_samr_query_groupmem },
- {"SAMR_ADD_ALIASMEM" , SAMR_ADD_ALIASMEM , api_samr_add_aliasmem },
- {"SAMR_DEL_ALIASMEM" , SAMR_DEL_ALIASMEM , api_samr_del_aliasmem },
- {"SAMR_ADD_GROUPMEM" , SAMR_ADD_GROUPMEM , api_samr_add_groupmem },
- {"SAMR_DEL_GROUPMEM" , SAMR_DEL_GROUPMEM , api_samr_del_groupmem },
-
- {"SAMR_DELETE_DOM_USER" , SAMR_DELETE_DOM_USER , api_samr_delete_dom_user },
- {"SAMR_DELETE_DOM_GROUP" , SAMR_DELETE_DOM_GROUP , api_samr_delete_dom_group },
- {"SAMR_DELETE_DOM_ALIAS" , SAMR_DELETE_DOM_ALIAS , api_samr_delete_dom_alias },
- {"SAMR_CREATE_DOM_GROUP" , SAMR_CREATE_DOM_GROUP , api_samr_create_dom_group },
- {"SAMR_CREATE_DOM_ALIAS" , SAMR_CREATE_DOM_ALIAS , api_samr_create_dom_alias },
- {"SAMR_LOOKUP_NAMES" , SAMR_LOOKUP_NAMES , api_samr_lookup_names },
- {"SAMR_OPEN_USER" , SAMR_OPEN_USER , api_samr_open_user },
- {"SAMR_QUERY_USERINFO" , SAMR_QUERY_USERINFO , api_samr_query_userinfo },
- {"SAMR_SET_USERINFO" , SAMR_SET_USERINFO , api_samr_set_userinfo },
- {"SAMR_SET_USERINFO2" , SAMR_SET_USERINFO2 , api_samr_set_userinfo2 },
-
- {"SAMR_QUERY_DOMAIN_INFO" , SAMR_QUERY_DOMAIN_INFO, api_samr_query_dom_info },
- {"SAMR_QUERY_USERGROUPS" , SAMR_QUERY_USERGROUPS , api_samr_query_usergroups },
- {"SAMR_QUERY_DISPINFO" , SAMR_QUERY_DISPINFO , api_samr_query_dispinfo },
- {"SAMR_QUERY_DISPINFO3" , SAMR_QUERY_DISPINFO3 , api_samr_query_dispinfo },
- {"SAMR_QUERY_DISPINFO4" , SAMR_QUERY_DISPINFO4 , api_samr_query_dispinfo },
-
- {"SAMR_QUERY_ALIASINFO" , SAMR_QUERY_ALIASINFO , api_samr_query_aliasinfo },
- {"SAMR_QUERY_GROUPINFO" , SAMR_QUERY_GROUPINFO , api_samr_query_groupinfo },
- {"SAMR_SET_GROUPINFO" , SAMR_SET_GROUPINFO , api_samr_set_groupinfo },
- {"SAMR_SET_ALIASINFO" , SAMR_SET_ALIASINFO , api_samr_set_aliasinfo },
- {"SAMR_CREATE_USER" , SAMR_CREATE_USER , api_samr_create_user },
- {"SAMR_LOOKUP_RIDS" , SAMR_LOOKUP_RIDS , api_samr_lookup_rids },
- {"SAMR_GET_DOM_PWINFO" , SAMR_GET_DOM_PWINFO , api_samr_get_dom_pwinfo },
- {"SAMR_CHGPASSWD_USER" , SAMR_CHGPASSWD_USER , api_samr_chgpasswd_user },
- {"SAMR_OPEN_ALIAS" , SAMR_OPEN_ALIAS , api_samr_open_alias },
- {"SAMR_OPEN_GROUP" , SAMR_OPEN_GROUP , api_samr_open_group },
- {"SAMR_OPEN_DOMAIN" , SAMR_OPEN_DOMAIN , api_samr_open_domain },
- {"SAMR_UNKNOWN_2D" , SAMR_UNKNOWN_2D , api_samr_unknown_2d },
- {"SAMR_LOOKUP_DOMAIN" , SAMR_LOOKUP_DOMAIN , api_samr_lookup_domain },
-
- {"SAMR_QUERY_SEC_OBJECT" , SAMR_QUERY_SEC_OBJECT , api_samr_query_sec_obj },
- {"SAMR_SET_SEC_OBJECT" , SAMR_SET_SEC_OBJECT , api_samr_set_sec_obj },
- {"SAMR_GET_USRDOM_PWINFO" , SAMR_GET_USRDOM_PWINFO, api_samr_get_usrdom_pwinfo},
- {"SAMR_UNKNOWN_2E" , SAMR_UNKNOWN_2E , api_samr_unknown_2e },
- {"SAMR_SET_DOMAIN_INFO" , SAMR_SET_DOMAIN_INFO , api_samr_set_dom_info },
- {"SAMR_CONNECT4" , SAMR_CONNECT4 , api_samr_connect4 }
- };
- return rpc_pipe_register_commands("samr", "lsass", api_samr_cmds,
- sizeof(api_samr_cmds) / sizeof(struct api_struct));
+ {"SAMR_CLOSE_HND" , SAMR_CLOSE_HND , api_samr_close_hnd },
+ {"SAMR_CONNECT" , SAMR_CONNECT , api_samr_connect },
+ {"SAMR_CONNECT_ANON" , SAMR_CONNECT_ANON , api_samr_connect_anon },
+ {"SAMR_ENUM_DOMAINS" , SAMR_ENUM_DOMAINS , api_samr_enum_domains },
+ {"SAMR_ENUM_DOM_USERS" , SAMR_ENUM_DOM_USERS , api_samr_enum_dom_users },
+
+ {"SAMR_ENUM_DOM_GROUPS" , SAMR_ENUM_DOM_GROUPS , api_samr_enum_dom_groups },
+ {"SAMR_ENUM_DOM_ALIASES" , SAMR_ENUM_DOM_ALIASES , api_samr_enum_dom_aliases },
+ {"SAMR_QUERY_USERALIASES" , SAMR_QUERY_USERALIASES, api_samr_query_useraliases},
+ {"SAMR_QUERY_ALIASMEM" , SAMR_QUERY_ALIASMEM , api_samr_query_aliasmem },
+ {"SAMR_QUERY_GROUPMEM" , SAMR_QUERY_GROUPMEM , api_samr_query_groupmem },
+ {"SAMR_ADD_ALIASMEM" , SAMR_ADD_ALIASMEM , api_samr_add_aliasmem },
+ {"SAMR_DEL_ALIASMEM" , SAMR_DEL_ALIASMEM , api_samr_del_aliasmem },
+ {"SAMR_ADD_GROUPMEM" , SAMR_ADD_GROUPMEM , api_samr_add_groupmem },
+ {"SAMR_DEL_GROUPMEM" , SAMR_DEL_GROUPMEM , api_samr_del_groupmem },
+
+ {"SAMR_DELETE_DOM_USER" , SAMR_DELETE_DOM_USER , api_samr_delete_dom_user },
+ {"SAMR_DELETE_DOM_GROUP" , SAMR_DELETE_DOM_GROUP , api_samr_delete_dom_group },
+ {"SAMR_DELETE_DOM_ALIAS" , SAMR_DELETE_DOM_ALIAS , api_samr_delete_dom_alias },
+ {"SAMR_CREATE_DOM_GROUP" , SAMR_CREATE_DOM_GROUP , api_samr_create_dom_group },
+ {"SAMR_CREATE_DOM_ALIAS" , SAMR_CREATE_DOM_ALIAS , api_samr_create_dom_alias },
+ {"SAMR_LOOKUP_NAMES" , SAMR_LOOKUP_NAMES , api_samr_lookup_names },
+ {"SAMR_OPEN_USER" , SAMR_OPEN_USER , api_samr_open_user },
+ {"SAMR_QUERY_USERINFO" , SAMR_QUERY_USERINFO , api_samr_query_userinfo },
+ {"SAMR_SET_USERINFO" , SAMR_SET_USERINFO , api_samr_set_userinfo },
+ {"SAMR_SET_USERINFO2" , SAMR_SET_USERINFO2 , api_samr_set_userinfo2 },
+
+ {"SAMR_QUERY_DOMAIN_INFO" , SAMR_QUERY_DOMAIN_INFO, api_samr_query_dom_info },
+ {"SAMR_QUERY_USERGROUPS" , SAMR_QUERY_USERGROUPS , api_samr_query_usergroups },
+ {"SAMR_QUERY_DISPINFO" , SAMR_QUERY_DISPINFO , api_samr_query_dispinfo },
+ {"SAMR_QUERY_DISPINFO3" , SAMR_QUERY_DISPINFO3 , api_samr_query_dispinfo },
+ {"SAMR_QUERY_DISPINFO4" , SAMR_QUERY_DISPINFO4 , api_samr_query_dispinfo },
+
+ {"SAMR_QUERY_ALIASINFO" , SAMR_QUERY_ALIASINFO , api_samr_query_aliasinfo },
+ {"SAMR_QUERY_GROUPINFO" , SAMR_QUERY_GROUPINFO , api_samr_query_groupinfo },
+ {"SAMR_SET_GROUPINFO" , SAMR_SET_GROUPINFO , api_samr_set_groupinfo },
+ {"SAMR_SET_ALIASINFO" , SAMR_SET_ALIASINFO , api_samr_set_aliasinfo },
+ {"SAMR_CREATE_USER" , SAMR_CREATE_USER , api_samr_create_user },
+ {"SAMR_LOOKUP_RIDS" , SAMR_LOOKUP_RIDS , api_samr_lookup_rids },
+ {"SAMR_GET_DOM_PWINFO" , SAMR_GET_DOM_PWINFO , api_samr_get_dom_pwinfo },
+ {"SAMR_CHGPASSWD_USER" , SAMR_CHGPASSWD_USER , api_samr_chgpasswd_user },
+ {"SAMR_OPEN_ALIAS" , SAMR_OPEN_ALIAS , api_samr_open_alias },
+ {"SAMR_OPEN_GROUP" , SAMR_OPEN_GROUP , api_samr_open_group },
+ {"SAMR_OPEN_DOMAIN" , SAMR_OPEN_DOMAIN , api_samr_open_domain },
+ {"SAMR_UNKNOWN_2D" , SAMR_UNKNOWN_2D , api_samr_unknown_2d },
+ {"SAMR_LOOKUP_DOMAIN" , SAMR_LOOKUP_DOMAIN , api_samr_lookup_domain },
+
+ {"SAMR_QUERY_SEC_OBJECT" , SAMR_QUERY_SEC_OBJECT , api_samr_query_sec_obj },
+ {"SAMR_SET_SEC_OBJECT" , SAMR_SET_SEC_OBJECT , api_samr_set_sec_obj },
+ {"SAMR_GET_USRDOM_PWINFO" , SAMR_GET_USRDOM_PWINFO, api_samr_get_usrdom_pwinfo},
+ {"SAMR_UNKNOWN_2E" , SAMR_UNKNOWN_2E , api_samr_unknown_2e },
+ {"SAMR_SET_DOMAIN_INFO" , SAMR_SET_DOMAIN_INFO , api_samr_set_dom_info },
+ {"SAMR_CONNECT4" , SAMR_CONNECT4 , api_samr_connect4 },
+ {NULL , 0 , NULL }
+};
+
+/*******************************************************************
+ receives a samr pipe and responds.
+ ********************************************************************/
+BOOL api_samr_rpc(pipes_struct *p)
+{
+ return api_rpcTNP(p, "api_samr_rpc", api_samr_cmds);
}
diff --git a/source3/rpc_server/srv_spoolss.c b/source3/rpc_server/srv_spoolss.c
index 5832ae876b..5924c5831b 100755
--- a/source3/rpc_server/srv_spoolss.c
+++ b/source3/rpc_server/srv_spoolss.c
@@ -3,10 +3,9 @@
* RPC Pipe client / server routines
* Copyright (C) Andrew Tridgell 1992-2000,
* Copyright (C) Luke Kenneth Casson Leighton 1996-2000,
- * Copyright (C) Jean François Micouleau 1998-2000,
- * Copyright (C) Jeremy Allison 2001,
- * Copyright (C) Gerald Carter 2001-2002,
- * Copyright (C) Anthony Liguori 2003.
+ * Copyright (C) Jean François Micouleau 1998-2000.
+ * Copyright (C) Jeremy Allison 2001.
+ * Copyright (C) Gerald Carter 2001-2002.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1580,14 +1579,8 @@ static BOOL api_spoolss_replycloseprinter(pipes_struct *p)
\pipe\spoolss commands
********************************************************************/
-#ifdef RPC_SPOOLSS_DYNAMIC
-int rpc_pipe_init(void)
-#else
-int rpc_spoolss_init(void)
-#endif
+struct api_struct api_spoolss_cmds[] =
{
- struct api_struct api_spoolss_cmds[] =
- {
{"SPOOLSS_OPENPRINTER", SPOOLSS_OPENPRINTER, api_spoolss_open_printer },
{"SPOOLSS_OPENPRINTEREX", SPOOLSS_OPENPRINTEREX, api_spoolss_open_printer_ex },
{"SPOOLSS_GETPRINTERDATA", SPOOLSS_GETPRINTERDATA, api_spoolss_getprinterdata },
@@ -1641,9 +1634,15 @@ int rpc_spoolss_init(void)
{"SPOOLSS_DELETEPRINTERDRIVEREX", SPOOLSS_DELETEPRINTERDRIVEREX, api_spoolss_deleteprinterdriverex },
#if 0
{"SPOOLSS_REPLYOPENPRINTER", SPOOLSS_REPLYOPENPRINTER, api_spoolss_replyopenprinter },
- {"SPOOLSS_REPLYCLOSEPRINTER", SPOOLSS_REPLYCLOSEPRINTER, api_spoolss_replycloseprinter }
+ {"SPOOLSS_REPLYCLOSEPRINTER", SPOOLSS_REPLYCLOSEPRINTER, api_spoolss_replycloseprinter },
#endif
- };
- return rpc_pipe_register_commands("spoolss", "spoolss", api_spoolss_cmds,
- sizeof(api_spoolss_cmds) / sizeof(struct api_struct));
+ { NULL, 0, NULL }
+};
+
+/*******************************************************************
+receives a spoolss pipe and responds.
+********************************************************************/
+BOOL api_spoolss_rpc(pipes_struct *p)
+{
+ return api_rpcTNP(p, "api_spoolss_rpc", api_spoolss_cmds);
}
diff --git a/source3/rpc_server/srv_srvsvc.c b/source3/rpc_server/srv_srvsvc.c
index 983c660965..4a372de089 100644
--- a/source3/rpc_server/srv_srvsvc.c
+++ b/source3/rpc_server/srv_srvsvc.c
@@ -3,9 +3,8 @@
* RPC Pipe client / server routines
* Copyright (C) Andrew Tridgell 1992-1997,
* Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
- * Copyright (C) Paul Ashton 1997,
- * Copyright (C) Jeremy Allison 2001,
- * Copyright (C) Anthony Liguori 2003.
+ * Copyright (C) Paul Ashton 1997.
+ * Copyright (C) Jeremy Allison 2001.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -526,32 +525,32 @@ static BOOL api_srv_net_file_set_secdesc(pipes_struct *p)
\PIPE\srvsvc commands
********************************************************************/
-#ifdef RPC_SVC_DYNAMIC
-int rpc_pipe_init(void)
-#else
-int rpc_srv_init(void)
-#endif
+static const struct api_struct api_srv_cmds[] =
{
- static const struct api_struct api_srv_cmds[] =
- {
- { "SRV_NET_CONN_ENUM" , SRV_NET_CONN_ENUM , api_srv_net_conn_enum },
- { "SRV_NET_SESS_ENUM" , SRV_NET_SESS_ENUM , api_srv_net_sess_enum },
- { "SRV_NET_SHARE_ENUM_ALL" , SRV_NET_SHARE_ENUM_ALL , api_srv_net_share_enum_all },
- { "SRV_NET_SHARE_ENUM" , SRV_NET_SHARE_ENUM , api_srv_net_share_enum },
- { "SRV_NET_SHARE_ADD" , SRV_NET_SHARE_ADD , api_srv_net_share_add },
- { "SRV_NET_SHARE_DEL" , SRV_NET_SHARE_DEL , api_srv_net_share_del },
- { "SRV_NET_SHARE_DEL_STICKY" , SRV_NET_SHARE_DEL_STICKY , api_srv_net_share_del_sticky },
- { "SRV_NET_SHARE_GET_INFO" , SRV_NET_SHARE_GET_INFO , api_srv_net_share_get_info },
- { "SRV_NET_SHARE_SET_INFO" , SRV_NET_SHARE_SET_INFO , api_srv_net_share_set_info },
- { "SRV_NET_FILE_ENUM" , SRV_NET_FILE_ENUM , api_srv_net_file_enum },
- { "SRV_NET_SRV_GET_INFO" , SRV_NET_SRV_GET_INFO , api_srv_net_srv_get_info },
- { "SRV_NET_SRV_SET_INFO" , SRV_NET_SRV_SET_INFO , api_srv_net_srv_set_info },
- { "SRV_NET_REMOTE_TOD" , SRV_NET_REMOTE_TOD , api_srv_net_remote_tod },
- { "SRV_NET_DISK_ENUM" , SRV_NET_DISK_ENUM , api_srv_net_disk_enum },
- { "SRV_NET_NAME_VALIDATE" , SRV_NET_NAME_VALIDATE , api_srv_net_name_validate },
- { "SRV_NET_FILE_QUERY_SECDESC", SRV_NET_FILE_QUERY_SECDESC, api_srv_net_file_query_secdesc },
- { "SRV_NET_FILE_SET_SECDESC" , SRV_NET_FILE_SET_SECDESC , api_srv_net_file_set_secdesc }
- };
- return rpc_pipe_register_commands("srvsvc", "ntsvcs", api_srv_cmds,
- sizeof(api_srv_cmds) / sizeof(struct api_struct));
+ { "SRV_NET_CONN_ENUM" , SRV_NET_CONN_ENUM , api_srv_net_conn_enum },
+ { "SRV_NET_SESS_ENUM" , SRV_NET_SESS_ENUM , api_srv_net_sess_enum },
+ { "SRV_NET_SHARE_ENUM_ALL" , SRV_NET_SHARE_ENUM_ALL , api_srv_net_share_enum_all },
+ { "SRV_NET_SHARE_ENUM" , SRV_NET_SHARE_ENUM , api_srv_net_share_enum },
+ { "SRV_NET_SHARE_ADD" , SRV_NET_SHARE_ADD , api_srv_net_share_add },
+ { "SRV_NET_SHARE_DEL" , SRV_NET_SHARE_DEL , api_srv_net_share_del },
+ { "SRV_NET_SHARE_DEL_STICKY", SRV_NET_SHARE_DEL_STICKY, api_srv_net_share_del_sticky },
+ { "SRV_NET_SHARE_GET_INFO", SRV_NET_SHARE_GET_INFO, api_srv_net_share_get_info },
+ { "SRV_NET_SHARE_SET_INFO", SRV_NET_SHARE_SET_INFO, api_srv_net_share_set_info },
+ { "SRV_NET_FILE_ENUM" , SRV_NET_FILE_ENUM , api_srv_net_file_enum },
+ { "SRV_NET_SRV_GET_INFO" , SRV_NET_SRV_GET_INFO , api_srv_net_srv_get_info },
+ { "SRV_NET_SRV_SET_INFO" , SRV_NET_SRV_SET_INFO , api_srv_net_srv_set_info },
+ { "SRV_NET_REMOTE_TOD" , SRV_NET_REMOTE_TOD , api_srv_net_remote_tod },
+ { "SRV_NET_DISK_ENUM" , SRV_NET_DISK_ENUM , api_srv_net_disk_enum },
+ { "SRV_NET_NAME_VALIDATE" , SRV_NET_NAME_VALIDATE , api_srv_net_name_validate},
+ { "SRV_NET_FILE_QUERY_SECDESC",SRV_NET_FILE_QUERY_SECDESC, api_srv_net_file_query_secdesc},
+ { "SRV_NET_FILE_SET_SECDESC" , SRV_NET_FILE_SET_SECDESC , api_srv_net_file_set_secdesc},
+ { NULL , 0 , NULL }
+};
+
+/*******************************************************************
+receives a srvsvc pipe and responds.
+********************************************************************/
+BOOL api_srvsvc_rpc(pipes_struct *p)
+{
+ return api_rpcTNP(p, "api_srvsvc_rpc", api_srv_cmds);
}
diff --git a/source3/rpc_server/srv_wkssvc.c b/source3/rpc_server/srv_wkssvc.c
index 1fed2cc6db..c783becbbe 100644
--- a/source3/rpc_server/srv_wkssvc.c
+++ b/source3/rpc_server/srv_wkssvc.c
@@ -3,8 +3,7 @@
* RPC Pipe client / server routines
* Copyright (C) Andrew Tridgell 1992-1997,
* Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
- * Copyright (C) Paul Ashton 1997,
- * Copyright (C) Anthony Liguori 2003.
+ * Copyright (C) Paul Ashton 1997.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -59,17 +58,16 @@ static BOOL api_wks_query_info(pipes_struct *p)
/*******************************************************************
\PIPE\wkssvc commands
********************************************************************/
+static struct api_struct api_wks_cmds[] =
+{
+ { "WKS_Q_QUERY_INFO", WKS_QUERY_INFO, api_wks_query_info },
+ { NULL , 0 , NULL }
+};
-#ifdef RPC_WKS_DYNAMIC
-int rpc_pipe_init(void)
-#else
-int rpc_wks_init(void)
-#endif
+/*******************************************************************
+ receives a wkssvc pipe and responds.
+ ********************************************************************/
+BOOL api_wkssvc_rpc(pipes_struct *p)
{
- static struct api_struct api_wks_cmds[] =
- {
- { "WKS_Q_QUERY_INFO", WKS_QUERY_INFO, api_wks_query_info }
- };
- return rpc_pipe_register_commands("wkssvc", "ntsvcs", api_wks_cmds,
- sizeof(api_wks_cmds) / sizeof(struct api_struct));
+ return api_rpcTNP(p, "api_wkssvc_rpc", api_wks_cmds);
}
diff --git a/source3/rpcclient/cmd_lsarpc.c b/source3/rpcclient/cmd_lsarpc.c
index 46e85e7c15..decbc8e161 100644
--- a/source3/rpcclient/cmd_lsarpc.c
+++ b/source3/rpcclient/cmd_lsarpc.c
@@ -23,43 +23,6 @@
#include "includes.h"
#include "rpcclient.h"
-
-/* useful function to allow entering a name instead of a SID and
- * looking it up automatically */
-static NTSTATUS name_to_sid(struct cli_state *cli,
- TALLOC_CTX *mem_ctx,
- DOM_SID *sid, const char *name)
-{
- POLICY_HND pol;
- uint32 *sid_types;
- NTSTATUS result;
- DOM_SID *sids;
-
- /* maybe its a raw SID */
- if (strncmp(name, "S-", 2) == 0 &&
- string_to_sid(sid, name)) {
- return NT_STATUS_OK;
- }
-
- result = cli_lsa_open_policy(cli, mem_ctx, True,
- SEC_RIGHTS_MAXIMUM_ALLOWED,
- &pol);
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- result = cli_lsa_lookup_names(cli, mem_ctx, &pol, 1, &name, &sids, &sid_types);
- if (!NT_STATUS_IS_OK(result))
- goto done;
-
- cli_lsa_close(cli, mem_ctx, &pol);
-
- *sid = sids[0];
-
-done:
- return result;
-}
-
-
/* Look up domain related information on a remote host */
static NTSTATUS cmd_lsa_query_info_policy(struct cli_state *cli,
@@ -459,9 +422,7 @@ static NTSTATUS cmd_lsa_enum_privsaccounts(struct cli_state *cli,
return NT_STATUS_OK;
}
- result = name_to_sid(cli, mem_ctx, &sid, argv[1]);
- if (!NT_STATUS_IS_OK(result))
- goto done;
+ string_to_sid(&sid, argv[1]);
result = cli_lsa_open_policy2(cli, mem_ctx, True,
SEC_RIGHTS_MAXIMUM_ALLOWED,
@@ -513,9 +474,7 @@ static NTSTATUS cmd_lsa_enum_acct_rights(struct cli_state *cli,
return NT_STATUS_OK;
}
- result = name_to_sid(cli, mem_ctx, &sid, argv[1]);
- if (!NT_STATUS_IS_OK(result))
- goto done;
+ string_to_sid(&sid, argv[1]);
result = cli_lsa_open_policy2(cli, mem_ctx, True,
SEC_RIGHTS_MAXIMUM_ALLOWED,
@@ -529,7 +488,7 @@ static NTSTATUS cmd_lsa_enum_acct_rights(struct cli_state *cli,
if (!NT_STATUS_IS_OK(result))
goto done;
- printf("found %d privileges for SID %s\n", count, sid_string_static(&sid));
+ printf("found %d privileges for SID %s\n", count, argv[1]);
for (i = 0; i < count; i++) {
printf("\t%s\n", rights[i]);
diff --git a/source3/sam/SAM-interface_handles.txt b/source3/sam/SAM-interface_handles.txt
deleted file mode 100644
index 1c164bd198..0000000000
--- a/source3/sam/SAM-interface_handles.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-SAM API
-
-NTSTATUS sam_get_sec_obj(NT_USER_TOKEN *access, DOM_SID *sid, SEC_DESC **sd)
-NTSTATUS sam_set_sec_obj(NT_USER_TOKEN *access, DOM_SID *sid, SEC_DESC *sd)
-
-NTSTATUS sam_lookup_name(NT_USER_TOKEN *access, DOM_SID *domain, char *name, DOM_SID **sid, uint32 *type)
-NTSTATUS sam_lookup_sid(NT_USER_TOKEN *access, DOM_SID *sid, char **name, uint32 *type)
-
-
-Domain API
-
-NTSTATUS sam_update_domain(SAM_DOMAIN_HANDLE *domain)
-
-NTSTATUS sam_enum_domains(NT_USER_TOKEN *access, int32 *domain_count, DOM_SID **domains, char **domain_names)
-NTSTATUS sam_lookup_domain(NT_USER_TOKEN *access, char *domain, DOM_SID **domainsid)
-
-NTSTATUS sam_get_domain_by_sid(NT_USER_TOKEN *access, uint32 access_desired, DOM_SID *domainsid, SAM_DOMAIN_HANDLE **domain)
-
-
-User API
-
-NTSTATUS sam_create_user(NT_USER_TOKEN *access, uint32 access_desired, SAM_USER_HANDLE **user)
-NTSTATUS sam_add_user(SAM_USER_HANDLE *user)
-NTSTATUS sam_update_user(SAM_USER_HANDLE *user)
-NTSTATUS sam_delete_user(SAM_USER_HANDLE * user)
-
-NTSTATUS sam_enum_users(NT_USER_TOKEN *access, DOM_SID *domain, int32 *user_count, SAM_USER_ENUM **users)
-
-NTSTATUS sam_get_user_by_sid(NT_USER_TOKEN *access, uint32 access_desired, DOM_SID *usersid, SAM_USER_HANDLE **user)
-NTSTATUS sam_get_user_by_name(NT_USER_TOKEN *access, uint32 access_desired, char *domain, char *name, SAM_USER_HANDLE **user)
-
-
-Group API
-
-NTSTATUS sam_create_group(NT_USER_TOKEN *access, uint32 access_desired, uint32 typ, SAM_GROUP_HANDLE **group)
-NTSTATUS sam_add_group(SAM_GROUP_HANDLE *samgroup)
-NTSTATUS sam_update_group(SAM_GROUP_HANDLE *samgroup)
-NTSTATUS sam_delete_group(SAM_GROUP_HANDLE *groupsid)
-
-NTSTATUS sam_enum_groups(NT_USER_TOKEN *access, DOM_SID *domainsid, uint32 typ, uint32 *groups_count, SAM_GROUP_ENUM **groups)
-
-NTSTATUS sam_get_group_by_sid(NT_USER_TOKEN *access, uint32 access_desired, DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
-NTSTATUS sam_get_group_by_name(NT_USER_TOKEN *access, uint32 access_desired, char *domain, char *name, SAM_GROUP_HANDLE **group)
-
-NTSTATUS sam_add_member_to_group(SAM_GROUP_HANDLE *group, SAM_GROUP_MEMBER *member)
-NTSTATUS sam_delete_member_from_group(SAM_GROUP_HANDLE *group, SAM_GROUP_MEMBER *member)
-NTSTATUS sam_enum_groupmembers(SAM_GROUP_HANLDE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
-
-NTSTATUS sam_get_groups_of_user(SAM_USER_HANDLE *user, uint32 typ, uint32 *group_count, SAM_GROUP_ENUM **groups)
-
-
-
-structures
-
-typedef _SAM_GROUP_MEMBER {
- DOM_SID sid;
- BOOL group; /* specifies if it is a group or a user */
-
-} SAM_GROUP_MEMBER
-
-typedef struct sam_user_enum {
- DOM_SID sid;
- char *username;
- char *full_name;
- char *user_desc;
- uint16 acc_ctrl;
-} SAM_USER_ENUM;
-
-typedef struct sam_group_enum {
- DOM_SID sid;
- char *groupname;
- char *comment;
-} SAM_GROUP_ENUM
-
-NTSTATUS sam_get_domain_sid(SAM_DOMAIN_HANDLE *domain, DOM_SID **sid)
-NTSTATUS sam_get_domain_num_users(SAM_DOMAIN_HANDLE *domain, uint32 *num_users)
-NTSTATUS sam_get_domain_num_groups(SAM_DOMAIN_HANDLE *domain, uint32 *num_groups)
-NTSTATUS sam_get_domain_num_aliases(SAM_DOMAIN_HANDLE *domain, uint32 *num_aliases)
-NTSTATUS sam_{get,set}_domain_name(SAM_DOMAIN_HANDLE *domain, char **domain_name)
-NTSTATUS sam_{get,set}_domain_server(SAM_DOMAIN_HANDLE *domain, char **server_name)
-NTSTATUS sam_{get,set}_domain_max_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME *max_passwordage)
-NTSTATUS sam_{get,set}_domain_min_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME *min_passwordage)
-NTSTATUS sam_{get,set}_domain_lockout_duration(SAM_DOMAIN_HANDLE *domain, NTTIME *lockout_duration)
-NTSTATUS sam_{get,set}_domain_reset_count(SAM_DOMAIN_HANDLE *domain, NTTIME *reset_lockout_count)
-NTSTATUS sam_{get,set}_domain_min_pwdlength(SAM_DOMAIN_HANDLE *domain, uint16 *min_passwordlength)
-NTSTATUS sam_{get,set}_domain_pwd_history(SAM_DOMAIN_HANDLE *domain, uin16 *password_history)
-NTSTATUS sam_{get,set}_domain_lockout_count(SAM_DOMAIN_HANDLE *domain, uint16 *lockout_count)
-NTSTATUS sam_{get,set}_domain_force_logoff(SAM_DOMAIN_HANDLE *domain, BOOL *force_logoff)
-NTSTATUS sam_{get,set}_domain_login_pwdchange(SAM_DOMAIN_HANDLE *domain, BOOL *login_pwdchange)
-
-NTSTATUS sam_get_user_sid(SAM_USER_HANDLE *user, DOM_SID **sid)
-NTSTATUS sam_{get,set}_user_pgroup(SAM_USER_HANDLE *user, DOM_SID **pgroup)
-NTSTATUS sam_{get,set}_user_name(SAM_USER_HANDLE *user, char **username)
-NTSTATUS sam_{get,set}_user_fullname(SAM_USER_HANDLE *user, char** fullname)
-NTSTATUS sam_{get,set}_user_description(SAM_USER_HANDLE *user, char **description)
-NTSTATUS sam_{get,set}_user_home_dir(SAM_USER_HANDLE *user, char **home_dir)
-NTSTATUS sam_{get,set}_user_dir_drive(SAM_USER_HANDLE *user, char **dir_drive)
-NTSTATUS sam_{get,set}_user_logon_script(SAM_USER_HANDLE *user, char **logon_script)
-NTSTATUS sam_{get,set}_user_profile_path(SAM_USER_HANDLE *user, char **profile_path)
-NTSTATUS sam_{get,set}_user_workstations(SAM_USER_HANDLE *user, char **workstations)
-NTSTATUS sam_{get,set}_user_munged_dial(SAM_USER_HANDLE *user, char **munged_dial)
-NTSTATUS sam_{get,set}_user_lm_pwd(SAM_USER_HANDLE *user, DATA_BLOB *lm_pwd)
-NTSTATUS sam_{get,set}_user_nt_pwd(SAM_USER_HANDLE *user, DATA_BLOB *nt_pwd)
-NTSTATUS sam_{get,set}_user_plain_pwd(SAM_USER_HANDLE *user, DATA_BLOB *plaintext_pwd)
-NTSTATUS sam_{get,set}_user_acct_ctrl(SAM_USER_HANDLE *user, uint16 *acct_ctrl)
-NTSTATUS sam_{get,set}_user_logon_divs(SAM_USER_HANDLE *user, uint16 *logon_divs)
-NTSTATUS sam_{get,set}_user_hours(SAM_USER_HANDLE *user, uint32 *hours_len, uint8 **hours)
-NTSTATUS sam_{get,set}_user_logon_time(SAM_USER_HANDLE *user, NTTIME *logon_time)
-NTSTATUS sam_{get,set}_user_logoff_time(SAM_USER_HANDLE *user, NTTIME *logoff_time)
-NTSTATUS sam_{get,set}_user_kickoff_time(SAM_USER_HANDLE *user, NTTIME kickoff_time)
-NTSTATUS sam_{get,set}_user_pwd_last_set(SAM_USER_HANDLE *user, NTTIME pwd_last_set)
-NTSTATUS sam_{get,set}_user_pwd_can_change(SAM_USER_HANDLE *user, NTTIME pwd_can_change)
-NTSTATUS sam_{get,set}_user_pwd_must_change(SAM_USER_HANDLE *user, NTTIME pwd_must_change)
-NTSTATUS sam_{get,set}_user_unknown_1(SAM_USER_HANDLE *user, char **unknown_1)
-NTSTATUS sam_{get,set}_user_unknown_2(SAM_USER_HANDLE *user, uint32 *unknown_2)
-NTSTATUS sam_{get,set}_user_unknown_3(SAM_USER_HANDLE *user, uint32 *unknown_3)
-NTSTATUS sam_{get,set}_user_unknown_4(SAM_USER_HANDLE *user, uint32 *unknown_4)
-
-NTSTATUS sam_get_group_sid(SAM_GROUP_HANDLE *group, DOM_SID **sid)
-NTSTATUS sam_get_group_typ(SAM_GROUP_HANDLE *group, uint32 *typ)
-NTSTATUS sam_{get,set}_group_name(SAM_GROUP_HANDLE *group, char **group_name)
-NTSTATUS sam_{get,set}_group_comment(SAM_GROUP_HANDLE *group, char **comment)
-NTSTATUS sam_{get,set}_group_priv_set(SAM_GROUP_HANDLE *group, PRIVILEGE_SET *priv_set) \ No newline at end of file
diff --git a/source3/sam/account.c b/source3/sam/account.c
deleted file mode 100644
index b8336146cd..0000000000
--- a/source3/sam/account.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Password and authentication handling
- Copyright (C) Jeremy Allison 1996-2001
- Copyright (C) Luke Kenneth Casson Leighton 1996-1998
- Copyright (C) Gerald (Jerry) Carter 2000-2001
- Copyright (C) Andrew Bartlett 2001-2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-/************************************************************
- Fill the SAM_ACCOUNT_HANDLE with default values.
- ***********************************************************/
-
-static void sam_fill_default_account(SAM_ACCOUNT_HANDLE *account)
-{
- ZERO_STRUCT(account->private); /* Don't touch the talloc context */
-
- /* Don't change these timestamp settings without a good reason.
- They are important for NT member server compatibility. */
-
- /* FIXME: We should actually call get_nt_time_max() or sthng
- * here */
- unix_to_nt_time(&(account->private.logoff_time),get_time_t_max());
- unix_to_nt_time(&(account->private.kickoff_time),get_time_t_max());
- unix_to_nt_time(&(account->private.pass_must_change_time),get_time_t_max());
- account->private.unknown_1 = 0x00ffffff; /* don't know */
- account->private.logon_divs = 168; /* hours per week */
- account->private.hours_len = 21; /* 21 times 8 bits = 168 */
- memset(account->private.hours, 0xff, account->private.hours_len); /* available at all hours */
- account->private.unknown_2 = 0x00000000; /* don't know */
- account->private.unknown_3 = 0x000004ec; /* don't know */
-}
-
-static void destroy_sam_talloc(SAM_ACCOUNT_HANDLE **account)
-{
- if (*account) {
- data_blob_clear_free(&((*account)->private.lm_pw));
- data_blob_clear_free(&((*account)->private.nt_pw));
- if((*account)->private.plaintext_pw!=NULL)
- memset((*account)->private.plaintext_pw,'\0',strlen((*account)->private.plaintext_pw));
-
- talloc_destroy((*account)->mem_ctx);
- *account = NULL;
- }
-}
-
-
-/**********************************************************************
- Alloc memory and initialises a SAM_ACCOUNT_HANDLE on supplied mem_ctx.
-***********************************************************************/
-
-NTSTATUS sam_init_account_talloc(TALLOC_CTX *mem_ctx, SAM_ACCOUNT_HANDLE **account)
-{
- SMB_ASSERT(*account != NULL);
-
- if (!mem_ctx) {
- DEBUG(0,("sam_init_account_talloc: mem_ctx was NULL!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- *account=(SAM_ACCOUNT_HANDLE *)talloc(mem_ctx, sizeof(SAM_ACCOUNT_HANDLE));
-
- if (*account==NULL) {
- DEBUG(0,("sam_init_account_talloc: error while allocating memory\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- (*account)->mem_ctx = mem_ctx;
-
- (*account)->free_fn = NULL;
-
- sam_fill_default_account(*account);
-
- return NT_STATUS_OK;
-}
-
-
-/*************************************************************
- Alloc memory and initialises a struct sam_passwd.
- ************************************************************/
-
-NTSTATUS sam_init_account(SAM_ACCOUNT_HANDLE **account)
-{
- TALLOC_CTX *mem_ctx;
- NTSTATUS nt_status;
-
- mem_ctx = talloc_init("sam internal SAM_ACCOUNT_HANDLE allocation");
-
- if (!mem_ctx) {
- DEBUG(0,("sam_init_account: error while doing talloc_init()\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = sam_init_account_talloc(mem_ctx, account))) {
- talloc_destroy(mem_ctx);
- return nt_status;
- }
-
- (*account)->free_fn = destroy_sam_talloc;
-
- return NT_STATUS_OK;
-}
-
-/**
- * Free the contents of the SAM_ACCOUNT_HANDLE, but not the structure.
- *
- * Also wipes the LM and NT hashes and plaintext password from
- * memory.
- *
- * @param account SAM_ACCOUNT_HANDLE to free members of.
- **/
-
-static void sam_free_account_contents(SAM_ACCOUNT_HANDLE *account)
-{
-
- /* Kill off sensitive data. Free()ed by the
- talloc mechinism */
-
- data_blob_clear_free(&(account->private.lm_pw));
- data_blob_clear_free(&(account->private.nt_pw));
- if (account->private.plaintext_pw)
- memset(account->private.plaintext_pw,'\0',strlen(account->private.plaintext_pw));
-}
-
-
-/************************************************************
- Reset the SAM_ACCOUNT_HANDLE and free the NT/LM hashes.
- ***********************************************************/
-
-NTSTATUS sam_reset_sam(SAM_ACCOUNT_HANDLE *account)
-{
- SMB_ASSERT(account != NULL);
-
- sam_free_account_contents(account);
-
- sam_fill_default_account(account);
-
- return NT_STATUS_OK;
-}
-
-
-/************************************************************
- Free the SAM_ACCOUNT_HANDLE and the member pointers.
- ***********************************************************/
-
-NTSTATUS sam_free_account(SAM_ACCOUNT_HANDLE **account)
-{
- SMB_ASSERT(*account != NULL);
-
- sam_free_account_contents(*account);
-
- if ((*account)->free_fn) {
- (*account)->free_fn(account);
- }
-
- return NT_STATUS_OK;
-}
-
-
-/**********************************************************
- Encode the account control bits into a string.
- length = length of string to encode into (including terminating
- null). length *MUST BE MORE THAN 2* !
- **********************************************************/
-
-char *sam_encode_acct_ctrl(uint16 acct_ctrl, size_t length)
-{
- static fstring acct_str;
- size_t i = 0;
-
- acct_str[i++] = '[';
-
- if (acct_ctrl & ACB_PWNOTREQ ) acct_str[i++] = 'N';
- if (acct_ctrl & ACB_DISABLED ) acct_str[i++] = 'D';
- if (acct_ctrl & ACB_HOMDIRREQ) acct_str[i++] = 'H';
- if (acct_ctrl & ACB_TEMPDUP ) acct_str[i++] = 'T';
- if (acct_ctrl & ACB_NORMAL ) acct_str[i++] = 'U';
- if (acct_ctrl & ACB_MNS ) acct_str[i++] = 'M';
- if (acct_ctrl & ACB_WSTRUST ) acct_str[i++] = 'W';
- if (acct_ctrl & ACB_SVRTRUST ) acct_str[i++] = 'S';
- if (acct_ctrl & ACB_AUTOLOCK ) acct_str[i++] = 'L';
- if (acct_ctrl & ACB_PWNOEXP ) acct_str[i++] = 'X';
- if (acct_ctrl & ACB_DOMTRUST ) acct_str[i++] = 'I';
-
- for ( ; i < length - 2 ; i++ )
- acct_str[i] = ' ';
-
- i = length - 2;
- acct_str[i++] = ']';
- acct_str[i++] = '\0';
-
- return acct_str;
-}
-
-/**********************************************************
- Decode the account control bits from a string.
- **********************************************************/
-
-uint16 sam_decode_acct_ctrl(const char *p)
-{
- uint16 acct_ctrl = 0;
- BOOL finished = False;
-
- /*
- * Check if the account type bits have been encoded after the
- * NT password (in the form [NDHTUWSLXI]).
- */
-
- if (*p != '[')
- return 0;
-
- for (p++; *p && !finished; p++) {
- switch (*p) {
- case 'N': { acct_ctrl |= ACB_PWNOTREQ ; break; /* 'N'o password. */ }
- case 'D': { acct_ctrl |= ACB_DISABLED ; break; /* 'D'isabled. */ }
- case 'H': { acct_ctrl |= ACB_HOMDIRREQ; break; /* 'H'omedir required. */ }
- case 'T': { acct_ctrl |= ACB_TEMPDUP ; break; /* 'T'emp account. */ }
- case 'U': { acct_ctrl |= ACB_NORMAL ; break; /* 'U'ser account (normal). */ }
- case 'M': { acct_ctrl |= ACB_MNS ; break; /* 'M'NS logon user account. What is this ? */ }
- case 'W': { acct_ctrl |= ACB_WSTRUST ; break; /* 'W'orkstation account. */ }
- case 'S': { acct_ctrl |= ACB_SVRTRUST ; break; /* 'S'erver account. */ }
- case 'L': { acct_ctrl |= ACB_AUTOLOCK ; break; /* 'L'ocked account. */ }
- case 'X': { acct_ctrl |= ACB_PWNOEXP ; break; /* No 'X'piry on password */ }
- case 'I': { acct_ctrl |= ACB_DOMTRUST ; break; /* 'I'nterdomain trust account. */ }
- case ' ': { break; }
- case ':':
- case '\n':
- case '\0':
- case ']':
- default: { finished = True; }
- }
- }
-
- return acct_ctrl;
-}
-
-/*************************************************************
- Routine to set 32 hex password characters from a 16 byte array.
-**************************************************************/
-
-void sam_sethexpwd(char *p, const unsigned char *pwd, uint16 acct_ctrl)
-{
- if (pwd != NULL) {
- int i;
- for (i = 0; i < 16; i++)
- slprintf(&p[i*2], 3, "%02X", pwd[i]);
- } else {
- if (acct_ctrl & ACB_PWNOTREQ)
- safe_strcpy(p, "NO PASSWORDXXXXXXXXXXXXXXXXXXXXX", 33);
- else
- safe_strcpy(p, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 33);
- }
-}
-
-/*************************************************************
- Routine to get the 32 hex characters and turn them
- into a 16 byte array.
-**************************************************************/
-
-BOOL sam_gethexpwd(const char *p, unsigned char *pwd)
-{
- int i;
- unsigned char lonybble, hinybble;
- char *hexchars = "0123456789ABCDEF";
- char *p1, *p2;
-
- if (!p)
- return (False);
-
- for (i = 0; i < 32; i += 2) {
- hinybble = toupper(p[i]);
- lonybble = toupper(p[i + 1]);
-
- p1 = strchr(hexchars, hinybble);
- p2 = strchr(hexchars, lonybble);
-
- if (!p1 || !p2)
- return (False);
-
- hinybble = PTR_DIFF(p1, hexchars);
- lonybble = PTR_DIFF(p2, hexchars);
-
- pwd[i / 2] = (hinybble << 4) | lonybble;
- }
- return (True);
-}
diff --git a/source3/sam/get_set_account.c b/source3/sam/get_set_account.c
deleted file mode 100644
index acac281d21..0000000000
--- a/source3/sam/get_set_account.c
+++ /dev/null
@@ -1,845 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM_ACCOUNT_HANDLE access routines
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Jelmer Vernooij 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-NTSTATUS sam_get_account_domain_sid(const SAM_ACCOUNT_HANDLE *sampass, const DOM_SID **sid)
-{
- NTSTATUS status;
- SAM_DOMAIN_HANDLE *domain;
- SAM_ASSERT(!sampass || !sid);
-
- if (!NT_STATUS_IS_OK(status = sam_get_account_domain(sampass, &domain))){
- DEBUG(0, ("sam_get_account_domain_sid: Can't get domain for account\n"));
- return status;
- }
-
- return sam_get_domain_sid(domain, sid);
-}
-
-NTSTATUS sam_get_account_domain_name(const SAM_ACCOUNT_HANDLE *sampass, const char **domain_name)
-{
- NTSTATUS status;
- SAM_DOMAIN_HANDLE *domain;
- SAM_ASSERT(sampass && domain_name);
-
- if (!NT_STATUS_IS_OK(status = sam_get_account_domain(sampass, &domain))){
- DEBUG(0, ("sam_get_account_domain_name: Can't get domain for account\n"));
- return status;
- }
-
- return sam_get_domain_name(domain, domain_name);
-}
-
-NTSTATUS sam_get_account_acct_ctrl(const SAM_ACCOUNT_HANDLE *sampass, uint16 *acct_ctrl)
-{
- SAM_ASSERT(sampass && acct_ctrl);
-
- *acct_ctrl = sampass->private.acct_ctrl;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_logon_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *logon_time)
-{
- SAM_ASSERT(sampass && logon_time) ;
-
- *logon_time = sampass->private.logon_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_logoff_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *logoff_time)
-{
- SAM_ASSERT(sampass && logoff_time) ;
-
- *logoff_time = sampass->private.logoff_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_kickoff_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *kickoff_time)
-{
- SAM_ASSERT(sampass && kickoff_time);
-
- *kickoff_time = sampass->private.kickoff_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_pass_last_set_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *pass_last_set_time)
-{
- SAM_ASSERT(sampass && pass_last_set_time);
-
- *pass_last_set_time = sampass->private.pass_last_set_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_pass_can_change_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *pass_can_change_time)
-{
- SAM_ASSERT(sampass && pass_can_change_time);
-
- *pass_can_change_time = sampass->private.pass_can_change_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_pass_must_change_time(const SAM_ACCOUNT_HANDLE *sampass, NTTIME *pass_must_change_time)
-{
- SAM_ASSERT(sampass && pass_must_change_time);
-
- *pass_must_change_time = sampass->private.pass_must_change_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_logon_divs(const SAM_ACCOUNT_HANDLE *sampass, uint16 *logon_divs)
-{
- SAM_ASSERT(sampass && logon_divs);
-
- *logon_divs = sampass->private.logon_divs;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_hours_len(const SAM_ACCOUNT_HANDLE *sampass, uint32 *hours_len)
-{
- SAM_ASSERT(sampass && hours_len);
-
- *hours_len = sampass->private.hours_len;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_hours(const SAM_ACCOUNT_HANDLE *sampass, const uint8 **hours)
-{
- SAM_ASSERT(sampass && hours);
-
- *hours = sampass->private.hours;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_nt_pwd(const SAM_ACCOUNT_HANDLE *sampass, DATA_BLOB *nt_pwd)
-{
- SAM_ASSERT(sampass);
-
- SMB_ASSERT((!sampass->private.nt_pw.data)
- || sampass->private.nt_pw.length == NT_HASH_LEN);
-
- *nt_pwd = sampass->private.nt_pw;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_lm_pwd(const SAM_ACCOUNT_HANDLE *sampass, DATA_BLOB *lm_pwd)
-{
- SAM_ASSERT(sampass);
-
- SMB_ASSERT((!sampass->private.lm_pw.data)
- || sampass->private.lm_pw.length == LM_HASH_LEN);
-
- *lm_pwd = sampass->private.lm_pw;
-
- return NT_STATUS_OK;
-}
-
-/* Return the plaintext password if known. Most of the time
- it isn't, so don't assume anything magic about this function.
-
- Used to pass the plaintext to sam backends that might
- want to store more than just the NTLM hashes.
-*/
-
-NTSTATUS sam_get_account_plaintext_pwd(const SAM_ACCOUNT_HANDLE *sampass, char **plain_pwd)
-{
- SAM_ASSERT(sampass && plain_pwd);
-
- *plain_pwd = sampass->private.plaintext_pw;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_sid(const SAM_ACCOUNT_HANDLE *sampass, const DOM_SID **sid)
-{
- SAM_ASSERT(sampass);
-
- *sid = &(sampass->private.account_sid);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_pgroup(const SAM_ACCOUNT_HANDLE *sampass, const DOM_SID **sid)
-{
- SAM_ASSERT(sampass);
-
- *sid = &(sampass->private.group_sid);
-
- return NT_STATUS_OK;
-}
-
-/**
- * Get flags showing what is initalised in the SAM_ACCOUNT_HANDLE
- * @param sampass the SAM_ACCOUNT_HANDLE in question
- * @return the flags indicating the members initialised in the struct.
- **/
-
-NTSTATUS sam_get_account_init_flag(const SAM_ACCOUNT_HANDLE *sampass, uint32 *initflag)
-{
- SAM_ASSERT(sampass);
-
- *initflag = sampass->private.init_flag;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_name(const SAM_ACCOUNT_HANDLE *sampass, char **account_name)
-{
- SAM_ASSERT(sampass);
-
- *account_name = sampass->private.account_name;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_domain(const SAM_ACCOUNT_HANDLE *sampass, SAM_DOMAIN_HANDLE **domain)
-{
- SAM_ASSERT(sampass);
-
- *domain = sampass->private.domain;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_fullname(const SAM_ACCOUNT_HANDLE *sampass, char **fullname)
-{
- SAM_ASSERT(sampass);
-
- *fullname = sampass->private.full_name;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_homedir(const SAM_ACCOUNT_HANDLE *sampass, char **homedir)
-{
- SAM_ASSERT(sampass);
-
- *homedir = sampass->private.home_dir;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_unix_home_dir(const SAM_ACCOUNT_HANDLE *sampass, char **uhomedir)
-{
- SAM_ASSERT(sampass);
-
- *uhomedir = sampass->private.unix_home_dir;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_dir_drive(const SAM_ACCOUNT_HANDLE *sampass, char **dirdrive)
-{
- SAM_ASSERT(sampass);
-
- *dirdrive = sampass->private.dir_drive;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_logon_script(const SAM_ACCOUNT_HANDLE *sampass, char **logon_script)
-{
- SAM_ASSERT(sampass);
-
- *logon_script = sampass->private.logon_script;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_profile_path(const SAM_ACCOUNT_HANDLE *sampass, char **profile_path)
-{
- SAM_ASSERT(sampass);
-
- *profile_path = sampass->private.profile_path;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_description(const SAM_ACCOUNT_HANDLE *sampass, char **description)
-{
- SAM_ASSERT(sampass);
-
- *description = sampass->private.acct_desc;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_workstations(const SAM_ACCOUNT_HANDLE *sampass, char **workstations)
-{
- SAM_ASSERT(sampass);
-
- *workstations = sampass->private.workstations;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_unknown_str(const SAM_ACCOUNT_HANDLE *sampass, char **unknown_str)
-{
- SAM_ASSERT(sampass);
-
- *unknown_str = sampass->private.unknown_str;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_munged_dial(const SAM_ACCOUNT_HANDLE *sampass, char **munged_dial)
-{
- SAM_ASSERT(sampass);
-
- *munged_dial = sampass->private.munged_dial;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_unknown_1(const SAM_ACCOUNT_HANDLE *sampass, uint32 *unknown1)
-{
- SAM_ASSERT(sampass && unknown1);
-
- *unknown1 = sampass->private.unknown_1;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_unknown_2(const SAM_ACCOUNT_HANDLE *sampass, uint32 *unknown2)
-{
- SAM_ASSERT(sampass && unknown2);
-
- *unknown2 = sampass->private.unknown_2;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_unknown_3(const SAM_ACCOUNT_HANDLE *sampass, uint32 *unknown3)
-{
- SAM_ASSERT(sampass && unknown3);
-
- *unknown3 = sampass->private.unknown_3;
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Collection of set...() functions for SAM_ACCOUNT_HANDLE_INFO.
- ********************************************************************/
-
-NTSTATUS sam_set_account_acct_ctrl(SAM_ACCOUNT_HANDLE *sampass, uint16 acct_ctrl)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.acct_ctrl = acct_ctrl;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_logon_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.logon_time = mytime;
-
-
- return NT_STATUS_UNSUCCESSFUL;
-}
-
-NTSTATUS sam_set_account_logoff_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.logoff_time = mytime;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_kickoff_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.kickoff_time = mytime;
-
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_pass_can_change_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.pass_can_change_time = mytime;
-
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_pass_must_change_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.pass_must_change_time = mytime;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_pass_last_set_time(SAM_ACCOUNT_HANDLE *sampass, NTTIME mytime)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.pass_last_set_time = mytime;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_hours_len(SAM_ACCOUNT_HANDLE *sampass, uint32 len)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.hours_len = len;
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_logon_divs(SAM_ACCOUNT_HANDLE *sampass, uint16 hours)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.logon_divs = hours;
- return NT_STATUS_OK;
-}
-
-/**
- * Set flags showing what is initalised in the SAM_ACCOUNT_HANDLE
- * @param sampass the SAM_ACCOUNT_HANDLE in question
- * @param flag The *new* flag to be set. Old flags preserved
- * this flag is only added.
- **/
-
-NTSTATUS sam_set_account_init_flag(SAM_ACCOUNT_HANDLE *sampass, uint32 flag)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.init_flag |= flag;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_sid(SAM_ACCOUNT_HANDLE *sampass, const DOM_SID *u_sid)
-{
- SAM_ASSERT(sampass && u_sid);
-
- sid_copy(&sampass->private.account_sid, u_sid);
-
- DEBUG(10, ("sam_set_account_sid: setting account sid %s\n",
- sid_string_static(&sampass->private.account_sid)));
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_sid_from_string(SAM_ACCOUNT_HANDLE *sampass, const char *u_sid)
-{
- DOM_SID new_sid;
- SAM_ASSERT(sampass && u_sid);
-
- DEBUG(10, ("sam_set_account_sid_from_string: setting account sid %s\n",
- u_sid));
-
- if (!string_to_sid(&new_sid, u_sid)) {
- DEBUG(1, ("sam_set_account_sid_from_string: %s isn't a valid SID!\n", u_sid));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!NT_STATUS_IS_OK(sam_set_account_sid(sampass, &new_sid))) {
- DEBUG(1, ("sam_set_account_sid_from_string: could not set sid %s on SAM_ACCOUNT_HANDLE!\n", u_sid));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_pgroup_sid(SAM_ACCOUNT_HANDLE *sampass, const DOM_SID *g_sid)
-{
- SAM_ASSERT(sampass && g_sid);
-
- sid_copy(&sampass->private.group_sid, g_sid);
-
- DEBUG(10, ("sam_set_group_sid: setting group sid %s\n",
- sid_string_static(&sampass->private.group_sid)));
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_pgroup_string(SAM_ACCOUNT_HANDLE *sampass, const char *g_sid)
-{
- DOM_SID new_sid;
- SAM_ASSERT(sampass && g_sid);
-
- DEBUG(10, ("sam_set_group_sid_from_string: setting group sid %s\n",
- g_sid));
-
- if (!string_to_sid(&new_sid, g_sid)) {
- DEBUG(1, ("sam_set_group_sid_from_string: %s isn't a valid SID!\n", g_sid));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!NT_STATUS_IS_OK(sam_set_account_pgroup_sid(sampass, &new_sid))) {
- DEBUG(1, ("sam_set_group_sid_from_string: could not set sid %s on SAM_ACCOUNT_HANDLE!\n", g_sid));
- return NT_STATUS_UNSUCCESSFUL;
- }
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the domain name.
- ********************************************************************/
-
-NTSTATUS sam_set_account_domain(SAM_ACCOUNT_HANDLE *sampass, SAM_DOMAIN_HANDLE *domain)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.domain = domain;
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's NT name.
- ********************************************************************/
-
-NTSTATUS sam_set_account_name(SAM_ACCOUNT_HANDLE *sampass, const char *account_name)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_account_name: setting nt account_name %s, was %s\n", account_name, sampass->private.account_name));
-
- sampass->private.account_name = talloc_strdup(sampass->mem_ctx, account_name);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's full name.
- ********************************************************************/
-
-NTSTATUS sam_set_account_fullname(SAM_ACCOUNT_HANDLE *sampass, const char *full_name)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_account_fullname: setting full name %s, was %s\n", full_name, sampass->private.full_name));
-
- sampass->private.full_name = talloc_strdup(sampass->mem_ctx, full_name);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's logon script.
- ********************************************************************/
-
-NTSTATUS sam_set_account_logon_script(SAM_ACCOUNT_HANDLE *sampass, const char *logon_script, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_logon_script: from %s to %s\n", logon_script, sampass->private.logon_script));
-
- sampass->private.logon_script = talloc_strdup(sampass->mem_ctx, logon_script);
-
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's profile path.
- ********************************************************************/
-
-NTSTATUS sam_set_account_profile_path(SAM_ACCOUNT_HANDLE *sampass, const char *profile_path, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_profile_path: setting profile path %s, was %s\n", profile_path, sampass->private.profile_path));
-
- sampass->private.profile_path = talloc_strdup(sampass->mem_ctx, profile_path);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's directory drive.
- ********************************************************************/
-
-NTSTATUS sam_set_account_dir_drive(SAM_ACCOUNT_HANDLE *sampass, const char *dir_drive, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_dir_drive: setting dir drive %s, was %s\n", dir_drive,
- sampass->private.dir_drive));
-
- sampass->private.dir_drive = talloc_strdup(sampass->mem_ctx, dir_drive);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's home directory.
- ********************************************************************/
-
-NTSTATUS sam_set_account_homedir(SAM_ACCOUNT_HANDLE *sampass, const char *home_dir, BOOL store)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_homedir: setting home dir %s, was %s\n", home_dir,
- sampass->private.home_dir));
-
- sampass->private.home_dir = talloc_strdup(sampass->mem_ctx, home_dir);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's unix home directory.
- ********************************************************************/
-
-NTSTATUS sam_set_account_unix_homedir(SAM_ACCOUNT_HANDLE *sampass, const char *unix_home_dir)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_unix_homedir: setting home dir %s, was %s\n", unix_home_dir,
- sampass->private.unix_home_dir));
-
- sampass->private.unix_home_dir = talloc_strdup(sampass->mem_ctx, unix_home_dir);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's account description.
- ********************************************************************/
-
-NTSTATUS sam_set_account_acct_desc(SAM_ACCOUNT_HANDLE *sampass, const char *acct_desc)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.acct_desc = talloc_strdup(sampass->mem_ctx, acct_desc);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's workstation allowed list.
- ********************************************************************/
-
-NTSTATUS sam_set_account_workstations(SAM_ACCOUNT_HANDLE *sampass, const char *workstations)
-{
- SAM_ASSERT(sampass);
-
- DEBUG(10, ("sam_set_workstations: setting workstations %s, was %s\n", workstations,
- sampass->private.workstations));
-
- sampass->private.workstations = talloc_strdup(sampass->mem_ctx, workstations);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's 'unknown_str', whatever the heck this actually is...
- ********************************************************************/
-
-NTSTATUS sam_set_account_unknown_str(SAM_ACCOUNT_HANDLE *sampass, const char *unknown_str)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.unknown_str = talloc_strdup(sampass->mem_ctx, unknown_str);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's dial string.
- ********************************************************************/
-
-NTSTATUS sam_set_account_munged_dial(SAM_ACCOUNT_HANDLE *sampass, const char *munged_dial)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.munged_dial = talloc_strdup(sampass->mem_ctx, munged_dial);
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's NT hash.
- ********************************************************************/
-
-NTSTATUS sam_set_account_nt_pwd(SAM_ACCOUNT_HANDLE *sampass, const DATA_BLOB data)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.nt_pw = data;
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's LM hash.
- ********************************************************************/
-
-NTSTATUS sam_set_account_lm_pwd(SAM_ACCOUNT_HANDLE *sampass, const DATA_BLOB data)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.lm_pw = data;
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's plaintext password only (base procedure, see helper
- below)
- ********************************************************************/
-
-NTSTATUS sam_set_account_plaintext_pwd(SAM_ACCOUNT_HANDLE *sampass, const char *plain_pwd)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.plaintext_pw = talloc_strdup(sampass->mem_ctx, plain_pwd);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_unknown_1(SAM_ACCOUNT_HANDLE *sampass, uint32 unkn)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.unknown_1 = unkn;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_unknown_2(SAM_ACCOUNT_HANDLE *sampass, uint32 unkn)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.unknown_2 = unkn;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_unknown_3(SAM_ACCOUNT_HANDLE *sampass, uint32 unkn)
-{
- SAM_ASSERT(sampass);
-
- sampass->private.unknown_3 = unkn;
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_account_hours(SAM_ACCOUNT_HANDLE *sampass, const uint8 *hours)
-{
- SAM_ASSERT(sampass);
-
- if (!hours) {
- memset ((char *)sampass->private.hours, 0, MAX_HOURS_LEN);
- return NT_STATUS_OK;
- }
-
- memcpy(sampass->private.hours, hours, MAX_HOURS_LEN);
-
- return NT_STATUS_OK;
-}
-
-/* Helpful interfaces to the above */
-
-/*********************************************************************
- Sets the last changed times and must change times for a normal
- password change.
- ********************************************************************/
-
-NTSTATUS sam_set_account_pass_changed_now(SAM_ACCOUNT_HANDLE *sampass)
-{
- uint32 expire;
- NTTIME temptime;
-
- SAM_ASSERT(sampass);
-
- unix_to_nt_time(&temptime, time(NULL));
- if (!NT_STATUS_IS_OK(sam_set_account_pass_last_set_time(sampass, temptime)))
- return NT_STATUS_UNSUCCESSFUL;
-
- if (!account_policy_get(AP_MAX_PASSWORD_AGE, &expire)
- || (expire==(uint32)-1)) {
-
- get_nttime_max(&temptime);
- if (!NT_STATUS_IS_OK(sam_set_account_pass_must_change_time(sampass, temptime, False)))
- return NT_STATUS_UNSUCCESSFUL;
-
- } else {
- /* FIXME: Add expire to temptime */
-
- if (!NT_STATUS_IS_OK(sam_get_account_pass_last_set_time(sampass,&temptime)) || !NT_STATUS_IS_OK(sam_set_account_pass_must_change_time(sampass, temptime,True)))
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- return NT_STATUS_OK;
-}
-
-/*********************************************************************
- Set the account's PLAINTEXT password. Used as an interface to the above.
- Also sets the last change time to NOW.
- ********************************************************************/
-
-NTSTATUS sam_set_account_passwd(SAM_ACCOUNT_HANDLE *sampass, const char *plaintext)
-{
- DATA_BLOB data;
- uchar new_lanman_p16[16];
- uchar new_nt_p16[16];
-
- SAM_ASSERT(sampass && plaintext);
-
- nt_lm_owf_gen(plaintext, new_nt_p16, new_lanman_p16);
-
- data = data_blob(new_nt_p16, 16);
- if (!NT_STATUS_IS_OK(sam_set_account_nt_pwd(sampass, data)))
- return NT_STATUS_UNSUCCESSFUL;
-
- data = data_blob(new_lanman_p16, 16);
-
- if (!NT_STATUS_IS_OK(sam_set_account_lm_pwd(sampass, data)))
- return NT_STATUS_UNSUCCESSFUL;
-
- if (!NT_STATUS_IS_OK(sam_set_account_plaintext_pwd(sampass, plaintext)))
- return NT_STATUS_UNSUCCESSFUL;
-
- if (!NT_STATUS_IS_OK(sam_set_account_pass_changed_now(sampass)))
- return NT_STATUS_UNSUCCESSFUL;
-
- return NT_STATUS_OK;
-}
-
diff --git a/source3/sam/get_set_domain.c b/source3/sam/get_set_domain.c
deleted file mode 100644
index c70a4a3f09..0000000000
--- a/source3/sam/get_set_domain.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM_DOMAIN access routines
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Jelmer Vernooij 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-NTSTATUS sam_get_domain_sid(SAM_DOMAIN_HANDLE *domain, const DOM_SID **sid)
-{
- SAM_ASSERT(domain &&sid);
-
- *sid = &(domain->private.sid);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_num_accounts(SAM_DOMAIN_HANDLE *domain, uint32 *num_accounts)
-{
- SAM_ASSERT(domain &&num_accounts);
-
- *num_accounts = domain->private.num_accounts;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_num_groups(SAM_DOMAIN_HANDLE *domain, uint32 *num_groups)
-{
- SAM_ASSERT(domain &&num_groups);
-
- *num_groups = domain->private.num_groups;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_num_aliases(SAM_DOMAIN_HANDLE *domain, uint32 *num_aliases)
-{
- SAM_ASSERT(domain &&num_aliases);
-
- *num_aliases = domain->private.num_aliases;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_name(SAM_DOMAIN_HANDLE *domain, const char **domain_name)
-{
- SAM_ASSERT(domain &&domain_name);
-
- *domain_name = domain->private.name;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_server(SAM_DOMAIN_HANDLE *domain, const char **server_name)
-{
- SAM_ASSERT(domain &&server_name);
-
- *server_name = domain->private.servername;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_max_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME *max_passwordage)
-{
- SAM_ASSERT(domain &&max_passwordage);
-
- *max_passwordage = domain->private.max_passwordage;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_min_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME *min_passwordage)
-{
- SAM_ASSERT(domain &&min_passwordage);
-
- *min_passwordage = domain->private.min_passwordage;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_lockout_duration(SAM_DOMAIN_HANDLE *domain, NTTIME *lockout_duration)
-{
- SAM_ASSERT(domain &&lockout_duration);
-
- *lockout_duration = domain->private.lockout_duration;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_reset_count(SAM_DOMAIN_HANDLE *domain, NTTIME *reset_lockout_count)
-{
- SAM_ASSERT(domain &&reset_lockout_count);
-
- *reset_lockout_count = domain->private.reset_count;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_min_pwdlength(SAM_DOMAIN_HANDLE *domain, uint16 *min_passwordlength)
-{
- SAM_ASSERT(domain &&min_passwordlength);
-
- *min_passwordlength = domain->private.min_passwordlength;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_pwd_history(SAM_DOMAIN_HANDLE *domain, uint16 *password_history)
-{
- SAM_ASSERT(domain &&password_history);
-
- *password_history = domain->private.password_history;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_lockout_count(SAM_DOMAIN_HANDLE *domain, uint16 *lockout_count)
-{
- SAM_ASSERT(domain &&lockout_count);
-
- *lockout_count = domain->private.lockout_count;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_domain_force_logoff(SAM_DOMAIN_HANDLE *domain, BOOL *force_logoff)
-{
- SAM_ASSERT(domain &&force_logoff);
-
- *force_logoff = domain->private.force_logoff;
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS sam_get_domain_login_pwdchange(SAM_DOMAIN_HANDLE *domain, BOOL *login_pwdchange)
-{
- SAM_ASSERT(domain && login_pwdchange);
-
- *login_pwdchange = domain->private.login_pwdchange;
-
- return NT_STATUS_OK;
-}
-
-/* Set */
-
-NTSTATUS sam_set_domain_name(SAM_DOMAIN_HANDLE *domain, const char *domain_name)
-{
- SAM_ASSERT(domain);
-
- domain->private.name = talloc_strdup(domain->mem_ctx, domain_name);
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS sam_set_domain_max_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME max_passwordage)
-{
- SAM_ASSERT(domain);
-
- domain->private.max_passwordage = max_passwordage;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_min_pwdage(SAM_DOMAIN_HANDLE *domain, NTTIME min_passwordage)
-{
- SAM_ASSERT(domain);
-
- domain->private.min_passwordage = min_passwordage;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_lockout_duration(SAM_DOMAIN_HANDLE *domain, NTTIME lockout_duration)
-{
- SAM_ASSERT(domain);
-
- domain->private.lockout_duration = lockout_duration;
-
- return NT_STATUS_OK;
-}
-NTSTATUS sam_set_domain_reset_count(SAM_DOMAIN_HANDLE *domain, NTTIME reset_lockout_count)
-{
- SAM_ASSERT(domain);
-
- domain->private.reset_count = reset_lockout_count;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_min_pwdlength(SAM_DOMAIN_HANDLE *domain, uint16 min_passwordlength)
-{
- SAM_ASSERT(domain);
-
- domain->private.min_passwordlength = min_passwordlength;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_pwd_history(SAM_DOMAIN_HANDLE *domain, uint16 password_history)
-{
- SAM_ASSERT(domain);
-
- domain->private.password_history = password_history;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_lockout_count(SAM_DOMAIN_HANDLE *domain, uint16 lockout_count)
-{
- SAM_ASSERT(domain);
-
- domain->private.lockout_count = lockout_count;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_force_logoff(SAM_DOMAIN_HANDLE *domain, BOOL force_logoff)
-{
- SAM_ASSERT(domain);
-
- domain->private.force_logoff = force_logoff;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_login_pwdchange(SAM_DOMAIN_HANDLE *domain, BOOL login_pwdchange)
-{
- SAM_ASSERT(domain);
-
- domain->private.login_pwdchange = login_pwdchange;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_domain_server(SAM_DOMAIN_HANDLE *domain, const char *server_name)
-{
- SAM_ASSERT(domain);
-
- domain->private.servername = talloc_strdup(domain->mem_ctx, server_name);
-
- return NT_STATUS_OK;
-}
diff --git a/source3/sam/get_set_group.c b/source3/sam/get_set_group.c
deleted file mode 100644
index 11ea9258a7..0000000000
--- a/source3/sam/get_set_group.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM_USER_HANDLE access routines
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Jelmer Vernooij 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-/* sam group get functions */
-
-NTSTATUS sam_get_group_sid(const SAM_GROUP_HANDLE *group, const DOM_SID **sid)
-{
- SAM_ASSERT(group && sid);
-
- *sid = &(group->private.sid);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_group_ctrl(const SAM_GROUP_HANDLE *group, uint32 *group_ctrl)
-{
- SAM_ASSERT(group && group_ctrl);
-
- *group_ctrl = group->private.group_ctrl;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_group_name(const SAM_GROUP_HANDLE *group, const char **group_name)
-{
- SAM_ASSERT(group);
-
- *group_name = group->private.group_name;
-
- return NT_STATUS_OK;
-
-}
-NTSTATUS sam_get_group_comment(const SAM_GROUP_HANDLE *group, const char **group_desc)
-{
- SAM_ASSERT(group);
-
- *group_desc = group->private.group_desc;
-
- return NT_STATUS_OK;
-}
-
-/* sam group set functions */
-
-NTSTATUS sam_set_group_sid(SAM_GROUP_HANDLE *group, const DOM_SID *sid)
-{
- SAM_ASSERT(group);
-
- if (!sid)
- ZERO_STRUCT(group->private.sid);
- else
- sid_copy(&(group->private.sid), sid);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_group_group_ctrl(SAM_GROUP_HANDLE *group, uint32 group_ctrl)
-{
- SAM_ASSERT(group);
-
- group->private.group_ctrl = group_ctrl;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_group_name(SAM_GROUP_HANDLE *group, const char *group_name)
-{
- SAM_ASSERT(group);
-
- group->private.group_name = talloc_strdup(group->mem_ctx, group_name);
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_group_description(SAM_GROUP_HANDLE *group, const char *group_desc)
-{
- SAM_ASSERT(group);
-
- group->private.group_desc = talloc_strdup(group->mem_ctx, group_desc);
-
- return NT_STATUS_OK;
-
-}
diff --git a/source3/sam/group.c b/source3/sam/group.c
deleted file mode 100644
index 101e3dd7ce..0000000000
--- a/source3/sam/group.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM_GROUP_HANDLE /SAM_GROUP_ENUM helpers
-
- Copyright (C) Stefan (metze) Metzmacher 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-/************************************************************
- Fill the SAM_GROUP_HANDLE with default values.
- ***********************************************************/
-
-static void sam_fill_default_group(SAM_GROUP_HANDLE *group)
-{
- ZERO_STRUCT(group->private); /* Don't touch the talloc context */
-
-}
-
-static void destroy_sam_group_handle_talloc(SAM_GROUP_HANDLE **group)
-{
- if (*group) {
-
- talloc_destroy((*group)->mem_ctx);
- *group = NULL;
- }
-}
-
-
-/**********************************************************************
- Alloc memory and initialises a SAM_GROUP_HANDLE on supplied mem_ctx.
-***********************************************************************/
-
-NTSTATUS sam_init_group_talloc(TALLOC_CTX *mem_ctx, SAM_GROUP_HANDLE **group)
-{
- SMB_ASSERT(*group != NULL);
-
- if (!mem_ctx) {
- DEBUG(0,("sam_init_group_talloc: mem_ctx was NULL!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- *group=(SAM_GROUP_HANDLE *)talloc(mem_ctx, sizeof(SAM_GROUP_HANDLE));
-
- if (*group==NULL) {
- DEBUG(0,("sam_init_group_talloc: error while allocating memory\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- (*group)->mem_ctx = mem_ctx;
-
- (*group)->free_fn = NULL;
-
- sam_fill_default_group(*group);
-
- return NT_STATUS_OK;
-}
-
-
-/*************************************************************
- Alloc memory and initialises a struct SAM_GROUP_HANDLE.
- ************************************************************/
-
-NTSTATUS sam_init_group(SAM_GROUP_HANDLE **group)
-{
- TALLOC_CTX *mem_ctx;
- NTSTATUS nt_status;
-
- mem_ctx = talloc_init("sam internal SAM_GROUP_HANDLE allocation");
-
- if (!mem_ctx) {
- DEBUG(0,("sam_init_group: error while doing talloc_init()\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = sam_init_group_talloc(mem_ctx, group))) {
- talloc_destroy(mem_ctx);
- return nt_status;
- }
-
- (*group)->free_fn = destroy_sam_group_handle_talloc;
-
- return NT_STATUS_OK;
-}
-
-
-/************************************************************
- Reset the SAM_GROUP_HANDLE.
- ***********************************************************/
-
-NTSTATUS sam_reset_group(SAM_GROUP_HANDLE *group)
-{
- SMB_ASSERT(group != NULL);
-
- sam_fill_default_group(group);
-
- return NT_STATUS_OK;
-}
-
-
-/************************************************************
- Free the SAM_GROUP_HANDLE and the member pointers.
- ***********************************************************/
-
-NTSTATUS sam_free_group(SAM_ACCOUNT_HANDLE **group)
-{
- SMB_ASSERT(*group != NULL);
-
- if ((*group)->free_fn) {
- (*group)->free_fn(group);
- }
-
- return NT_STATUS_OK;
-}
-
-
-/**********************************************************
- Encode the group control bits into a string.
- length = length of string to encode into (including terminating
- null). length *MUST BE MORE THAN 2* !
- **********************************************************/
-
-char *sam_encode_acct_ctrl(uint16 group_ctrl, size_t length)
-{
- static fstring group_str;
- size_t i = 0;
-
- group_str[i++] = '[';
-
- if (group_ctrl & GCB_LOCAL_GROUP ) group_str[i++] = 'L';
- if (group_ctrl & GCB_GLOBAL_GROUP ) group_str[i++] = 'G';
-
- for ( ; i < length - 2 ; i++ )
- group_str[i] = ' ';
-
- i = length - 2;
- group_str[i++] = ']';
- group_str[i++] = '\0';
-
- return group_str;
-}
-
-/**********************************************************
- Decode the group control bits from a string.
- **********************************************************/
-
-uint16 sam_decode_group_ctrl(const char *p)
-{
- uint16 group_ctrl = 0;
- BOOL finished = False;
-
- /*
- * Check if the account type bits have been encoded after the
- * NT password (in the form [NDHTUWSLXI]).
- */
-
- if (*p != '[')
- return 0;
-
- for (p++; *p && !finished; p++) {
- switch (*p) {
- case 'L': { group_ctrl |= GCB_LOCAL_GROUP; break; /* 'L'ocal Aliases Group. */ }
- case 'G': { group_ctrl |= GCB_GLOBAL_GROUP; break; /* 'G'lobal Domain Group. */ }
-
- case ' ': { break; }
- case ':':
- case '\n':
- case '\0':
- case ']':
- default: { finished = True; }
- }
- }
-
- return group_ctrl;
-}
-
diff --git a/source3/sam/gumm_tdb.c b/source3/sam/gumm_tdb.c
deleted file mode 100644
index 52eaab9e17..0000000000
--- a/source3/sam/gumm_tdb.c
+++ /dev/null
@@ -1,562 +0,0 @@
-/*
- * Unix SMB/CIFS implementation.
- * SMB parameters and setup
- * Copyright (C) Andrew Tridgell 1992-1998
- * Copyright (C) Simo Sorce 2000-2002
- * Copyright (C) Gerald Carter 2000
- * Copyright (C) Jeremy Allison 2001
- * Copyright (C) Andrew Bartlett 2002
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 675
- * Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include "includes.h"
-#include "gums.h"
-#include "tdbsam2.h"
-#include "tdbsam2_parse_info.h"
-
-static int tdbgumm_debug_level = DBGC_ALL;
-#undef DBGC_CLASS
-#define DBGC_CLASS tdbgumm_debug_level
-
-#define TDBSAM_VERSION "20021215"
-#define TDB_FILE_NAME "tdbsam2.tdb"
-#define DOMAINPREFIX "DOMAIN_"
-#define OBJECTPREFIX "OBJECT_"
-#define SIDPREFIX "SID_"
-#define PRIVILEGEPREFIX "PRIV_"
-
-#define TDB_FORMAT_STRING "ddB"
-
-union tdbsam2_data {
- struct tdbsam2_domain_data *domain;
- struct tdbsam2_user_data *user;
- struct tdbsam2_group_data *group;
-};
-
-struct tdbsam2_object {
- uint32 type;
- union tdbsam2_data data;
-};
-
-static TDB_CONTEXT *tdbsam2_db;
-
-#define TALLOC_CHECK(ptr, err, label) do { if ((ptr) == NULL) { DEBUG(0, ("%s: Out of memory!\n", __FUNCTION__)); err = NT_STATUS_NO_MEMORY; goto label; } } while(0)
-#define SET_OR_FAIL(func, label) do { if (NT_STATUS_IS_ERR(func)) { DEBUG(0, ("%s: Setting gums object data failed!\n", __FUNCTION__)); goto label; } } while(0)
-
-static NTSTATUS init_tdbsam2_object_from_buffer(struct tdbsam2_object *object, TALLOC_CTX *mem_ctx, char *buffer, int size) {
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS tdbsam2_opentdb(void) {
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS tdbsam2_get_object_by_name(struct tdbsam2_object *obj, TALLOC_CTX *mem_ctx, const char* name) {
-
- NTSTATUS ret;
- TDB_DATA data, key;
- fstring keystr;
- fstring objname;
-
- if (!obj || !mem_ctx || !name)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (tdbsam2_db == NULL) {
- if (NT_STATUS_IS_ERR(ret = tdbsam2_opentdb())) {
- goto done;
- }
- }
-
- unix_strlower(name, -1, objname, sizeof(objname));
-
- slprintf(keystr, sizeof(keystr)-1, "%s%s", OBJECTPREFIX, objname);
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- data = tdb_fetch(tdbsam2_db, key);
- if (!data.dptr) {
- DEBUG(5, ("get_domain_sid: Error fetching database, domain entry not found!\n"));
- DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(5, (" Key: %s\n", keystr));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- if (NT_STATUS_IS_ERR(init_tdbsam2_object_from_buffer(obj, mem_ctx, data.dptr, data.dsize))) {
- SAFE_FREE(data.dptr);
- DEBUG(0, ("get_domain_sid: Error fetching database, malformed entry!\n"));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
- SAFE_FREE(data.dptr);
-
- ret = NT_STATUS_OK;
-
-done:
- return ret;
-}
-
-
-static NTSTATUS tdbsam2_store(struct tdbsam2_object *object) {
-
- NTSTATUS ret;
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS tdbsam2_get_next_sid(TALLOC_CTX *mem_ctx, DOM_SID *sid) {
-
- NTSTATUS ret;
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS tdbsam2_user_data_to_gums_object(GUMS_OBJECT **object, struct tdbsam2_user_data *userdata, uint32 type) {
-
- NTSTATUS ret;
-
- if (!object || !userdata) {
- DEBUG(0, ("tdbsam2_user_data_to_gums_object: no NULL pointers are accepted here!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- /* userdata->xcounter */
- /* userdata->sec_desc */
-
- SET_OR_FAIL(gums_set_object_sid(*object, userdata->user_sid), error);
- SET_OR_FAIL(gums_set_object_name(*object, userdata->name), error);
-
- SET_OR_FAIL(gums_set_user_pri_group(*object, userdata->group_sid), error);
-
- if (userdata->description)
- SET_OR_FAIL(gums_set_object_description(*object, userdata->description), error);
-
- if (userdata->full_name)
- SET_OR_FAIL(gums_set_user_fullname(*object, userdata->full_name), error);
-
- if (userdata->home_dir)
- SET_OR_FAIL(gums_set_user_homedir(*object, userdata->home_dir), error);
-
- if (userdata->dir_drive)
- SET_OR_FAIL(gums_set_user_dir_drive(*object, userdata->dir_drive), error);
-
- if (userdata->logon_script)
- SET_OR_FAIL(gums_set_user_logon_script(*object, userdata->logon_script), error);
-
- if (userdata->profile_path)
- SET_OR_FAIL(gums_set_user_profile_path(*object, userdata->profile_path), error);
-
- if (userdata->workstations)
- SET_OR_FAIL(gums_set_user_workstations(*object, userdata->workstations), error);
-
- if (userdata->unknown_str)
- SET_OR_FAIL(gums_set_user_unknown_str(*object, userdata->unknown_str), error);
-
- if (userdata->munged_dial)
- SET_OR_FAIL(gums_set_user_munged_dial(*object, userdata->munged_dial), error);
-
- SET_OR_FAIL(gums_set_user_logon_divs(*object, userdata->logon_divs), error);
- SET_OR_FAIL(gums_set_user_hours_len(*object, userdata->hours_len), error);
-
- if (userdata->hours)
- SET_OR_FAIL(gums_set_user_hours(*object, userdata->hours), error);
-
- SET_OR_FAIL(gums_set_user_unknown_3(*object, userdata->unknown_3), error);
- SET_OR_FAIL(gums_set_user_unknown_5(*object, userdata->unknown_5), error);
- SET_OR_FAIL(gums_set_user_unknown_6(*object, userdata->unknown_6), error);
-
- SET_OR_FAIL(gums_set_user_logon_time(*object, userdata->logon_time), error);
- SET_OR_FAIL(gums_set_user_logoff_time(*object, userdata->logoff_time), error);
- SET_OR_FAIL(gums_set_user_kickoff_time(*object, userdata->kickoff_time), error);
- SET_OR_FAIL(gums_set_user_pass_last_set_time(*object, userdata->pass_last_set_time), error);
- SET_OR_FAIL(gums_set_user_pass_can_change_time(*object, userdata->pass_can_change_time), error);
- SET_OR_FAIL(gums_set_user_pass_must_change_time(*object, userdata->pass_must_change_time), error);
-
- ret = NT_STATUS_OK;
- return ret;
-
-error:
- talloc_destroy((*object)->mem_ctx);
- *object = NULL;
- return ret;
-}
-
-static NTSTATUS tdbsam2_group_data_to_gums_object(GUMS_OBJECT **object, struct tdbsam2_group_data *groupdata, uint32 type) {
-
- NTSTATUS ret;
-
- if (!object || !groupdata) {
- DEBUG(0, ("tdbsam2_group_data_to_gums_object: no NULL pointers are accepted here!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- /* groupdata->xcounter */
- /* groupdata->sec_desc */
-
- SET_OR_FAIL(gums_set_object_sid(*object, groupdata->group_sid), error);
- SET_OR_FAIL(gums_set_object_name(*object, groupdata->name), error);
-
- if (groupdata->description)
- SET_OR_FAIL(gums_set_object_description(*object, groupdata->description), error);
-
- if (groupdata->count)
- SET_OR_FAIL(gums_set_group_members(*object, groupdata->count, groupdata->members), error);
-
- ret = NT_STATUS_OK;
- return ret;
-
-error:
- talloc_destroy((*object)->mem_ctx);
- *object = NULL;
- return ret;
-}
-
-static NTSTATUS tdbsam2_domain_data_to_gums_object(GUMS_OBJECT **object, struct tdbsam2_domain_data *domdata, uint32 type) {
-
- NTSTATUS ret;
-
- if (!object || !domdata) {
- DEBUG(0, ("tdbsam2_domain_data_to_gums_object: no NULL pointers are accepted here!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- /* domdata->xcounter */
- /* domdata->sec_desc */
-
- SET_OR_FAIL(gums_set_object_sid(*object, domdata->dom_sid), error);
- SET_OR_FAIL(gums_set_object_name(*object, domdata->name), error);
-
- if (domdata->description)
- SET_OR_FAIL(gums_set_object_description(*object, domdata->description), error);
-
- ret = NT_STATUS_OK;
- return ret;
-
-error:
- talloc_destroy((*object)->mem_ctx);
- *object = NULL;
- return ret;
-}
-
-static NTSTATUS tdbsam2_data_to_gums_object(GUMS_OBJECT **object, struct tdbsam2_object *data) {
-
- NTSTATUS ret;
-
- if (!object || !data) {
- DEBUG(0, ("tdbsam2_user_data_to_gums_object: no NULL structure pointers are accepted here!\n"));
- ret = NT_STATUS_INVALID_PARAMETER;
- goto done;
- }
-
- ret = gums_create_object(object, data->type);
- if (NT_STATUS_IS_ERR(ret)) {
- DEBUG(5, ("tdbsam2_user_data_to_gums_object: error creating gums object!\n"));
- goto done;
- }
-
- switch (data->type) {
- case GUMS_OBJ_DOMAIN:
- ret = tdbsam2_domain_data_to_gums_object(object, data->data.domain, data->type);
- break;
-
- case GUMS_OBJ_NORMAL_USER:
- ret = tdbsam2_user_data_to_gums_object(object, data->data.user, data->type);
- break;
-
- case GUMS_OBJ_GROUP:
- case GUMS_OBJ_ALIAS:
- ret = tdbsam2_group_data_to_gums_object(object, data->data.group, data->type);
- break;
-
- default:
- ret = NT_STATUS_UNSUCCESSFUL;
- }
-
-done:
- return ret;
-}
-
-
-
-
-
-/* GUMM object functions */
-
-static NTSTATUS get_domain_sid(DOM_SID *sid, const char* name) {
-
- NTSTATUS ret;
- struct tdbsam2_object obj;
- TALLOC_CTX *mem_ctx;
- TDB_DATA data, key;
- fstring keystr;
- fstring domname;
-
- if (!sid || !name)
- return NT_STATUS_INVALID_PARAMETER;
-
- mem_ctx = talloc_init("get_domain_sid");
- if (!mem_ctx) {
- DEBUG(0, ("tdbsam2_new_object: Out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (tdbsam2_db == NULL) {
- if (NT_STATUS_IS_ERR(ret = tdbsam2_opentdb())) {
- goto done;
- }
- }
-
- unix_strlower(name, -1, domname, sizeof(domname));
-
- slprintf(keystr, sizeof(keystr)-1, "%s%s", DOMAINPREFIX, domname);
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- data = tdb_fetch(tdbsam2_db, key);
- if (!data.dptr) {
- DEBUG(5, ("get_domain_sid: Error fetching database, domain entry not found!\n"));
- DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(5, (" Key: %s\n", keystr));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- if (NT_STATUS_IS_ERR(init_tdbsam2_object_from_buffer(&obj, mem_ctx, data.dptr, data.dsize))) {
- SAFE_FREE(data.dptr);
- DEBUG(0, ("get_domain_sid: Error fetching database, malformed entry!\n"));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
- SAFE_FREE(data.dptr);
-
- if (obj.type != GUMS_OBJ_DOMAIN) {
- DEBUG(5, ("get_domain_sid: Requested object is not a domain!\n"));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- sid_copy(sid, obj.data.domain->dom_sid);
-
- ret = NT_STATUS_OK;
-
-done:
- if (mem_ctx) talloc_destroy(mem_ctx);
- return ret;
-}
-
- NTSTATUS (*set_domain_sid) (const DOM_SID *sid, const char *name);
-
- NTSTATUS (*get_sequence_number) (void);
-
-
-static NTSTATUS tdbsam2_new_object(DOM_SID **sid, const char *name, const int obj_type) {
-
- NTSTATUS ret;
- struct tdbsam2_object obj;
- TALLOC_CTX *mem_ctx;
-
- if (!sid || !name) {
- DEBUG(0, ("tdbsam2_new_object: no NULL pointers are accepted here!\n"));
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- mem_ctx = talloc_init("tdbsam2_new_object");
- if (!mem_ctx) {
- DEBUG(0, ("tdbsam2_new_object: Out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- switch (obj_type) {
- case GUMS_OBJ_NORMAL_USER:
- obj.data.user = (struct tdbsam2_user_data *)talloc_zero(mem_ctx, sizeof(struct tdbsam2_user_data));
- TALLOC_CHECK(obj.data.user, ret, done);
-
- /*obj.data.user->sec_desc*/
-
- tdbsam2_get_next_sid(mem_ctx, obj.data.user->user_sid);
- TALLOC_CHECK(obj.data.user->user_sid, ret, done);
-
- obj.data.user->name = talloc_strdup(mem_ctx, name);
- TALLOC_CHECK(obj.data.user, ret, done);
-
- break;
-
- case GUMS_OBJ_GROUP:
- case GUMS_OBJ_ALIAS:
- obj.data.group = (struct tdbsam2_group_data *)talloc_zero(mem_ctx, sizeof(struct tdbsam2_group_data));
- TALLOC_CHECK(obj.data.group, ret, done);
-
- /*obj.data.user->sec_desc*/
-
- tdbsam2_get_next_sid(mem_ctx, obj.data.group->group_sid);
- TALLOC_CHECK(obj.data.group->group_sid, ret, done);
-
- obj.data.group->name = talloc_strdup(mem_ctx, name);
- TALLOC_CHECK(obj.data.group, ret, done);
-
- break;
-
- case GUMS_OBJ_DOMAIN:
- /* TODO: SHOULD WE ALLOW TO CREATE NEW DOMAINS ? */
-
- default:
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- ret = tdbsam2_store(&obj);
-
-done:
- talloc_destroy(mem_ctx);
- return ret;
-}
-
-static NTSTATUS tdbsam2_delete_object(const DOM_SID *sid) {
-
- NTSTATUS ret;
- struct tdbsam2_object obj;
- TALLOC_CTX *mem_ctx;
- TDB_DATA data, key;
- fstring keystr;
- fstring sidstr;
- char *obj_name = NULL;
- int obj_type, obj_version, len;
-
- if (!sid) {
- DEBUG(0, ("tdbsam2_new_object: no NULL pointers are accepted here!\n"));
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- mem_ctx = talloc_init("tdbsam2_delete_object");
- if (!mem_ctx) {
- DEBUG(0, ("tdbsam2_new_object: Out of memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (tdbsam2_db == NULL) {
- if (NT_STATUS_IS_ERR(ret = tdbsam2_opentdb())) {
- goto done;
- }
- }
-
- sid_to_string(sidstr, sid);
-
- slprintf(keystr, sizeof(keystr)-1, "%s%s", SIDPREFIX, sidstr);
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- data = tdb_fetch(tdbsam2_db, key);
- if (!data.dptr) {
- DEBUG(5, ("get_domain_sid: Error fetching database, SID entry not found!\n"));
- DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(5, (" Key: %s\n", keystr));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- len = tdb_unpack(data.dptr, data.dsize, TDB_FORMAT_STRING,
- &obj_version,
- &obj_type,
- &obj_name);
-
- if (len == -1) {
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- if (tdb_delete(tdbsam2_db, key) != TDB_SUCCESS) {
- DEBUG(5, ("tdbsam2_object_delete: Error deleting object!\n"));
- DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(5, (" Key: %s\n", keystr));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
- switch (obj_type) {
- case GUMS_OBJ_NORMAL_USER:
- case GUMS_OBJ_GROUP:
- case GUMS_OBJ_ALIAS:
-
- slprintf(keystr, sizeof(keystr)-1, "%s%s", OBJECTPREFIX, obj_name);
- key.dptr = keystr;
- key.dsize = strlen(keystr) + 1;
-
- if (tdb_delete(tdbsam2_db, key) != TDB_SUCCESS) {
- DEBUG(5, ("tdbsam2_object_delete: Error deleting object!\n"));
- DEBUGADD(5, (" Error: %s\n", tdb_errorstr(tdbsam2_db)));
- DEBUGADD(5, (" Key: %s\n", keystr));
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
- break;
-
- case GUMS_OBJ_DOMAIN:
- /* TODO: SHOULD WE ALLOW TO DELETE DOMAINS ? */
-
- default:
- ret = NT_STATUS_UNSUCCESSFUL;
- goto done;
- }
-
-done:
- SAFE_FREE(obj_name);
- talloc_destroy(mem_ctx);
- return ret;
-}
-
- NTSTATUS (*get_object_from_sid) (GUMS_OBJECT **object, const DOM_SID *sid, const int obj_type);
- NTSTATUS (*get_sid_from_name) (GUMS_OBJECT **object, const char *name);
- /* This function is used to get the list of all objects changed since b_time, it is
- used to support PDC<->BDC synchronization */
- NTSTATUS (*get_updated_objects) (GUMS_OBJECT **objects, const NTTIME base_time);
-
- NTSTATUS (*enumerate_objects_start) (void *handle, const DOM_SID *sid, const int obj_type);
- NTSTATUS (*enumerate_objects_get_next) (GUMS_OBJECT **object, void *handle);
- NTSTATUS (*enumerate_objects_stop) (void *handle);
-
- /* This function MUST be used ONLY by PDC<->BDC replication code or recovery tools.
- Never use this function to update an object in the database, use set_object_values() */
- NTSTATUS (*set_object) (const GUMS_OBJECT *object);
-
- /* set object values function */
- NTSTATUS (*set_object_values) (DOM_SID *sid, uint32 count, GUMS_DATA_SET *data_set);
-
- /* Group related functions */
- NTSTATUS (*add_memberss_to_group) (const DOM_SID *group, const DOM_SID **members);
- NTSTATUS (*delete_members_from_group) (const DOM_SID *group, const DOM_SID **members);
- NTSTATUS (*enumerate_group_members) (DOM_SID **members, const DOM_SID *sid, const int type);
-
- NTSTATUS (*get_sid_groups) (DOM_SID **groups, const DOM_SID *sid);
-
- NTSTATUS (*lock_sid) (const DOM_SID *sid);
- NTSTATUS (*unlock_sid) (const DOM_SID *sid);
-
- /* privileges related functions */
-
- NTSTATUS (*add_members_to_privilege) (const LUID_ATTR *priv, const DOM_SID **members);
- NTSTATUS (*delete_members_from_privilege) (const LUID_ATTR *priv, const DOM_SID **members);
- NTSTATUS (*enumerate_privilege_members) (DOM_SID **members, const LUID_ATTR *priv);
- NTSTATUS (*get_sid_privileges) (DOM_SID **privs, const DOM_SID *sid);
- /* warning!: set_privilege will overwrite a prior existing privilege if such exist */
- NTSTATUS (*set_privilege) (GUMS_PRIVILEGE *priv);
-
-
-int gumm_init(GUMS_FUNCTIONS **storage) {
-
- return 0;
-}
diff --git a/source3/sam/gums.c b/source3/sam/gums.c
deleted file mode 100644
index 3a20ef6fc9..0000000000
--- a/source3/sam/gums.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Grops and Users Management System initializations.
- Copyright (C) Simo Sorce 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-/*#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_GUMS*/
-
-#define GMV_MAJOR 0
-#define GMV_MINOR 1
-
-GUMS_FUNCTIONS *gums_storage;
-static void *dl_handle;
-
-PRIVS privs[] = {
- {PRIV_NONE, "no_privs", "No privilege"}, /* this one MUST be first */
- {PRIV_CREATE_TOKEN, "SeCreateToken", "Create Token"},
- {PRIV_ASSIGNPRIMARYTOKEN, "SeAssignPrimaryToken", "Assign Primary Token"},
- {PRIV_LOCK_MEMORY, "SeLockMemory", "Lock Memory"},
- {PRIV_INCREASE_QUOTA, "SeIncreaseQuotaPrivilege", "Increase Quota Privilege"},
- {PRIV_MACHINE_ACCOUNT, "SeMachineAccount", "Machine Account"},
- {PRIV_TCB, "SeTCB", "TCB"},
- {PRIV_SECURITY, "SeSecurityPrivilege", "Security Privilege"},
- {PRIV_TAKE_OWNERSHIP, "SeTakeOwnershipPrivilege", "Take Ownership Privilege"},
- {PRIV_LOAD_DRIVER, "SeLocalDriverPrivilege", "Local Driver Privilege"},
- {PRIV_SYSTEM_PROFILE, "SeSystemProfilePrivilege", "System Profile Privilege"},
- {PRIV_SYSTEMTIME, "SeSystemtimePrivilege", "System Time"},
- {PRIV_PROF_SINGLE_PROCESS, "SeProfileSingleProcessPrivilege", "Profile Single Process Privilege"},
- {PRIV_INC_BASE_PRIORITY, "SeIncreaseBasePriorityPrivilege", "Increase Base Priority Privilege"},
- {PRIV_CREATE_PAGEFILE, "SeCreatePagefilePrivilege", "Create Pagefile Privilege"},
- {PRIV_CREATE_PERMANENT, "SeCreatePermanent", "Create Permanent"},
- {PRIV_BACKUP, "SeBackupPrivilege", "Backup Privilege"},
- {PRIV_RESTORE, "SeRestorePrivilege", "Restore Privilege"},
- {PRIV_SHUTDOWN, "SeShutdownPrivilege", "Shutdown Privilege"},
- {PRIV_DEBUG, "SeDebugPrivilege", "Debug Privilege"},
- {PRIV_AUDIT, "SeAudit", "Audit"},
- {PRIV_SYSTEM_ENVIRONMENT, "SeSystemEnvironmentPrivilege", "System Environment Privilege"},
- {PRIV_CHANGE_NOTIFY, "SeChangeNotify", "Change Notify"},
- {PRIV_REMOTE_SHUTDOWN, "SeRemoteShutdownPrivilege", "Remote Shutdown Privilege"},
- {PRIV_UNDOCK, "SeUndock", "Undock"},
- {PRIV_SYNC_AGENT, "SeSynchronizationAgent", "Synchronization Agent"},
- {PRIV_ENABLE_DELEGATION, "SeEnableDelegation", "Enable Delegation"},
- {PRIV_ALL, "SaAllPrivs", "All Privileges"}
-};
-
-NTSTATUS gums_init(const char *module_name)
-{
- int (*module_version)(int);
- NTSTATUS (*module_init)();
-/* gums_module_init module_init;*/
- NTSTATUS ret = NT_STATUS_UNSUCCESSFUL;
-
- DEBUG(5, ("Opening gums module %s\n", module_name));
- dl_handle = sys_dlopen(module_name, RTLD_NOW);
- if (!dl_handle) {
- DEBUG(0, ("ERROR: Failed to load gums module %s, error: %s\n", module_name, sys_dlerror()));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- module_version = sys_dlsym(dl_handle, "gumm_version");
- if (!module_version) {
- DEBUG(0, ("ERROR: Failed to find gums module version!\n"));
- goto error;
- }
-
- if (module_version(GMV_MAJOR) != GUMS_VERSION_MAJOR) {
- DEBUG(0, ("ERROR: Module's major version does not match gums version!\n"));
- goto error;
- }
-
- if (module_version(GMV_MINOR) != GUMS_VERSION_MINOR) {
- DEBUG(1, ("WARNING: Module's minor version does not match gums version!\n"));
- }
-
- module_init = sys_dlsym(dl_handle, "gumm_init");
- if (!module_init) {
- DEBUG(0, ("ERROR: Failed to find gums module's init function!\n"));
- goto error;
- }
-
- DEBUG(5, ("Initializing module %s\n", module_name));
-
- ret = module_init(&gums_storage);
- goto done;
-
-error:
- ret = NT_STATUS_UNSUCCESSFUL;
- sys_dlclose(dl_handle);
-
-done:
- return ret;
-}
-
-NTSTATUS gums_unload(void)
-{
- NSTATUS ret;
- NTSTATUS (*module_finalize)();
-
- if (!dl_handle)
- return NT_STATUS_UNSUCCESSFUL;
-
- module_close = sys_dlsym(dl_handle, "gumm_finalize");
- if (!module_finalize) {
- DEBUG(0, ("ERROR: Failed to find gums module's init function!\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- DEBUG(5, ("Finalizing module %s\n", module_name));
-
- ret = module_finalize();
- sys_dlclose(dl_handle);
-
- return ret;
-}
diff --git a/source3/sam/gums_api.c b/source3/sam/gums_api.c
deleted file mode 100644
index 75e32fa861..0000000000
--- a/source3/sam/gums_api.c
+++ /dev/null
@@ -1,1268 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- GUMS structures
- Copyright (C) Simo Sorce 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-extern GUMS_FUNCTIONS *gums_storage;
-
-/* Functions to get/set info from a GUMS object */
-
-NTSTATUS gums_get_object_type(uint32 *type, const GUMS_OBJECT *obj)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *type = obj->type;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_create_object(GUMS_OBJECT **obj, uint32 type)
-{
- TALLOC_CTX *mem_ctx = talloc_init("gums_create_object");
- GUMS_OBJECT *go;
- NT_STATUS ret;
-
- go = talloc_zero(mem_ctx, sizeof(GUMS_OBJECT));
- go->mem_ctx = mem_ctx;
- go->type = type;
- go->version = GUMS_OBJECT_VERSION;
-
- switch(type) {
- case GUMS_OBJ_DOMAIN:
- break;
-
-/*
- case GUMS_OBJ_WORKSTATION_TRUST:
- case GUMS_OBJ_SERVER_TRUST:
- case GUMS_OBJ_DOMAIN_TRUST:
-*/
- case GUMS_OBJ_NORMAL_USER:
- go->data = (GUMS_USER *)talloc_zero(mem_ctx, sizeof(GUMS_USER));
- break;
-
- case GUMS_OBJ_GROUP:
- case GUMS_OBJ_ALIAS:
- go->data = (GUMS_GROUP *)talloc_zero(mem_ctx, sizeof(GUMS_GROUP));
- break;
-
- default:
- /* TODO: throw error */
- ret = NT_STATUS_OBJECT_TYPE_MISMATCH;
- goto error;
- }
-
- if (!(go->data)) {
- ret = NT_STATUS_NO_MEMORY;
- DEBUG(0, ("gums_create_object: Out of memory!\n"));
- goto error;
- }
-
- *obj = go;
- return NT_STATUS_OK;
-
-error:
- talloc_destroy(go->mem_ctx);
- *obj = NULL;
- return ret;
-}
-
-NTSTATUS gums_get_object_seq_num(uint32 *version, const GUMS_OBJECT *obj)
-{
- if (!version || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *version = obj->version;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_object_seq_num(GUMS_OBJECT *obj, uint32 version)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- obj->version = version;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_sec_desc(SEC_DESC **sec_desc, const GUMS_OBJECT *obj)
-{
- if (!sec_desc || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *sec_desc = obj->sec_desc;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_sec_desc(GUMS_OBJECT *obj, const SEC_DESC *sec_desc)
-{
- if (!obj || !sec_desc)
- return NT_STATUS_INVALID_PARAMETER;
-
- obj->sec_desc = dup_sec_desc(obj->mem_ctx, sec_desc);
- if (!(obj->sec_desc)) return NT_STATUS_UNSUCCESSFUL;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_object_sid(DOM_SID **sid, const GUMS_OBJECT *obj)
-{
- if (!sid || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *sid = obj->sid;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_object_sid(GUMS_OBJECT *obj, const DOM_SID *sid)
-{
- if (!obj || !sid)
- return NT_STATUS_INVALID_PARAMETER;
-
- obj->sid = sid_dup_talloc(obj->mem_ctx, sid);
- if (!(obj->sid)) return NT_STATUS_UNSUCCESSFUL;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_object_name(char **name, const GUMS_OBJECT *obj)
-{
- if (!name || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *name = obj->name;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_object_name(GUMS_OBJECT *obj, const char *name)
-{
- if (!obj || !name)
- return NT_STATUS_INVALID_PARAMETER;
-
- obj->name = (char *)talloc_strdup(obj->mem_ctx, name);
- if (!(obj->name)) return NT_STATUS_UNSUCCESSFUL;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_object_description(char **description, const GUMS_OBJECT *obj)
-{
- if (!description || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- *description = obj->description;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_object_description(GUMS_OBJECT *obj, const char *description)
-{
- if (!obj || !description)
- return NT_STATUS_INVALID_PARAMETER;
-
- obj->description = (char *)talloc_strdup(obj->mem_ctx, description);
- if (!(obj->description)) return NT_STATUS_UNSUCCESSFUL;
- return NT_STATUS_OK;
-}
-
-/* User specific functions */
-
-/*
-NTSTATUS gums_get_object_privileges(PRIVILEGE_SET **priv_set, const GUMS_OBJECT *obj)
-{
- if (!priv_set)
- return NT_STATUS_INVALID_PARAMETER;
-
- *priv_set = obj->priv_set;
- return NT_STATUS_OK;
-}
-*/
-
-NTSTATUS gums_get_user_pri_group(DOM_SID **sid, const GUMS_OBJECT *obj)
-{
- if (!sid || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *sid = obj->data.user->group_sid;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_pri_group(GUMS_OBJECT *obj, const DOM_SID *sid)
-{
- if (!obj || !sid)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->group_sid = sid_dup_talloc(obj->mem_ctx, sid);
- if (!(obj->data.user->group_sid)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_nt_pwd(DATA_BLOB **nt_pwd, const GUMS_OBJECT *obj)
-{
- if (!nt_pwd || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *nt_pwd = obj->data.user->nt_pw;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_nt_pwd(GUMS_OBJECT *obj, const DATA_BLOB nt_pwd)
-{
- if (!obj || !nt_pwd || nt_pwd != NT_HASH_LEN)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->nt_pwd = data_blob_talloc(obj->mem_ctx, nt_pwd.data, nt_pwd.lenght);
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_lm_pwd(DATA_BLOB **lm_pwd, const GUMS_OBJECT *obj)
-{
- if (!lm_pwd || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *lm_pwd = obj->data.user->lm_pw;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_lm_pwd(GUMS_OBJECT *obj, const DATA_BLOB lm_pwd)
-{
- if (!obj || !lm_pwd || lm_pwd != LM_HASH_LEN)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->lm_pwd = data_blob_talloc(obj->mem_ctx, lm_pwd.data, lm_pwd.lenght);
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_fullname(char **fullname, const GUMS_OBJECT *obj)
-{
- if (!fullname || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *fullname = obj->data.user->full_name;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_fullname(GUMS_OBJECT *obj, const char *fullname)
-{
- if (!obj || !fullname)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->full_name = (char *)talloc_strdup(obj->mem_ctx, fullname);
- if (!(obj->data.user->full_name)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_homedir(char **homedir, const GUMS_OBJECT *obj)
-{
- if (!homedir || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *homedir = obj->data.user->home_dir;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_homedir(GUMS_OBJECT *obj, const char *homedir)
-{
- if (!obj || !homedir)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->home_dir = (char *)talloc_strdup(obj->mem_ctx, homedir);
- if (!(obj->data.user->home_dir)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_dir_drive(char **dirdrive, const GUMS_OBJECT *obj)
-{
- if (!dirdrive || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *dirdrive = obj->data.user->dir_drive;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_dir_drive(GUMS_OBJECT *obj, const char *dir_drive)
-{
- if (!obj || !dir_drive)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->dir_drive = (char *)talloc_strdup(obj->mem_ctx, dir_drive);
- if (!(obj->data.user->dir_drive)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_logon_script(char **logon_script, const GUMS_OBJECT *obj)
-{
- if (!logon_script || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *logon_script = obj->data.user->logon_script;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_logon_script(GUMS_OBJECT *obj, const char *logon_script)
-{
- if (!obj || !logon_script)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->logon_script = (char *)talloc_strdup(obj->mem_ctx, logon_script);
- if (!(obj->data.user->logon_script)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_profile_path(char **profile_path, const GUMS_OBJECT *obj)
-{
- if (!profile_path || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *profile_path = obj->data.user->profile_path;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_profile_path(GUMS_OBJECT *obj, const char *profile_path)
-{
- if (!obj || !profile_path)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->profile_path = (char *)talloc_strdup(obj->mem_ctx, profile_path);
- if (!(obj->data.user->profile_path)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_workstations(char **workstations, const GUMS_OBJECT *obj)
-{
- if (!workstations || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *workstations = obj->data.user->workstations;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_workstations(GUMS_OBJECT *obj, const char *workstations)
-{
- if (!obj || !workstations)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->workstations = (char *)talloc_strdup(obj->mem_ctx, workstations);
- if (!(obj->data.user->workstations)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_unknown_str(char **unknown_str, const GUMS_OBJECT *obj)
-{
- if (!unknown_str || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *unknown_str = obj->data.user->unknown_str;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_unknown_str(GUMS_OBJECT *obj, const char *unknown_str)
-{
- if (!obj || !unknown_str)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->unknown_str = (char *)talloc_strdup(obj->mem_ctx, unknown_str);
- if (!(obj->data.user->unknown_str)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_munged_dial(char **munged_dial, const GUMS_OBJECT *obj)
-{
- if (!munged_dial || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *munged_dial = obj->data.user->munged_dial;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_munged_dial(GUMS_OBJECT *obj, const char *munged_dial)
-{
- if (!obj || !munged_dial)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->munged_dial = (char *)talloc_strdup(obj->mem_ctx, munged_dial);
- if (!(obj->data.user->munged_dial)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_logon_time(NTTIME *logon_time, const GUMS_OBJECT *obj)
-{
- if (!logon_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *logon_time = obj->data.user->logon_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_logon_time(GUMS_OBJECT *obj, NTTIME logon_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->logon_time = logon_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_logoff_time(NTTIME *logoff_time, const GUMS_OBJECT *obj)
-{
- if (!logoff_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *logoff_time = obj->data.user->logoff_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_logoff_time(GUMS_OBJECT *obj, NTTIME logoff_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->logoff_time = logoff_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_kickoff_time(NTTIME *kickoff_time, const GUMS_OBJECT *obj)
-{
- if (!kickoff_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *kickoff_time = obj->data.user->kickoff_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_kickoff_time(GUMS_OBJECT *obj, NTTIME kickoff_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->kickoff_time = kickoff_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_pass_last_set_time(NTTIME *pass_last_set_time, const GUMS_OBJECT *obj)
-{
- if (!pass_last_set_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *pass_last_set_time = obj->data.user->pass_last_set_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_pass_last_set_time(GUMS_OBJECT *obj, NTTIME pass_last_set_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->pass_last_set_time = pass_last_set_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_pass_can_change_time(NTTIME *pass_can_change_time, const GUMS_OBJECT *obj)
-{
- if (!pass_can_change_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *pass_can_change_time = obj->data.user->pass_can_change_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_pass_can_change_time(GUMS_OBJECT *obj, NTTIME pass_can_change_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->pass_can_change_time = pass_can_change_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_pass_must_change_time(NTTIME *pass_must_change_time, const GUMS_OBJECT *obj)
-{
- if (!pass_must_change_time || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *pass_must_change_time = obj->data-user->pass_must_change_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_pass_must_change_time(GUMS_OBJECT *obj, NTTIME pass_must_change_time)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->pass_must_change_time = pass_must_change_time;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_logon_divs(uint16 *logon_divs, const GUMS_OBJECT *obj)
-{
- if (!logon_divs || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *logon_divs = obj->data.user->logon_divs;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_logon_divs(GUMS_OBJECT *obj, uint16 logon_divs)
-{
- if (!obj || !logon_divs)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->logon_divs = logon_divs;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_hours_len(uint32 *hours_len, const GUMS_OBJECT *obj)
-{
- if (!hours_len || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *hours_len = obj->data.user->hours_len;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_hours_len(GUMS_OBJECT *obj, uint32 hours_len)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->hours_len = hours_len;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_hours(uint8 **hours, const GUMS_OBJECT *obj)
-{
- if (!hours || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *hours = obj->data.user->hours;
- return NT_STATUS_OK;
-}
-
-/* WARNING: always set hours_len before hours */
-NTSTATUS gums_set_user_hours(GUMS_OBJECT *obj, const uint8 *hours)
-{
- if (!obj || !hours)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- if (obj->data.user->hours_len == 0)
- DEBUG(10, ("gums_set_user_hours: Warning, hours_len is zero!\n"));
-
- obj->data.user->hours = (uint8 *)talloc_memdup(obj->mem_ctx, hours, obj->data.user->hours_len);
- if (!(obj->data.user->hours) & (obj->data.user->hours_len != 0)) return NT_STATUS_NO_MEMORY;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_unknown_3(uint32 *unknown_3, const GUMS_OBJECT *obj)
-{
- if (!unknown_3 || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *unknown_3 = obj->data.user->unknown_3;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_unknown_3(GUMS_OBJECT *obj, uint32 unknown_3)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->unknown_3 = unknown_3;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_unknown_5(uint32 *unknown_5, const GUMS_OBJECT *obj)
-{
- if (!unknown_5 || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *unknown_5 = obj->data.user->unknown_5;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_unknown_5(GUMS_OBJECT *obj, uint32 unknown_5)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->unknown_5 = unknown_5;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_get_user_unknown_6(uint32 *unknown_6, const GUMS_OBJECT *obj)
-{
- if (!unknown_6 || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *unknown_6 = obj->data.user->unknown_6;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_user_unknown_6(GUMS_OBJECT *obj, uint32 unknown_6)
-{
- if (!obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.user->unknown_6 = unknown_6;
- return NT_STATUS_OK;
-}
-
-/* Group specific functions */
-
-NTSTATUS gums_get_group_members(uint32 *count, DOM_SID **members, const GUMS_OBJECT *obj)
-{
- if (!count || !members || !obj)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_GROUP &&
- obj->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- *count = obj->data.group->count;
- *members = obj->data.group->members;
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_set_group_members(GUMS_OBJECT *obj, uint32 count, DOM_SID **members)
-{
- uint32 n;
-
- if (!obj || !members || !members)
- return NT_STATUS_INVALID_PARAMETER;
-
- if (obj->type != GUMS_OBJ_GROUP &&
- obj->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_OBJECT_TYPE_MISMATCH;
-
- obj->data.group->count = count;
- n = 0;
- do {
- obj->data.group->members[n] = dup_sec_desc(obj->mem_ctx, members[n]);
- if (!(obj->data.group->members[n])) return NT_STATUS_NO_MEMORY;
- n++;
- } while (n < count);
- return NT_STATUS_OK;
-}
-
-/* data_store set functions */
-
-NTSTATUS gums_create_commit_set(GUMS_COMMIT_SET **com_set, TALLOC_CTX *ctx, DOM_SID *sid, uint32 type)
-{
- TALLOC_CTX *mem_ctx;
- GUMS_COMMIT_SET *set;
-
- mem_ctx = talloc_init("commit_set");
- if (mem_ctx == NULL)
- return NT_STATUS_NO_MEMORY;
- set = (GUMS_COMMIT_SET *)talloc(mem_ctx, sizeof(GUMS_COMMIT_SET));
- if (set == NULL) {
- talloc_destroy(mem_ctx);
- return NT_STATUS_NO_MEMORY;
- }
-
- set->mem_ctx = mem_ctx;
- set->type = type;
- sid_copy(&(set->sid), sid);
- set->count = 0;
- set->data = NULL;
- *com_set = set;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_set_sec_desc(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, SEC_DESC *sec_desc)
-{
- GUMS_DATA_SET *data_set;
- SEC_DESC *new_sec_desc;
-
- if (!mem_ctx || !com_set || !sec_desc)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data = data_set;
- data_set = &((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_SET_SEC_DESC;
- new_sec_desc = dup_sec_desc(mem_ctx, sec_desc);
- if (new_sec_desc == NULL)
- return NT_STATUS_NO_MEMORY;
-
- (SEC_DESC *)(data_set->data) = new_sec_desc;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_add_privilege(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, LUID_ATTR priv)
-{
- GUMS_DATA_SET *data_set;
- LUID_ATTR *new_priv;
-
- if (!mem_ctx || !com_set)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data = data_set;
- data_set = &((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_ADD_PRIVILEGE;
- if (NT_STATUS_IS_ERR(dupalloc_luid_attr(mem_ctx, &new_priv, priv)))
- return NT_STATUS_NO_MEMORY;
-
- (SEC_DESC *)(data_set->data) = new_priv;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_del_privilege(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, LUID_ATTR priv)
-{
- GUMS_DATA_SET *data_set;
- LUID_ATTR *new_priv;
-
- if (!mem_ctx || !com_set)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data = data_set;
- data_set = &((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_DEL_PRIVILEGE;
- if (NT_STATUS_IS_ERR(dupalloc_luid_attr(mem_ctx, &new_priv, priv)))
- return NT_STATUS_NO_MEMORY;
-
- (SEC_DESC *)(data_set->data) = new_priv;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_set_privilege_set(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, PRIVILEGE_SET *priv_set)
-{
- GUMS_DATA_SET *data_set;
- PRIVILEGE_SET *new_priv_set;
-
- if (!mem_ctx || !com_set || !priv_set)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data = data_set;
- data_set = &((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_SET_SEC_DESC;
- if (NT_STATUS_IS_ERR(dup_priv_set(&new_priv_set, mem_ctx, priv_set)))
- return NT_STATUS_NO_MEMORY;
-
- (SEC_DESC *)(data_set->data) = new_priv_set;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_set_string(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, uint32 type, char *str)
-{
- GUMS_DATA_SET *data_set;
- char *new_str;
-
- if (!mem_ctx || !com_set || !str || type < GUMS_SET_NAME || type > GUMS_SET_MUNGED_DIAL)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data = data_set;
- data_set = &((com_set->data)[com_set->count - 1]);
-
- data_set->type = type;
- new_str = talloc_strdup(mem_ctx, str);
- if (new_str == NULL)
- return NT_STATUS_NO_MEMORY;
-
- (char *)(data_set->data) = new_str;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_set_name(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *name)
-{
- return gums_set_string(mem_ctx, com_set, GUMS_SET_NAME, name);
-}
-
-NTSTATUS gums_cs_set_description(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *desc)
-{
- return gums_set_string(mem_ctx, com_set, GUMS_SET_DESCRIPTION, desc);
-}
-
-NTSTATUS gums_cs_set_full_name(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *full_name)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_string(mem_ctx, com_set, GUMS_SET_NAME, full_name);
-}
-
-NTSTATUS gums_cs_set_home_directory(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *home_dir)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_string(mem_ctx, com_set, GUMS_SET_NAME, home_dir);
-}
-
-NTSTATUS gums_cs_set_drive(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *drive)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_string(mem_ctx, com_set, GUMS_SET_NAME, drive);
-}
-
-NTSTATUS gums_cs_set_logon_script(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *logon_script)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_string(mem_ctx, com_set, GUMS_SET_NAME, logon_script);
-}
-
-NTSTATUS gums_cs_set_profile_path(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *prof_path)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_string(mem_ctx, com_set, GUMS_SET_NAME, prof_path);
-}
-
-NTSTATUS gums_cs_set_workstations(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *wks)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_string(mem_ctx, com_set, GUMS_SET_NAME, wks);
-}
-
-NTSTATUS gums_cs_set_unknown_string(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *unkn_str)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_string(mem_ctx, com_set, GUMS_SET_NAME, unkn_str);
-}
-
-NTSTATUS gums_cs_set_munged_dial(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, char *munged_dial)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_string(mem_ctx, com_set, GUMS_SET_NAME, munged_dial);
-}
-
-NTSTATUS gums_cs_set_nttime(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, uint32 type, NTTIME *nttime)
-{
- GUMS_DATA_SET *data_set;
- NTTIME *new_time;
-
- if (!mem_ctx || !com_set || !nttime || type < GUMS_SET_LOGON_TIME || type > GUMS_SET_PASS_MUST_CHANGE_TIME)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data = data_set;
- data_set = &((com_set->data)[com_set->count - 1]);
-
- data_set->type = type;
- new_time = talloc(mem_ctx, sizeof(NTTIME));
- if (new_time == NULL)
- return NT_STATUS_NO_MEMORY;
-
- new_time->low = nttime->low;
- new_time->high = nttime->high;
- (char *)(data_set->data) = new_time;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_set_logon_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *logon_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_nttime(mem_ctx, com_set, GUMS_SET_LOGON_TIME, logon_time);
-}
-
-NTSTATUS gums_cs_set_logoff_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *logoff_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_nttime(mem_ctx, com_set, GUMS_SET_LOGOFF_TIME, logoff_time);
-}
-
-NTSTATUS gums_cs_set_kickoff_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *kickoff_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_nttime(mem_ctx, com_set, GUMS_SET_KICKOFF_TIME, kickoff_time);
-}
-
-NTSTATUS gums_cs_set_pass_last_set_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *pls_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_nttime(mem_ctx, com_set, GUMS_SET_LOGON_TIME, pls_time);
-}
-
-NTSTATUS gums_cs_set_pass_can_change_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *pcc_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_nttime(mem_ctx, com_set, GUMS_SET_LOGON_TIME, pcc_time);
-}
-
-NTSTATUS gums_cs_set_pass_must_change_time(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, NTTIME *pmc_time)
-{
- if (com_set->type != GUMS_OBJ_NORMAL_USER)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_set_nttime(mem_ctx, com_set, GUMS_SET_LOGON_TIME, pmc_time);
-}
-
-NTSTATUS gums_cs_add_sids_to_group(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, const DOM_SID **sids, const uint32 count)
-{
- GUMS_DATA_SET *data_set;
- DOM_SID **new_sids;
- int i;
-
- if (!mem_ctx || !com_set || !sids)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data = data_set;
- data_set = &((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_ADD_SID_LIST;
- new_sids = (DOM_SID **)talloc(mem_ctx, (sizeof(void *) * count));
- if (new_sids == NULL)
- return NT_STATUS_NO_MEMORY;
- for (i = 0; i < count; i++) {
- new_sids[i] = sid_dup_talloc(mem_ctx, sids[i]);
- if (new_sids[i] == NULL)
- return NT_STATUS_NO_MEMORY;
- }
-
- (SEC_DESC *)(data_set->data) = new_sids;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_cs_add_users_to_group(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, const DOM_SID **sids, const uint32 count)
-{
- if (!mem_ctx || !com_set || !sids)
- return NT_STATUS_INVALID_PARAMETER;
- if (com_set->type != GUMS_OBJ_GROUP || com_set->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_add_sids_to_group(mem_ctx, com_set, sids, count);
-}
-
-NTSTATUS gums_cs_add_groups_to_group(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, const DOM_SID **sids, const uint32 count)
-{
- if (!mem_ctx || !com_set || !sids)
- return NT_STATUS_INVALID_PARAMETER;
- if (com_set->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_INVALID_PARAMETER;
-
- return gums_add_sids_to_group(mem_ctx, com_set, sids, count);
-}
-
-NTSTATUS gums_cs_del_sids_from_group(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, const DOM_SID **sids, const uint32 count)
-{
- GUMS_DATA_SET *data_set;
- DOM_SID **new_sids;
- int i;
-
- if (!mem_ctx || !com_set || !sids)
- return NT_STATUS_INVALID_PARAMETER;
- if (com_set->type != GUMS_OBJ_GROUP || com_set->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data = data_set;
- data_set = &((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_DEL_SID_LIST;
- new_sids = (DOM_SID **)talloc(mem_ctx, (sizeof(void *) * count));
- if (new_sids == NULL)
- return NT_STATUS_NO_MEMORY;
- for (i = 0; i < count; i++) {
- new_sids[i] = sid_dup_talloc(mem_ctx, sids[i]);
- if (new_sids[i] == NULL)
- return NT_STATUS_NO_MEMORY;
- }
-
- (SEC_DESC *)(data_set->data) = new_sids;
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS gums_ds_set_sids_in_group(TALLOC_CTX *mem_ctx, GUMS_COMMIT_SET *com_set, const DOM_SID **sids, const uint32 count)
-{
- GUMS_DATA_SET *data_set;
- DOM_SID **new_sids;
- int i;
-
- if (!mem_ctx || !com_set || !sids)
- return NT_STATUS_INVALID_PARAMETER;
- if (com_set->type != GUMS_OBJ_GROUP || com_set->type != GUMS_OBJ_ALIAS)
- return NT_STATUS_INVALID_PARAMETER;
-
- com_set->count = com_set->count + 1;
- if (com_set->count == 1) { /* first data set */
- data_set = (GUMS_DATA_SET *)talloc(mem_ctx, sizeof(GUMS_DATA_SET));
- } else {
- data_set = (GUMS_DATA_SET *)talloc_realloc(mem_ctx, com_set->data, sizeof(GUMS_DATA_SET) * com_set->count);
- }
- if (data_set == NULL)
- return NT_STATUS_NO_MEMORY;
-
- com_set->data = data_set;
- data_set = &((com_set->data)[com_set->count - 1]);
-
- data_set->type = GUMS_SET_SID_LIST;
- new_sids = (DOM_SID **)talloc(mem_ctx, (sizeof(void *) * count));
- if (new_sids == NULL)
- return NT_STATUS_NO_MEMORY;
- for (i = 0; i < count; i++) {
- new_sids[i] = sid_dup_talloc(mem_ctx, sids[i]);
- if (new_sids[i] == NULL)
- return NT_STATUS_NO_MEMORY;
- }
-
- (SEC_DESC *)(data_set->data) = new_sids;
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS gums_commit_data(GUMS_COMMIT_SET *set)
-{
- return gums_storage->set_object_values(set->sid, set->count, set->data);
-}
-
-NTSTATUS gums_destroy_commit_set(GUMS_COMMIT_SET **com_set)
-{
- talloc_destroy((*com_set)->mem_ctx);
- *com_set = NULL;
-
- return NT_STATUS_OK;
-}
-
diff --git a/source3/sam/gums_helper.c b/source3/sam/gums_helper.c
deleted file mode 100644
index 8526a2f1cc..0000000000
--- a/source3/sam/gums_helper.c
+++ /dev/null
@@ -1,607 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- GUMS backends helper functions
- Copyright (C) Simo Sorce 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-extern GUMS_FUNCTIONS *gums_storage;
-
-extern DOM_SID global_sid_World;
-extern DOM_SID global_sid_Builtin_Administrators;
-extern DOM_SID global_sid_Builtin_Power_Users;
-extern DOM_SID global_sid_Builtin_Account_Operators;
-extern DOM_SID global_sid_Builtin_Server_Operators;
-extern DOM_SID global_sid_Builtin_Print_Operators;
-extern DOM_SID global_sid_Builtin_Backup_Operators;
-extern DOM_SID global_sid_Builtin_Replicator;
-extern DOM_SID global_sid_Builtin_Users;
-extern DOM_SID global_sid_Builtin_Guests;
-
-
-/* defines */
-
-#define ALLOC_CHECK(str, ptr, err, label) do { if ((ptr) == NULL) { DEBUG(0, ("%s: out of memory!\n", str)); err = NT_STATUS_NO_MEMORY; goto label; } } while(0)
-#define NTSTATUS_CHECK(str1, str2, err, label) do { if (NT_STATUS_IS_ERR(err)) { DEBUG(0, ("%s: %s failed!\n", str1, str2)); } } while(0)
-
-/****************************************************************************
- Check if a user is a mapped group.
-
- This function will check if the group SID is mapped onto a
- system managed gid or onto a winbind manged sid.
- In the first case it will be threated like a mapped group
- and the backend should take the member list with a getgrgid
- and ignore any user that have been possibly set into the group
- object.
-
- In the second case, the group is a fully SAM managed group
- served back to the system through winbind. In this case the
- members of a Local group are "unrolled" to cope with the fact
- that unix cannot contain groups inside groups.
- The backend MUST never call any getgr* / getpw* function or
- loops with winbind may happen.
- ****************************************************************************/
-
-/*
-NTSTATUS is_mapped_group(BOOL *mapped, const DOM_SID *sid)
-{
- NTSTATUS result;
- gid_t id;
-
- /* look if mapping exist, do not make idmap alloc an uid if SID is not found * /
- result = idmap_get_gid_from_sid(&id, sid, False);
- if (NT_STATUS_IS_OK(result)) {
- *mapped = gid_is_in_winbind_range(id);
- } else {
- *mapped = False;
- }
-
- return result;
-}
-*/
-
-/****************************************************************************
- duplicate alloc luid_attr
- ****************************************************************************/
-NTSTATUS dupalloc_luid_attr(TALLOC_CTX *ctx, LUID_ATTR **new_la, LUID_ATTR old_la)
-{
- *new_la = (LUID_ATTR *)talloc(ctx, sizeof(LUID_ATTR));
- if (*new_la == NULL) {
- DEBUG(0,("dupalloc_luid_attr: could not Alloc memory to duplicate LUID_ATTR\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- (*new_la)->luid.high = old_la.luid.high;
- (*new_la)->luid.low = old_la.luid.low;
- (*new_la)->attr = old_la.attr;
-
- return NT_STATUS_OK;
-}
-
-/****************************************************************************
- initialise a privilege list
- ****************************************************************************/
-void init_privilege(PRIVILEGE_SET *priv_set)
-{
- priv_set->count=0;
- priv_set->control=0;
- priv_set->set=NULL;
-}
-
-/****************************************************************************
- add a privilege to a privilege array
- ****************************************************************************/
-NTSTATUS add_privilege(PRIVILEGE_SET *priv_set, TALLOC_CTX *ctx, LUID_ATTR set)
-{
- LUID_ATTR *new_set;
-
- /* check if the privilege is not already in the list */
- if (check_priv_in_privilege(priv_set, set))
- return NT_STATUS_UNSUCCESSFUL;
-
- /* we can allocate memory to add the new privilege */
-
- new_set=(LUID_ATTR *)talloc_realloc(ctx, priv_set->set, (priv_set->count+1)*(sizeof(LUID_ATTR)));
- if (new_set==NULL) {
- DEBUG(0,("add_privilege: could not Realloc memory to add a new privilege\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- new_set[priv_set->count].luid.high=set.luid.high;
- new_set[priv_set->count].luid.low=set.luid.low;
- new_set[priv_set->count].attr=set.attr;
-
- priv_set->count++;
- priv_set->set=new_set;
-
- return NT_STATUS_OK;
-}
-
-/****************************************************************************
- add all the privileges to a privilege array
- ****************************************************************************/
-NTSTATUS add_all_privilege(PRIVILEGE_SET *priv_set, TALLOC_CTX *ctx)
-{
- NTSTATUS result = NT_STATUS_OK;
- LUID_ATTR set;
-
- set.attr=0;
- set.luid.high=0;
-
- set.luid.low=SE_PRIV_ADD_USERS;
- result = add_privilege(priv_set, ctx, set);
- NTSTATUS_CHECK("add_all_privilege", "add_privilege", result, done);
-
- set.luid.low=SE_PRIV_ADD_MACHINES;
- result = add_privilege(priv_set, ctx, set);
- NTSTATUS_CHECK("add_all_privilege", "add_privilege", result, done);
-
- set.luid.low=SE_PRIV_PRINT_OPERATOR;
- result = add_privilege(priv_set, ctx, set);
- NTSTATUS_CHECK("add_all_privilege", "add_privilege", result, done);
-
-done:
- return result;
-}
-
-/****************************************************************************
- check if the privilege list is empty
- ****************************************************************************/
-BOOL check_empty_privilege(PRIVILEGE_SET *priv_set)
-{
- return (priv_set->count == 0);
-}
-
-/****************************************************************************
- check if the privilege is in the privilege list
- ****************************************************************************/
-BOOL check_priv_in_privilege(PRIVILEGE_SET *priv_set, LUID_ATTR set)
-{
- int i;
-
- /* if the list is empty, obviously we can't have it */
- if (check_empty_privilege(priv_set))
- return False;
-
- for (i=0; i<priv_set->count; i++) {
- LUID_ATTR *cur_set;
-
- cur_set=&priv_set->set[i];
- /* check only the low and high part. Checking the attr field has no meaning */
- if( (cur_set->luid.low==set.luid.low) && (cur_set->luid.high==set.luid.high) )
- return True;
- }
-
- return False;
-}
-
-/****************************************************************************
- remove a privilege from a privilege array
- ****************************************************************************/
-NTSTATUS remove_privilege(PRIVILEGE_SET *priv_set, TALLOC_CTX *ctx, LUID_ATTR set)
-{
- LUID_ATTR *new_set;
- LUID_ATTR *old_set;
- int i,j;
-
- /* check if the privilege is in the list */
- if (!check_priv_in_privilege(priv_set, set))
- return NT_STATUS_UNSUCCESSFUL;
-
- /* special case if it's the only privilege in the list */
- if (priv_set->count==1) {
- init_privilege(priv_set);
- return NT_STATUS_OK;
- }
-
- /*
- * the privilege is there, create a new list,
- * and copy the other privileges
- */
-
- old_set = priv_set->set;
-
- new_set=(LUID_ATTR *)talloc(ctx, (priv_set->count - 1) * (sizeof(LUID_ATTR)));
- if (new_set==NULL) {
- DEBUG(0,("remove_privilege: could not malloc memory for new privilege list\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- for (i=0, j=0; i<priv_set->count; i++) {
- if ((old_set[i].luid.low == set.luid.low) &&
- (old_set[i].luid.high == set.luid.high)) {
- continue;
- }
-
- new_set[j].luid.low = old_set[i].luid.low;
- new_set[j].luid.high = old_set[i].luid.high;
- new_set[j].attr = old_set[i].attr;
-
- j++;
- }
-
- if (j != priv_set->count - 1) {
- DEBUG(0,("remove_privilege: mismatch ! difference is not -1\n"));
- DEBUGADD(0,("old count:%d, new count:%d\n", priv_set->count, j));
- return NT_STATUS_INTERNAL_ERROR;
- }
-
- /* ok everything is fine */
-
- priv_set->count--;
- priv_set->set=new_set;
-
- return NT_STATUS_OK;
-}
-
-/****************************************************************************
- duplicates a privilege array
- ****************************************************************************/
-NTSTATUS dup_priv_set(PRIVILEGE_SET **new_priv_set, TALLOC_CTX *mem_ctx, PRIVILEGE_SET *priv_set)
-{
- LUID_ATTR *new_set;
- LUID_ATTR *old_set;
- int i;
-
- *new_priv_set = (PRIVILEGE_SET *)talloc(mem_ctx, sizeof(PRIVILEGE_SET));
- init_privilege(*new_priv_set);
-
- /* special case if there are no privileges in the list */
- if (priv_set->count == 0) {
- return NT_STATUS_OK;
- }
-
- /*
- * create a new list,
- * and copy the other privileges
- */
-
- old_set = priv_set->set;
-
- new_set = (LUID_ATTR *)talloc(mem_ctx, (priv_set->count - 1) * (sizeof(LUID_ATTR)));
- if (new_set==NULL) {
- DEBUG(0,("remove_privilege: could not malloc memory for new privilege list\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- for (i=0; i < priv_set->count; i++) {
-
- new_set[i].luid.low = old_set[i].luid.low;
- new_set[i].luid.high = old_set[i].luid.high;
- new_set[i].attr = old_set[i].attr;
- }
-
- (*new_priv_set)->count = priv_set->count;
- (*new_priv_set)->control = priv_set->control;
- (*new_priv_set)->set = new_set;
-
- return NT_STATUS_OK;
-}
-
-#define ALIAS_DEFAULT_SACL_SA_RIGHTS 0x01050013
-#define ALIAS_DEFAULT_DACL_SA_RIGHTS \
- (READ_CONTROL_ACCESS | \
- SA_RIGHT_ALIAS_LOOKUP_INFO | \
- SA_RIGHT_ALIAS_GET_MEMBERS) /* 0x0002000c */
-
-#define ALIAS_DEFAULT_SACL_SEC_ACE_FLAG (SEC_ACE_FLAG_FAILED_ACCESS | SEC_ACE_FLAG_SUCCESSFUL_ACCESS) /* 0xc0 */
-
-NTSTATUS create_builtin_alias_default_sec_desc(SEC_DESC **sec_desc, TALLOC_CTX *ctx)
-{
- DOM_SID *world = &global_sid_World;
- DOM_SID *admins = &global_sid_Builtin_Administrators;
- SEC_ACCESS sa;
- SEC_ACE sacl_ace;
- SEC_ACE dacl_aces[2];
- SEC_ACL *sacl = NULL;
- SEC_ACL *dacl = NULL;
- size_t psize;
-
- init_sec_access(&sa, ALIAS_DEFAULT_SACL_SA_RIGHTS);
- init_sec_ace(&sacl_ace, world, SEC_ACE_TYPE_SYSTEM_AUDIT, sa, ALIAS_DEFAULT_SACL_SEC_ACE_FLAG);
-
- sacl = make_sec_acl(ctx, NT4_ACL_REVISION, 1, &sacl_ace);
- if (!sacl) {
- DEBUG(0, ("build_init_sec_desc: Failed to make SEC_ACL.\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- init_sec_access(&sa, ALIAS_DEFAULT_DACL_SA_RIGHTS);
- init_sec_ace(&(dacl_aces[0]), world, SEC_ACE_TYPE_ACCESS_ALLOWED, sa, 0);
- init_sec_access(&sa, SA_RIGHT_ALIAS_ALL_ACCESS);
- init_sec_ace(&(dacl_aces[1]), admins, SEC_ACE_TYPE_ACCESS_ALLOWED, sa, 0);
-
- dacl = make_sec_acl(ctx, NT4_ACL_REVISION, 2, dacl_aces);
- if (!sacl) {
- DEBUG(0, ("build_init_sec_desc: Failed to make SEC_ACL.\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- *sec_desc = make_sec_desc(ctx, SEC_DESC_REVISION, admins, admins, sacl, dacl, &psize);
- if (!(*sec_desc)) {
- DEBUG(0,("get_share_security: Failed to make SEC_DESC.\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sec_desc_add_ace_to_dacl(SEC_DESC *sec_desc, TALLOC_CTX *ctx, DOM_SID *sid, uint32 mask)
-{
- NTSTATUS result;
- SEC_ACE *new_aces;
- unsigned num_aces;
- int i;
-
- num_aces = sec_desc->dacl->num_aces + 1;
- result = sec_ace_add_sid(ctx, &new_aces, sec_desc->dacl->ace, &num_aces, sid, mask);
- if (NT_STATUS_IS_OK(result)) {
- sec_desc->dacl->ace = new_aces;
- sec_desc->dacl->num_aces = num_aces;
- sec_desc->dacl->size = SEC_ACL_HEADER_SIZE;
- for (i = 0; i < num_aces; i++) {
- sec_desc->dacl->size += sec_desc->dacl->ace[i].size;
- }
- }
- return result;
-}
-
-NTSTATUS gums_init_builtin_groups(void)
-{
- NTSTATUS result;
- GUMS_OBJECT g_obj;
- GUMS_GROUP *g_grp;
- GUMS_PRIVILEGE g_priv;
-
- /* Build the well known Builtin Local Groups */
- g_obj.type = GUMS_OBJ_GROUP;
- g_obj.version = 1;
- g_obj.seq_num = 0;
- g_obj.mem_ctx = talloc_init("gums_init_backend_acct");
- if (g_obj.mem_ctx == NULL) {
- DEBUG(0, ("gums_init_backend: Out of Memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- /* Administrators */
-
- /* alloc group structure */
- g_obj.data = (void *)talloc(g_obj.mem_ctx, sizeof(GUMS_OBJ_GROUP));
- ALLOC_CHECK("gums_init_backend", g_obj.data, result, done);
-
- /* make admins sid */
- g_grp = (GUMS_GROUP *)g_obj.data;
- sid_copy(g_obj.sid, &global_sid_Builtin_Administrators);
-
- /* make security descriptor */
- result = create_builtin_alias_default_sec_desc(&(g_obj.sec_desc), g_obj.mem_ctx);
- NTSTATUS_CHECK("gums_init_backend", "create_builtin_alias_default_sec_desc", result, done);
-
- /* make privilege set */
- /* From BDC join trace:
- SeSecurityPrivilege
- SeBackupPrivilege
- SeRestorePrivilege
- SeSystemtimePrivilege
- SeShutdownPrivilege
- SeRemoteShutdownPrivilege
- SeTakeOwnershipPrivilege
- SeDebugPrivilege
- SeSystemEnvironmentPrivilege
- SeSystemProfilePrivilege
- SeProfileSingleProcessPrivilege
- SeIncreaseBasePriorityPrivilege
- SeLocalDriverPrivilege
- SeCreatePagefilePrivilege
- SeIncreaseQuotaPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Administrators");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Members can fully administer the computer/domain");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* numebr of group members */
- g_grp->count = 0;
- g_grp->members = NULL;
-
- /* store Administrators group */
- result = gums_storage->set_object(&g_obj);
-
- /* Power Users */
- /* Domain Controllers Does NOT have power Users */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Power_Users);
-
- /* make privilege set */
- /* SE_PRIV_??? */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Power Users");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
-/* > */ g_obj.description = talloc_strdup(g_obj.mem_ctx, "Power Users");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Power Users group */
- result = gums_storage->set_object(&g_obj);
-
- /* Account Operators */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Account_Operators);
-
- /* make privilege set */
- /* From BDC join trace:
- SeShutdownPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Account Operators");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Members can administer domain user and group accounts");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Account Operators group */
- result = gums_storage->set_object(&g_obj);
-
- /* Server Operators */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Server_Operators);
-
- /* make privilege set */
- /* From BDC join trace:
- SeBackupPrivilege
- SeRestorePrivilege
- SeSystemtimePrivilege
- SeShutdownPrivilege
- SeRemoteShutdownPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Server Operators");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Members can administer domain servers");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Server Operators group */
- result = gums_storage->set_object(&g_obj);
-
- /* Print Operators */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Print_Operators);
-
- /* make privilege set */
- /* From BDC join trace:
- SeShutdownPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Print Operators");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Members can administer domain printers");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Print Operators group */
- result = gums_storage->set_object(&g_obj);
-
- /* Backup Operators */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Backup_Operators);
-
- /* make privilege set */
- /* From BDC join trace:
- SeBackupPrivilege
- SeRestorePrivilege
- SeShutdownPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Backup Operators");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Members can bypass file security to backup files");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Backup Operators group */
- result = gums_storage->set_object(&g_obj);
-
- /* Replicator */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Replicator);
-
- /* make privilege set */
- /* From BDC join trace:
- SeBackupPrivilege
- SeRestorePrivilege
- SeShutdownPrivilege
- */
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Replicator");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Supports file replication in a domain");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Replicator group */
- result = gums_storage->set_object(&g_obj);
-
- /* Users */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Users);
-
- /* add ACE to sec dsec dacl */
- sec_desc_add_ace_to_dacl(g_obj.sec_desc, g_obj.mem_ctx, &global_sid_Builtin_Account_Operators, ALIAS_DEFAULT_DACL_SA_RIGHTS);
- sec_desc_add_ace_to_dacl(g_obj.sec_desc, g_obj.mem_ctx, &global_sid_Builtin_Power_Users, ALIAS_DEFAULT_DACL_SA_RIGHTS);
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Users");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Ordinary users");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Users group */
- result = gums_storage->set_object(&g_obj);
-
- /* Guests */
-
- sid_copy(g_obj.sid, &global_sid_Builtin_Guests);
-
- /* set name */
- g_obj.name = talloc_strdup(g_obj.mem_ctx, "Guests");
- ALLOC_CHECK("gums_init_backend", g_obj.name, result, done);
-
- /* set description */
- g_obj.description = talloc_strdup(g_obj.mem_ctx, "Users granted guest access to the computer/domain");
- ALLOC_CHECK("gums_init_backend", g_obj.description, result, done);
-
- /* store Guests group */
- result = gums_storage->set_object(&g_obj);
-
- /* set default privileges */
- g_priv.type = GUMS_OBJ_GROUP;
- g_priv.version = 1;
- g_priv.seq_num = 0;
- g_priv.mem_ctx = talloc_init("gums_init_backend_priv");
- if (g_priv.mem_ctx == NULL) {
- DEBUG(0, ("gums_init_backend: Out of Memory!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
-
-
-done:
- talloc_destroy(g_obj.mem_ctx);
- talloc_destroy(g_priv.mem_ctx);
- return result;
-}
-
diff --git a/source3/sam/interface.c b/source3/sam/interface.c
deleted file mode 100644
index 51ae561999..0000000000
--- a/source3/sam/interface.c
+++ /dev/null
@@ -1,1338 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Password and authentication handling
- Copyright (C) Andrew Bartlett 2002
- Copyright (C) Jelmer Vernooij 2002
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Kai Krüger 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-#undef DBGC_CLASS
-#define DBGC_CLASS DBGC_SAM
-
-extern DOM_SID global_sid_Builtin;
-
-/** List of various built-in sam modules */
-
-const struct sam_init_function_entry builtin_sam_init_functions[] = {
- { "plugin", sam_init_plugin },
-#ifdef HAVE_LDAP
- { "ads", sam_init_ads },
-#endif
- { "skel", sam_init_skel },
- { NULL, NULL}
-};
-
-
-static NTSTATUS sam_get_methods_by_sid(const SAM_CONTEXT *context, SAM_METHODS **sam_method, const DOM_SID *domainsid)
-{
- SAM_METHODS *tmp_methods;
-
- DEBUG(5,("sam_get_methods_by_sid: %d\n", __LINE__));
-
- /* invalid sam_context specified */
- SAM_ASSERT(context && context->methods);
-
- tmp_methods = context->methods;
-
- while (tmp_methods) {
- if (sid_equal(domainsid, &(tmp_methods->domain_sid)))
- {
- (*sam_method) = tmp_methods;
- return NT_STATUS_OK;
- }
- tmp_methods = tmp_methods->next;
- }
-
- DEBUG(3,("sam_get_methods_by_sid: There is no backend specified for domain %s\n", sid_string_static(domainsid)));
-
- return NT_STATUS_NO_SUCH_DOMAIN;
-}
-
-static NTSTATUS sam_get_methods_by_name(const SAM_CONTEXT *context, SAM_METHODS **sam_method, const char *domainname)
-{
- SAM_METHODS *tmp_methods;
-
- DEBUG(5,("sam_get_methods_by_name: %d\n", __LINE__));
-
- /* invalid sam_context specified */
- SAM_ASSERT(context && context->methods);
-
- tmp_methods = context->methods;
-
- while (tmp_methods) {
- if (strequal(domainname, tmp_methods->domain_name))
- {
- (*sam_method) = tmp_methods;
- return NT_STATUS_OK;
- }
- tmp_methods = tmp_methods->next;
- }
-
- DEBUG(3,("sam_get_methods_by_sid: There is no backend specified for domain %s\n", domainname));
-
- return NT_STATUS_NO_SUCH_DOMAIN;
-}
-
-static NTSTATUS make_sam_methods(TALLOC_CTX *mem_ctx, SAM_METHODS **methods)
-{
- *methods = talloc(mem_ctx, sizeof(SAM_METHODS));
-
- if (!*methods) {
- return NT_STATUS_NO_MEMORY;
- }
-
- ZERO_STRUCTP(*methods);
-
- return NT_STATUS_OK;
-}
-
-/******************************************************************
- Free and cleanup a sam context, any associated data and anything
- that the attached modules might have associated.
- *******************************************************************/
-
-void free_sam_context(SAM_CONTEXT **context)
-{
- SAM_METHODS *sam_selected = (*context)->methods;
-
- while (sam_selected) {
- if (sam_selected->free_private_data) {
- sam_selected->free_private_data(&(sam_selected->private_data));
- }
- sam_selected = sam_selected->next;
- }
-
- talloc_destroy((*context)->mem_ctx);
- *context = NULL;
-}
-
-/******************************************************************
- Make a backend_entry from scratch
- *******************************************************************/
-
-static NTSTATUS make_backend_entry(SAM_BACKEND_ENTRY *backend_entry, char *sam_backend_string)
-{
- char *tmp = NULL;
- char *tmp_string = sam_backend_string;
-
- DEBUG(5,("make_backend_entry: %d\n", __LINE__));
-
- SAM_ASSERT(sam_backend_string && backend_entry);
-
- backend_entry->module_name = sam_backend_string;
-
- DEBUG(5,("makeing backend_entry for %s\n", backend_entry->module_name));
-
- if ((tmp = strrchr(tmp_string, '|')) != NULL) {
- DEBUGADD(20,("a domain name has been specified\n"));
- *tmp = 0;
- backend_entry->domain_name = smb_xstrdup(tmp + 1);
- tmp_string = tmp + 1;
- }
-
- if ((tmp = strchr(tmp_string, ':')) != NULL) {
- DEBUG(20,("options for the backend have been specified\n"));
- *tmp = 0;
- backend_entry->module_params = smb_xstrdup(tmp + 1);
- tmp_string = tmp + 1;
- }
-
- if (backend_entry->domain_name == NULL) {
- DEBUG(10,("make_backend_entry: no domain was specified for sam module %s. Using default domain %s\n",
- backend_entry->module_name, lp_workgroup()));
- backend_entry->domain_name = smb_xstrdup(lp_workgroup());
- }
-
- if ((backend_entry->domain_sid = (DOM_SID *)malloc(sizeof(DOM_SID))) == NULL) {
- DEBUG(0,("make_backend_entry: failed to malloc domain_sid\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- DEBUG(10,("looking up sid for domain %s\n", backend_entry->domain_name));
-
- if (!secrets_fetch_domain_sid(backend_entry->domain_name, backend_entry->domain_sid)) {
- DEBUG(2,("make_backend_entry: There is no SID stored for domain %s. Creating a new one.\n",
- backend_entry->domain_name));
- DEBUG(0, ("FIXME in %s:%d\n", __FILE__, __LINE__));
- ZERO_STRUCTP(backend_entry->domain_sid);
- }
-
- DEBUG(5,("make_backend_entry: module name: %s, module parameters: %s, domain name: %s, domain sid: %s\n",
- backend_entry->module_name, backend_entry->module_params, backend_entry->domain_name, sid_string_static(backend_entry->domain_sid)));
-
- return NT_STATUS_OK;
-}
-
-/******************************************************************
- create sam_methods struct based on sam_backend_entry
- *****************************************************************/
-
-static NTSTATUS make_sam_methods_backend_entry(SAM_CONTEXT *context, SAM_METHODS **methods_ptr, SAM_BACKEND_ENTRY *backend_entry)
-{
- NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
- SAM_METHODS *methods;
- int i;
-
- DEBUG(5,("make_sam_methods_backend_entry: %d\n", __LINE__));
-
- if (!NT_STATUS_IS_OK(nt_status = make_sam_methods(context->mem_ctx, methods_ptr))) {
- return nt_status;
- }
-
- methods = *methods_ptr;
- methods->backendname = talloc_strdup(context->mem_ctx, backend_entry->module_name);
- methods->domain_name = talloc_strdup(context->mem_ctx, backend_entry->domain_name);
- sid_copy(&methods->domain_sid, backend_entry->domain_sid);
- methods->parent = context;
-
- DEBUG(5,("Attempting to find sam backend %s\n", backend_entry->module_name));
- for (i = 0; builtin_sam_init_functions[i].module_name; i++)
- {
- if (strequal(builtin_sam_init_functions[i].module_name, backend_entry->module_name))
- {
- DEBUG(5,("Found sam backend %s (at pos %d)\n", backend_entry->module_name, i));
- DEBUGADD(5,("initialising it with options=%s for domain %s\n", backend_entry->module_params, sid_string_static(backend_entry->domain_sid)));
- nt_status = builtin_sam_init_functions[i].init(methods, backend_entry->module_params);
- if (NT_STATUS_IS_OK(nt_status)) {
- DEBUG(5,("sam backend %s has a valid init\n", backend_entry->module_name));
- } else {
- DEBUG(2,("sam backend %s did not correctly init (error was %s)\n",
- backend_entry->module_name, nt_errstr(nt_status)));
- }
- return nt_status;
- }
- }
-
- DEBUG(2,("could not find backend %s\n", backend_entry->module_name));
-
- return NT_STATUS_INVALID_PARAMETER;
-}
-
-static NTSTATUS sam_context_check_default_backends(SAM_CONTEXT *context)
-{
- SAM_BACKEND_ENTRY entry;
- DOM_SID *global_sam_sid = get_global_sam_sid(); /* lp_workgroup doesn't play nicely with multiple domains */
- SAM_METHODS *methods, *tmpmethods;
- NTSTATUS ntstatus;
-
- DEBUG(5,("sam_context_check_default_backends: %d\n", __LINE__));
-
- /* Make sure domain lp_workgroup() is available */
-
- ntstatus = sam_get_methods_by_sid(context, &methods, &global_sid_Builtin);
-
- if (NT_STATUS_EQUAL(ntstatus, NT_STATUS_NO_SUCH_DOMAIN)) {
- DEBUG(4,("There was no backend specified for domain %s(%s); using %s\n",
- lp_workgroup(), sid_string_static(global_sam_sid), SAM_DEFAULT_BACKEND));
-
- SAM_ASSERT(global_sam_sid);
-
- entry.module_name = SAM_DEFAULT_BACKEND;
- entry.module_params = NULL;
- entry.domain_name = lp_workgroup();
- entry.domain_sid = (DOM_SID *)malloc(sizeof(DOM_SID));
- sid_copy(entry.domain_sid, global_sam_sid);
-
- if (!NT_STATUS_IS_OK(ntstatus = make_sam_methods_backend_entry(context, &methods, &entry))) {
- DEBUG(4,("make_sam_methods_backend_entry failed\n"));
- return ntstatus;
- }
-
- DLIST_ADD_END(context->methods, methods, tmpmethods);
-
- } else if (!NT_STATUS_IS_OK(ntstatus)) {
- DEBUG(2, ("sam_get_methods_by_sid failed for %s\n", lp_workgroup()));
- return ntstatus;
- }
-
- /* Make sure the BUILTIN domain is available */
-
- ntstatus = sam_get_methods_by_sid(context, &methods, global_sam_sid);
-
- if (NT_STATUS_EQUAL(ntstatus, NT_STATUS_NO_SUCH_DOMAIN)) {
- DEBUG(4,("There was no backend specified for domain BUILTIN; using %s\n",
- SAM_DEFAULT_BACKEND));
- entry.module_name = SAM_DEFAULT_BACKEND;
- entry.module_params = NULL;
- entry.domain_name = "BUILTIN";
- entry.domain_sid = (DOM_SID *)malloc(sizeof(DOM_SID));
- sid_copy(entry.domain_sid, &global_sid_Builtin);
-
- if (!NT_STATUS_IS_OK(ntstatus = make_sam_methods_backend_entry(context, &methods, &entry))) {
- DEBUG(4,("make_sam_methods_backend_entry failed\n"));
- return ntstatus;
- }
-
- DLIST_ADD_END(context->methods, methods, tmpmethods);
- } else if (!NT_STATUS_IS_OK(ntstatus)) {
- DEBUG(2, ("sam_get_methods_by_sid failed for BUILTIN\n"));
- return ntstatus;
- }
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS check_duplicate_backend_entries(SAM_BACKEND_ENTRY **backend_entries, int *nBackends)
-{
- int i, j;
-
- DEBUG(5,("check_duplicate_backend_entries: %d\n", __LINE__));
-
- for (i = 0; i < *nBackends; i++) {
- for (j = i + 1; j < *nBackends; j++) {
- if (sid_equal((*backend_entries)[i].domain_sid, (*backend_entries)[j].domain_sid)) {
- DEBUG(0,("two backend modules claim the same domain %s\n",
- sid_string_static((*backend_entries)[j].domain_sid)));
- return NT_STATUS_INVALID_PARAMETER;
- }
- }
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS make_sam_context_list(SAM_CONTEXT **context, char **sam_backends_param)
-{
- int i = 0, j = 0;
- SAM_METHODS *curmethods, *tmpmethods;
- int nBackends = 0;
- SAM_BACKEND_ENTRY *backends = NULL;
- NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-
- DEBUG(5,("make_sam_context_from_conf: %d\n", __LINE__));
-
- if (!sam_backends_param) {
- DEBUG(1, ("no SAM backeds specified!\n"));
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = make_sam_context(context))) {
- DEBUG(4,("make_sam_context failed\n"));
- return nt_status;
- }
-
- while (sam_backends_param[nBackends])
- nBackends++;
-
- DEBUG(6,("There are %d domains listed with their backends\n", nBackends));
-
- if ((backends = (SAM_BACKEND_ENTRY *)malloc(sizeof(*backends)*nBackends)) == NULL) {
- DEBUG(0,("make_sam_context_list: failed to allocate backends\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- memset(backends, '\0', sizeof(*backends)*nBackends);
-
- for (i = 0; i < nBackends; i++) {
- DEBUG(8,("processing %s\n",sam_backends_param[i]));
- if (!NT_STATUS_IS_OK(nt_status = make_backend_entry(&backends[i], sam_backends_param[i]))) {
- DEBUG(4,("make_backend_entry failed\n"));
- for (j = 0; j < nBackends; j++) SAFE_FREE(backends[j].domain_sid);
- SAFE_FREE(backends);
- free_sam_context(context);
- return nt_status;
- }
- }
-
- if (!NT_STATUS_IS_OK(nt_status = check_duplicate_backend_entries(&backends, &nBackends))) {
- DEBUG(4,("check_duplicate_backend_entries failed\n"));
- for (j = 0; j < nBackends; j++) SAFE_FREE(backends[j].domain_sid);
- SAFE_FREE(backends);
- free_sam_context(context);
- return nt_status;
- }
-
- for (i = 0; i < nBackends; i++) {
- if (!NT_STATUS_IS_OK(nt_status = make_sam_methods_backend_entry(*context, &curmethods, &backends[i]))) {
- DEBUG(4,("make_sam_methods_backend_entry failed\n"));
- for (j = 0; j < nBackends; j++) SAFE_FREE(backends[j].domain_sid);
- SAFE_FREE(backends);
- free_sam_context(context);
- return nt_status;
- }
- DLIST_ADD_END((*context)->methods, curmethods, tmpmethods);
- }
-
- for (i = 0; i < nBackends; i++) SAFE_FREE(backends[i].domain_sid);
-
- SAFE_FREE(backends);
- return NT_STATUS_OK;
-}
-
-/******************************************************************
- Make a sam_context from scratch.
- *******************************************************************/
-
-NTSTATUS make_sam_context(SAM_CONTEXT **context)
-{
- TALLOC_CTX *mem_ctx;
-
- mem_ctx = talloc_init("sam_context internal allocation context");
-
- if (!mem_ctx) {
- DEBUG(0, ("make_sam_context: talloc init failed!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- *context = talloc(mem_ctx, sizeof(**context));
- if (!*context) {
- DEBUG(0, ("make_sam_context: talloc failed!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- ZERO_STRUCTP(*context);
-
- (*context)->mem_ctx = mem_ctx;
-
- (*context)->free_fn = free_sam_context;
-
- return NT_STATUS_OK;
-}
-
-/******************************************************************
- Return an already initialised sam_context, to facilitate backward
- compatibility (see functions below).
- *******************************************************************/
-
-static struct sam_context *sam_get_static_context(BOOL reload)
-{
- static SAM_CONTEXT *sam_context = NULL;
-
- if ((sam_context) && (reload)) {
- sam_context->free_fn(&sam_context);
- sam_context = NULL;
- }
-
- if (!sam_context) {
- if (!NT_STATUS_IS_OK(make_sam_context_list(&sam_context, lp_sam_backend()))) {
- DEBUG(4,("make_sam_context_list failed\n"));
- return NULL;
- }
-
- /* Make sure the required domains (default domain, builtin) are available */
- if (!NT_STATUS_IS_OK(sam_context_check_default_backends(sam_context))) {
- DEBUG(4,("sam_context_check_default_backends failed\n"));
- return NULL;
- }
- }
-
- return sam_context;
-}
-
-/***************************************************************
- Initialize the static context (at smbd startup etc).
-
- If uninitialised, context will auto-init on first use.
- ***************************************************************/
-
-BOOL initialize_sam(BOOL reload)
-{
- return (sam_get_static_context(reload) != NULL);
-}
-
-
-/**************************************************************
- External API. This is what the rest of the world calls...
-***************************************************************/
-
-/******************************************************************
- sam_* functions are used to link the external SAM interface
- with the internal backends. These functions lookup the appropriate
- backends for the domain and pass on to the function in sam_methods
- in the selected backend
-
- When the context parmater is NULL, the default is used.
- *******************************************************************/
-
-#define SAM_SETUP_CONTEXT if (!context) \
- context = sam_get_static_context(False);\
- if (!context) {\
- return NT_STATUS_UNSUCCESSFUL; \
- }\
-
-
-
-NTSTATUS sam_get_sec_desc(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_get_sec_desc: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, sid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_sec_desc) {
- DEBUG(3, ("sam_get_sec_desc: sam_methods of the domain did not specify sam_get_sec_desc\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_sec_desc(tmp_methods, access_token, sid, sd))) {
- DEBUG(4,("sam_get_sec_desc for %s in backend %s failed\n", sid_string_static(sid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_set_sec_desc(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_set_sec_desc: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, sid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_set_sec_desc) {
- DEBUG(3, ("sam_set_sec_desc: sam_methods of the domain did not specify sam_set_sec_desc\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_set_sec_desc(tmp_methods, access_token, sid, sd))) {
- DEBUG(4,("sam_set_sec_desc for %s in backend %s failed\n", sid_string_static(sid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS sam_lookup_name(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const char *domain, const char *name, DOM_SID *sid, uint32 *type)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_lookup_name: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_name(context, &tmp_methods, domain))) {
- DEBUG(4,("sam_get_methods_by_name failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_lookup_name) {
- DEBUG(3, ("sam_lookup_name: sam_methods of the domain did not specify sam_lookup_name\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_lookup_name(tmp_methods, access_token, name, sid, type))) {
- DEBUG(4,("sam_lookup_name for %s\\%s in backend %s failed\n",
- tmp_methods->domain_name, name, tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_lookup_sid(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, TALLOC_CTX *mem_ctx, const DOM_SID *sid, char **name, uint32 *type)
-{
- SAM_METHODS *tmp_methods;
- uint32 rid;
- NTSTATUS nt_status;
- DOM_SID domainsid;
-
- DEBUG(5,("sam_lookup_sid: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- sid_copy(&domainsid, sid);
- if (!sid_split_rid(&domainsid, &rid)) {
- DEBUG(3,("sam_lookup_sid: failed to split the sid\n"));
- return NT_STATUS_INVALID_SID;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, &domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_lookup_sid) {
- DEBUG(3, ("sam_lookup_sid: sam_methods of the domain did not specify sam_lookup_sid\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_lookup_sid(tmp_methods, access_token, mem_ctx, sid, name, type))) {
- DEBUG(4,("sam_lookup_name for %s in backend %s failed\n",
- sid_string_static(sid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS sam_update_domain(const SAM_CONTEXT *context, const SAM_DOMAIN_HANDLE *domain)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_update_domain: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid domain specified */
- SAM_ASSERT(domain && domain->current_sam_methods);
-
- tmp_methods = domain->current_sam_methods;
-
- if (!tmp_methods->sam_update_domain) {
- DEBUG(3, ("sam_update_domain: sam_methods of the domain did not specify sam_update_domain\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_update_domain(tmp_methods, domain))){
- DEBUG(4,("sam_update_domain in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_enum_domains(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, int32 *domain_count, DOM_SID **domains, char ***domain_names)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- SEC_DESC *sd;
- size_t sd_size;
- uint32 acc_granted;
- int i = 0;
-
- DEBUG(5,("sam_enum_domains: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid parmaters specified */
- SAM_ASSERT(domain_count && domains && domain_names);
-
- if (!NT_STATUS_IS_OK(nt_status = samr_make_sam_obj_sd(context->mem_ctx, &sd, &sd_size))) {
- DEBUG(4,("samr_make_sam_obj_sd failed\n"));
- return nt_status;
- }
-
- if (!se_access_check(sd, access_token, SA_RIGHT_SAM_ENUM_DOMAINS, &acc_granted, &nt_status)) {
- DEBUG(3,("sam_enum_domains: ACCESS DENIED\n"));
- return nt_status;
- }
-
- tmp_methods= context->methods;
- *domain_count = 0;
-
- while (tmp_methods) {
- (*domain_count)++;
- tmp_methods= tmp_methods->next;
- }
-
- DEBUG(6,("sam_enum_domains: enumerating %d domains\n", (*domain_count)));
-
- tmp_methods = context->methods;
-
- if (((*domains) = malloc( sizeof(DOM_SID) * (*domain_count))) == NULL) {
- DEBUG(0,("sam_enum_domains: Out of memory allocating domain SID list\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (((*domain_names) = malloc( sizeof(char*) * (*domain_count))) == NULL) {
- DEBUG(0,("sam_enum_domains: Out of memory allocating domain name list\n"));
- SAFE_FREE((*domains));
- return NT_STATUS_NO_MEMORY;
- }
-
- while (tmp_methods) {
- DEBUGADD(7,(" [%d] %s: %s\n", i, tmp_methods->domain_name, sid_string_static(&tmp_methods->domain_sid)));
- sid_copy(domains[i],&tmp_methods->domain_sid);
- *domain_names[i] = smb_xstrdup(tmp_methods->domain_name);
- i++;
- tmp_methods= tmp_methods->next;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_lookup_domain(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const char *domain, DOM_SID **domainsid)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- SEC_DESC *sd;
- size_t sd_size;
- uint32 acc_granted;
-
- DEBUG(5,("sam_lookup_domain: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid paramters */
- SAM_ASSERT(access_token && domain && domainsid);
-
- if (!NT_STATUS_IS_OK(nt_status = samr_make_sam_obj_sd(context->mem_ctx, &sd, &sd_size))) {
- DEBUG(4,("samr_make_sam_obj_sd failed\n"));
- return nt_status;
- }
-
- if (!se_access_check(sd, access_token, SA_RIGHT_SAM_OPEN_DOMAIN, &acc_granted, &nt_status)) {
- DEBUG(3,("sam_lookup_domain: ACCESS DENIED\n"));
- return nt_status;
- }
-
- tmp_methods= context->methods;
-
- while (tmp_methods) {
- if (strcmp(domain, tmp_methods->domain_name) == 0) {
- (*domainsid) = (DOM_SID *)malloc(sizeof(DOM_SID));
- sid_copy((*domainsid), &tmp_methods->domain_sid);
- return NT_STATUS_OK;
- }
- tmp_methods= tmp_methods->next;
- }
-
- return NT_STATUS_NO_SUCH_DOMAIN;
-}
-
-
-NTSTATUS sam_get_domain_by_sid(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *domainsid, SAM_DOMAIN_HANDLE **domain)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_get_domain_by_sid: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domainsid && domain);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_domain_handle) {
- DEBUG(3, ("sam_get_domain_by_sid: sam_methods of the domain did not specify sam_get_domain_handle\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_domain_handle(tmp_methods, access_token, access_desired, domain))) {
- DEBUG(4,("sam_get_domain_handle for %s in backend %s failed\n",
- sid_string_static(domainsid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_create_account(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *domainsid, const char *account_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_create_account: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid parmaters */
- SAM_ASSERT(access_token && domainsid && account_name && account);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_create_account) {
- DEBUG(3, ("sam_create_account: sam_methods of the domain did not specify sam_create_account\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_create_account(tmp_methods, access_token, access_desired, account_name, acct_ctrl, account))) {
- DEBUG(4,("sam_create_account in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_add_account(const SAM_CONTEXT *context, const SAM_ACCOUNT_HANDLE *account)
-{
- DOM_SID domainsid;
- const DOM_SID *accountsid;
- SAM_METHODS *tmp_methods;
- uint32 rid;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_add_account: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid parmaters */
- SAM_ASSERT(account);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_account_sid(account, &accountsid))) {
- DEBUG(0,("Can't get account SID\n"));
- return nt_status;
- }
-
- sid_copy(&domainsid, accountsid);
- if (!sid_split_rid(&domainsid, &rid)) {
- DEBUG(3,("sam_get_account_by_sid: failed to split the sid\n"));
- return NT_STATUS_INVALID_SID;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, &domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_add_account) {
- DEBUG(3, ("sam_add_account: sam_methods of the domain did not specify sam_add_account\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_add_account(tmp_methods, account))){
- DEBUG(4,("sam_add_account in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_update_account(const SAM_CONTEXT *context, const SAM_ACCOUNT_HANDLE *account)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_update_account: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid account specified */
- SAM_ASSERT(account && account->current_sam_methods);
-
- tmp_methods = account->current_sam_methods;
-
- if (!tmp_methods->sam_update_account) {
- DEBUG(3, ("sam_update_account: sam_methods of the domain did not specify sam_update_account\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_update_account(tmp_methods, account))){
- DEBUG(4,("sam_update_account in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_delete_account(const SAM_CONTEXT *context, const SAM_ACCOUNT_HANDLE *account)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_delete_account: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid account specified */
- SAM_ASSERT(account && account->current_sam_methods);
-
- tmp_methods = account->current_sam_methods;
-
- if (!tmp_methods->sam_delete_account) {
- DEBUG(3, ("sam_delete_account: sam_methods of the domain did not specify sam_delete_account\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_delete_account(tmp_methods, account))){
- DEBUG(4,("sam_delete_account in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_enum_accounts(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const DOM_SID *domainsid, uint16 acct_ctrl, int32 *account_count, SAM_ACCOUNT_ENUM **accounts)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_enum_accounts: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domainsid && account_count && accounts);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_enum_accounts) {
- DEBUG(3, ("sam_enum_accounts: sam_methods of the domain did not specify sam_enum_accounts\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_enum_accounts(tmp_methods, access_token, acct_ctrl, account_count, accounts))) {
- DEBUG(4,("sam_enum_accounts for domain %s in backend %s failed\n",
- tmp_methods->domain_name, tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-
-NTSTATUS sam_get_account_by_sid(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account)
-{
- SAM_METHODS *tmp_methods;
- uint32 rid;
- DOM_SID domainsid;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_get_account_by_sid: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && accountsid && account);
-
- sid_copy(&domainsid, accountsid);
- if (!sid_split_rid(&domainsid, &rid)) {
- DEBUG(3,("sam_get_account_by_sid: failed to split the sid\n"));
- return NT_STATUS_INVALID_SID;
- }
-
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, &domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_account_by_sid) {
- DEBUG(3, ("sam_get_account_by_sid: sam_methods of the domain did not specify sam_get_account_by_sid\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_account_by_sid(tmp_methods, access_token, access_desired, accountsid, account))) {
- DEBUG(4,("sam_get_account_by_sid for %s in backend %s failed\n",
- sid_string_static(accountsid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_account_by_name(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *domain, const char *name, SAM_ACCOUNT_HANDLE **account)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_get_account_by_name: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domain && name && account);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_name(context, &tmp_methods, domain))) {
- DEBUG(4,("sam_get_methods_by_name failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_account_by_name) {
- DEBUG(3, ("sam_get_account_by_name: sam_methods of the domain did not specify sam_get_account_by_name\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_account_by_name(tmp_methods, access_token, access_desired, name, account))) {
- DEBUG(4,("sam_get_account_by_name for %s\\%s in backend %s failed\n",
- domain, name, tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_create_group(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *domainsid, const char *group_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_create_group: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domainsid && group_name && group);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_create_group) {
- DEBUG(3, ("sam_create_group: sam_methods of the domain did not specify sam_create_group\n"));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_create_group(tmp_methods, access_token, access_desired, group_name, group_ctrl, group))) {
- DEBUG(4,("sam_create_group in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_add_group(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group)
-{
- DOM_SID domainsid;
- const DOM_SID *groupsid;
- SAM_METHODS *tmp_methods;
- uint32 rid;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_add_group: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(group);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_group_sid(group, &groupsid))) {
- DEBUG(0,("Can't get group SID\n"));
- return nt_status;
- }
-
- sid_copy(&domainsid, groupsid);
- if (!sid_split_rid(&domainsid, &rid)) {
- DEBUG(3,("sam_get_group_by_sid: failed to split the sid\n"));
- return NT_STATUS_INVALID_SID;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, &domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_add_group) {
- DEBUG(3, ("sam_add_group: sam_methods of the domain did not specify sam_add_group\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_add_group(tmp_methods, group))){
- DEBUG(4,("sam_add_group in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_update_group(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_update_group: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid group specified */
- SAM_ASSERT(group && group->current_sam_methods);
-
- tmp_methods = group->current_sam_methods;
-
- if (!tmp_methods->sam_update_group) {
- DEBUG(3, ("sam_update_group: sam_methods of the domain did not specify sam_update_group\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_update_group(tmp_methods, group))){
- DEBUG(4,("sam_update_group in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_delete_group(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_delete_group: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid group specified */
- SAM_ASSERT(group && group->current_sam_methods);
-
- tmp_methods = group->current_sam_methods;
-
- if (!tmp_methods->sam_delete_group) {
- DEBUG(3, ("sam_delete_group: sam_methods of the domain did not specify sam_delete_group\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_delete_group(tmp_methods, group))){
- DEBUG(4,("sam_delete_group in backend %s failed\n",
- tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_enum_groups(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const DOM_SID *domainsid, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_enum_groups: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domainsid && groups_count && groups);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_enum_accounts) {
- DEBUG(3, ("sam_enum_groups: sam_methods of the domain did not specify sam_enum_groups\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_enum_groups(tmp_methods, access_token, group_ctrl, groups_count, groups))) {
- DEBUG(4,("sam_enum_groups for domain %s in backend %s failed\n",
- tmp_methods->domain_name, tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_group_by_sid(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
-{
- SAM_METHODS *tmp_methods;
- uint32 rid;
- NTSTATUS nt_status;
- DOM_SID domainsid;
-
- DEBUG(5,("sam_get_group_by_sid: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && groupsid && group);
-
- sid_copy(&domainsid, groupsid);
- if (!sid_split_rid(&domainsid, &rid)) {
- DEBUG(3,("sam_get_group_by_sid: failed to split the sid\n"));
- return NT_STATUS_INVALID_SID;
- }
-
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_sid(context, &tmp_methods, &domainsid))) {
- DEBUG(4,("sam_get_methods_by_sid failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_group_by_sid) {
- DEBUG(3, ("sam_get_group_by_sid: sam_methods of the domain did not specify sam_get_group_by_sid\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_group_by_sid(tmp_methods, access_token, access_desired, groupsid, group))) {
- DEBUG(4,("sam_get_group_by_sid for %s in backend %s failed\n",
- sid_string_static(groupsid), tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_group_by_name(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *domain, const char *name, SAM_GROUP_HANDLE **group)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- DEBUG(5,("sam_get_group_by_name: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- SAM_ASSERT(access_token && domain && name && group);
-
- if (!NT_STATUS_IS_OK(nt_status = sam_get_methods_by_name(context, &tmp_methods, domain))) {
- DEBUG(4,("sam_get_methods_by_name failed\n"));
- return nt_status;
- }
-
- if (!tmp_methods->sam_get_group_by_name) {
- DEBUG(3, ("sam_get_group_by_name: sam_methods of the domain did not specify sam_get_group_by_name\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_group_by_name(tmp_methods, access_token, access_desired, name, group))) {
- DEBUG(4,("sam_get_group_by_name for %s\\%s in backend %s failed\n",
- domain, name, tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_add_member_to_group(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- SAM_SETUP_CONTEXT;
-
- /* invalid group or member specified */
- SAM_ASSERT(group && group->current_sam_methods && member);
-
- tmp_methods = group->current_sam_methods;
-
- if (!tmp_methods->sam_add_member_to_group) {
- DEBUG(3, ("sam_add_member_to_group: sam_methods of the domain did not specify sam_add_member_to_group\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_add_member_to_group(tmp_methods, group, member))) {
- DEBUG(4,("sam_add_member_to_group in backend %s failed\n", tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-
-}
-
-NTSTATUS sam_delete_member_from_group(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- SAM_SETUP_CONTEXT;
-
- /* invalid group or member specified */
- SAM_ASSERT(group && group->current_sam_methods && member);
-
- tmp_methods = group->current_sam_methods;
-
- if (!tmp_methods->sam_delete_member_from_group) {
- DEBUG(3, ("sam_delete_member_from_group: sam_methods of the domain did not specify sam_delete_member_from_group\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_delete_member_from_group(tmp_methods, group, member))) {
- DEBUG(4,("sam_delete_member_from_group in backend %s failed\n", tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_enum_groupmembers(const SAM_CONTEXT *context, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
-{
- const SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- SAM_SETUP_CONTEXT;
-
- /* invalid group specified */
- SAM_ASSERT(group && group->current_sam_methods && members_count && members);
-
- tmp_methods = group->current_sam_methods;
-
- if (!tmp_methods->sam_enum_groupmembers) {
- DEBUG(3, ("sam_enum_groupmembers: sam_methods of the domain did not specify sam_enum_group_members\n"));
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_enum_groupmembers(tmp_methods, group, members_count, members))) {
- DEBUG(4,("sam_enum_groupmembers in backend %s failed\n", tmp_methods->backendname));
- return nt_status;
- }
-
- return NT_STATUS_OK;
-}
-
-NTSTATUS sam_get_groups_of_sid(const SAM_CONTEXT *context, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups)
-{
- SAM_METHODS *tmp_methods;
- NTSTATUS nt_status;
-
- uint32 tmp_group_count;
- SAM_GROUP_ENUM *tmp_groups;
-
- DEBUG(5,("sam_get_groups_of_sid: %d\n", __LINE__));
-
- SAM_SETUP_CONTEXT;
-
- /* invalid sam_context specified */
- SAM_ASSERT(access_token && sids && context && context->methods);
-
- *group_count = 0;
-
- *groups = NULL;
-
- tmp_methods= context->methods;
-
- while (tmp_methods) {
- DEBUG(5,("getting groups from domain \n"));
- if (!tmp_methods->sam_get_groups_of_sid) {
- DEBUG(3, ("sam_get_groups_of_sid: sam_methods of domain did not specify sam_get_groups_of_sid\n"));
- SAFE_FREE(*groups);
- return NT_STATUS_NOT_IMPLEMENTED;
- }
-
- if (!NT_STATUS_IS_OK(nt_status = tmp_methods->sam_get_groups_of_sid(tmp_methods, access_token, sids, group_ctrl, &tmp_group_count, &tmp_groups))) {
- DEBUG(4,("sam_get_groups_of_sid in backend %s failed\n", tmp_methods->backendname));
- SAFE_FREE(*groups);
- return nt_status;
- }
-
- *groups = Realloc(*groups, ((*group_count) + tmp_group_count) * sizeof(SAM_GROUP_ENUM));
-
- memcpy(&(*groups)[*group_count], tmp_groups, tmp_group_count);
-
- SAFE_FREE(tmp_groups);
-
- *group_count += tmp_group_count;
-
- tmp_methods = tmp_methods->next;
- }
-
- return NT_STATUS_OK;
-}
-
-
diff --git a/source3/sam/sam_ads.c b/source3/sam/sam_ads.c
deleted file mode 100755
index 13e0369004..0000000000
--- a/source3/sam/sam_ads.c
+++ /dev/null
@@ -1,1378 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- Active Directory SAM backend, for simulate a W2K DC in mixed mode.
-
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Andrew Bartlett 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-
-#ifdef HAVE_LDAP
-
-static int sam_ads_debug_level = DBGC_SAM;
-
-#undef DBGC_CLASS
-#define DBGC_CLASS sam_ads_debug_level
-
-#ifndef FIXME
-#define FIXME( body ) { DEBUG(0,("FIXME: "));\
- DEBUGADD(0,(body));}
-#endif
-
-#define ADS_STATUS_OK ADS_ERROR(0)
-#define ADS_STATUS_UNSUCCESSFUL ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL)
-#define ADS_STATUS_NOT_IMPLEMENTED ADS_ERROR_NT(NT_STATUS_NOT_IMPLEMENTED)
-
-
-#define ADS_SUBTREE_BUILTIN "CN=Builtin,"
-#define ADS_SUBTREE_COMPUTERS "CN=Computers,"
-#define ADS_SUBTREE_DC "CN=Domain Controllers,"
-#define ADS_SUBTREE_USERS "CN=Users,"
-#define ADS_ROOT_TREE ""
-/* Here are private module structs and functions */
-
-typedef struct sam_ads_privates {
- ADS_STRUCT *ads_struct;
- TALLOC_CTX *mem_ctx;
- BOOL bind_plaintext;
- char *ads_bind_dn;
- char *ads_bind_pw;
- char *ldap_uri;
- /* did we need something more? */
-}SAM_ADS_PRIVATES;
-
-
-/* get only these LDAP attributes, witch we really need for an account */
-const char *account_attrs[] = { "objectSid",
- "objectGUID",
- "sAMAccountType",
- "sAMAcountName",
- "userPrincipalName",
- "accountExpires",
- "badPasswordTime",
- "badPwdCount",
- "lastLogoff",
- "lastLogon",
- "userWorkstations",
- "dBCSPwd",
- "unicodePwd",
- "pwdLastSet",
- "userAccountControl",
- "profilePath",
- "homeDrive",
- "scriptPath",
- "homeDirectory",
- "cn",
- "primaryGroupID",/* 513 */
- "nsNPAllowDialIn",/* TRUE */
- "userParameters",/* Dial Back number ...*/
- "codePage",/* 0 */
- "countryCode",/* 0 */
- "adminCount",/* 1 or 0 */
- "logonCount",/* 0 */
- "managedObjects",
- "memberOf",/* dn */
- "instanceType",/* 4 */
- "name", /* sync with cn */
- "description",
- /* "nTSecurityDescriptor", */
- NULL};
-
-/* get only these LDAP attributes, witch we really need for a group */
-const char *group_attrs[] = {"objectSid",
- /* "objectGUID", */
- "sAMAccountType",
- "sAMAcountName",
- "groupType",
- /* "member", */
- "description",
- "name", /* sync with cn */
- /* "nTSecurityDescriptor", */
- NULL};
-
-
-/***************************************************
- return our ads connection. We keep the connection
- open to make things faster
-****************************************************/
-static ADS_STATUS sam_ads_cached_connection(SAM_ADS_PRIVATES *privates)
-{
- ADS_STRUCT *ads_struct;
- ADS_STATUS ads_status;
-
- if (!privates->ads_struct) {
- privates->ads_struct = ads_init_simple();
- ads_struct = privates->ads_struct;
- ads_struct->server.ldap_uri = smb_xstrdup(privates->ldap_uri);
- if ((!privates->ads_bind_dn) || (!*privates->ads_bind_dn)) {
- ads_struct->auth.flags |= ADS_AUTH_ANON_BIND;
- } else {
- ads_struct->auth.user_name
- = smb_xstrdup(privates->ads_bind_dn);
- if (privates->ads_bind_pw) {
- ads_struct->auth.password
- = smb_xstrdup(privates->ads_bind_pw);
- }
- }
- if (privates->bind_plaintext) {
- ads_struct->auth.flags |= ADS_AUTH_SIMPLE_BIND;
- }
- } else {
- ads_struct = privates->ads_struct;
- }
-
- if (ads_struct->ld != NULL) {
- /* connection has been opened. ping server. */
- struct sockaddr_un addr;
- socklen_t len;
- int sd;
- if (ldap_get_option(ads_struct->ld, LDAP_OPT_DESC, &sd) == 0 &&
- getpeername(sd, (struct sockaddr *) &addr, &len) < 0) {
- /* the other end has died. reopen. */
- ldap_unbind_ext(ads_struct->ld, NULL, NULL);
- ads_struct->ld = NULL;
- }
- }
-
- if (ads_struct->ld != NULL) {
- DEBUG(5,("sam_ads_cached_connection: allready connected to the LDAP server\n"));
- return ADS_SUCCESS;
- }
-
- ads_status = ads_connect(ads_struct);
-
- ads_status = ads_server_info(ads_struct);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(0,("Can't set server info: %s\n",ads_errstr(ads_status)));
- /* return ads_status; */ FIXME("for now we only warn!\n");
- }
-
- DEBUG(2, ("sam_ads_cached_connection: succesful connection to the LDAP server\n"));
- return ADS_SUCCESS;
-}
-
-static ADS_STATUS sam_ads_do_search(SAM_ADS_PRIVATES *privates, const char *bind_path, int scope, const char *exp, const char **attrs, void **res)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
-
- ads_status = sam_ads_cached_connection(privates);
- if (!ADS_ERR_OK(ads_status))
- return ads_status;
-
- return ads_do_search_retry(privates->ads_struct, bind_path, scope, exp, attrs, res);
-}
-
-
-/*********************************************
-here we have to check the update serial number
- - this is the core of the ldap cache
-*********************************************/
-static ADS_STATUS sam_ads_usn_is_valid(SAM_ADS_PRIVATES *privates, uint32 usn_in, uint32 *usn_out)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
-
- SAM_ASSERT(privates && privates->ads_struct && usn_out);
-
- ads_status = ads_USN(privates->ads_struct, usn_out);
- if (!ADS_ERR_OK(ads_status))
- return ads_status;
-
- if (*usn_out == usn_in)
- return ADS_SUCCESS;
-
- return ads_status;
-}
-
-/***********************************************
-Initialize SAM_ACCOUNT_HANDLE from an ADS query
-************************************************/
-/* not ready :-( */
-static ADS_STATUS ads_entry2sam_account_handle(SAM_ADS_PRIVATES *privates, SAM_ACCOUNT_HANDLE *account ,void *msg)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_NO_SUCH_USER);
- NTSTATUS nt_status = NT_STATUS_NO_SUCH_USER;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = account->mem_ctx;
- char *tmp_str = NULL;
-
- SAM_ASSERT(privates && ads_struct && account && mem_ctx && msg);
-
- FIXME("should we really use ads_pull_username()(or ads_pull_string())?\n");
- if ((account->private.account_name = ads_pull_username(ads_struct, mem_ctx, msg))==NULL) {
- DEBUG(0,("ads_pull_username failed\n"));
- return ADS_ERROR_NT(NT_STATUS_NO_SUCH_USER);
- }
-
- if ((account->private.full_name = ads_pull_string(ads_struct, mem_ctx, msg,"name"))==NULL) {
- DEBUG(3,("ads_pull_string for 'name' failed - skip\n"));
- }
-
- if ((account->private.acct_desc = ads_pull_string(ads_struct, mem_ctx, msg,"description"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'acct_desc' failed - skip\n"));
- }
-
- if ((account->private.home_dir = ads_pull_string(ads_struct, mem_ctx, msg,"homeDirectory"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'homeDirectory' failed - skip\n"));
- }
-
- if ((account->private.dir_drive = ads_pull_string(ads_struct, mem_ctx, msg,"homeDrive"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'homeDrive' failed - skip\n"));
- }
-
- if ((account->private.profile_path = ads_pull_string(ads_struct, mem_ctx, msg,"profilePath"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'profilePath' failed - skip\n"));
- }
-
- if ((account->private.logon_script = ads_pull_string(ads_struct, mem_ctx, msg,"scriptPath"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'scriptPath' failed - skip\n"));
- }
-
- FIXME("check 'nsNPAllowDialIn' for munged_dial!\n");
- if ((account->private.munged_dial = ads_pull_string(ads_struct, mem_ctx, msg,"userParameters"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'userParameters' failed - skip\n"));
- }
-
- if ((account->private.unix_home_dir = ads_pull_string(ads_struct, mem_ctx, msg,"msSFUHomeDrirectory"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'msSFUHomeDrirectory' failed - skip\n"));
- }
-
-#if 0
- FIXME("use function intern mem_ctx for pwdLastSet\n");
- if ((tmp_str = ads_pull_string(ads_struct, mem_ctx, msg,"pwdLastSet"))!=NULL) {
- DEBUG(3,("ads_pull_string for 'pwdLastSet' failed - skip\n"));
- } else {
- account->private.pass_last_set_time = ads_parse_nttime(tmp_str);
- tmp_str = NULL;
-
- }
-#endif
-
-#if 0
-typedef struct sam_account_handle {
- TALLOC_CTX *mem_ctx;
- uint32 access_granted;
- const struct sam_methods *current_sam_methods; /* sam_methods creating this handle */
- void (*free_fn)(struct sam_account_handle **);
- struct sam_account_data {
- uint32 init_flag;
- NTTIME logon_time; /* logon time */
- NTTIME logoff_time; /* logoff time */
- NTTIME kickoff_time; /* kickoff time */
- NTTIME pass_last_set_time; /* password last set time */
- NTTIME pass_can_change_time; /* password can change time */
- NTTIME pass_must_change_time; /* password must change time */
- char * account_name; /* account_name string */
- SAM_DOMAIN_HANDLE * domain; /* domain of account */
- char *full_name; /* account's full name string */
- char *unix_home_dir; /* UNIX home directory string */
- char *home_dir; /* home directory string */
- char *dir_drive; /* home directory drive string */
- char *logon_script; /* logon script string */
- char *profile_path; /* profile path string */
- char *acct_desc; /* account description string */
- char *workstations; /* login from workstations string */
- char *unknown_str; /* don't know what this is, yet. */
- char *munged_dial; /* munged path name and dial-back tel number */
- DOM_SID account_sid; /* Primary Account SID */
- DOM_SID group_sid; /* Primary Group SID */
- DATA_BLOB lm_pw; /* .data is Null if no password */
- DATA_BLOB nt_pw; /* .data is Null if no password */
- char *plaintext_pw; /* if Null not available */
- uint16 acct_ctrl; /* account info (ACB_xxxx bit-mask) */
- uint32 unknown_1; /* 0x00ff ffff */
- uint16 logon_divs; /* 168 - number of hours in a week */
- uint32 hours_len; /* normally 21 bytes */
- uint8 hours[MAX_HOURS_LEN];
- uint32 unknown_2; /* 0x0002 0000 */
- uint32 unknown_3; /* 0x0000 04ec */
- } private;
-} SAM_ACCOUNT_HANDLE;
-#endif
-
- return ads_status;
-}
-
-
-/***********************************************
-Initialize SAM_GROUP_ENUM from an ads entry
-************************************************/
-/* not ready :-( */
-static ADS_STATUS ads_entry2sam_group_enum(SAM_ADS_PRIVATES *privates, TALLOC_CTX *mem_ctx, SAM_GROUP_ENUM **group_enum,const void *entry)
-{
- ADS_STATUS ads_status = ADS_STATUS_UNSUCCESSFUL;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- SAM_GROUP_ENUM __group_enum;
- SAM_GROUP_ENUM *_group_enum = &__group_enum;
-
- SAM_ASSERT(privates && ads_struct && mem_ctx && group_enum && entry);
-
- *group_enum = _group_enum;
-
- DEBUG(3,("sam_ads: ads_entry2sam_account_handle\n"));
-
- if (!ads_pull_sid(ads_struct, &entry, "objectSid", &(_group_enum->sid))) {
- DEBUG(0,("No sid for!?\n"));
- return ADS_STATUS_UNSUCCESSFUL;
- }
-
- if (!(_group_enum->group_name = ads_pull_string(ads_struct, mem_ctx, &entry, "sAMAccountName"))) {
- DEBUG(0,("No groupname found"));
- return ADS_STATUS_UNSUCCESSFUL;
- }
-
- if (!(_group_enum->group_desc = ads_pull_string(ads_struct, mem_ctx, &entry, "desciption"))) {
- DEBUG(0,("No description found"));
- return ADS_STATUS_UNSUCCESSFUL;
- }
-
- DEBUG(0,("sAMAccountName: %s\ndescription: %s\nobjectSid: %s\n",
- _group_enum->group_name,
- _group_enum->group_desc,
- sid_string_static(&(_group_enum->sid))
- ));
-
- return ads_status;
-}
-
-static ADS_STATUS sam_ads_access_check(SAM_ADS_PRIVATES *privates, const SEC_DESC *sd, const NT_USER_TOKEN *access_token, uint32 access_desired, uint32 *acc_granted)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_ACCESS_DENIED);
- NTSTATUS nt_status;
- uint32 my_acc_granted;
-
- SAM_ASSERT(privates && sd && access_token);
- /* acc_granted can be set to NULL */
-
- /* the steps you need are:
- 1. get_sec_desc for sid
- 2. se_map_generic(accessdesired, generic_mapping)
- 3. se_access_check() */
-
- if (!se_access_check(sd, access_token, access_desired, (acc_granted)?acc_granted:&my_acc_granted, &nt_status)) {
- DEBUG(3,("sam_ads_access_check: ACCESS DENIED\n"));
- ads_status = ADS_ERROR_NT(nt_status);
- return ads_status;
- }
- ads_status = ADS_ERROR_NT(nt_status);
- return ads_status;
-}
-
-static ADS_STATUS sam_ads_get_tree_sec_desc(SAM_ADS_PRIVATES *privates, const char *subtree, SEC_DESC **sd)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = privates->mem_ctx;
- char *search_path;
- void *sec_desc_res;
- void *sec_desc_msg;
- const char *sec_desc_attrs[] = {"nTSecurityDescriptor",NULL};
-
- SAM_ASSERT(privates && ads_struct && mem_ctx && sd);
- *sd = NULL;
-
- if (subtree) {
- asprintf(&search_path, "%s%s",subtree,ads_struct->config.bind_path);
- } else {
- asprintf(&search_path, "%s","");
- }
- ads_status = sam_ads_do_search(privates, search_path, LDAP_SCOPE_BASE, "(objectClass=*)", sec_desc_attrs, &sec_desc_res);
- SAFE_FREE(search_path);
- if (!ADS_ERR_OK(ads_status))
- return ads_status;
-
- if ((sec_desc_msg = ads_first_entry(ads_struct, sec_desc_res))==NULL) {
- ads_status = ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- return ads_status;
- }
-
- if (!ads_pull_sd(ads_struct, mem_ctx, sec_desc_msg, sec_desc_attrs[0], sd)) {
- *sd = NULL;
- ads_status = ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- return ads_status;
- }
-
- return ads_status;
-}
-
-static ADS_STATUS sam_ads_account_policy_get(SAM_ADS_PRIVATES *privates, int field, uint32 *value)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- ADS_STRUCT *ads_struct = privates->ads_struct;
- void *ap_res;
- void *ap_msg;
- const char *ap_attrs[] = {"minPwdLength",/* AP_MIN_PASSWORD_LEN */
- "pwdHistoryLength",/* AP_PASSWORD_HISTORY */
- "AP_USER_MUST_LOGON_TO_CHG_PASS",/* AP_USER_MUST_LOGON_TO_CHG_PASS */
- "maxPwdAge",/* AP_MAX_PASSWORD_AGE */
- "minPwdAge",/* AP_MIN_PASSWORD_AGE */
- "lockoutDuration",/* AP_LOCK_ACCOUNT_DURATION */
- "AP_RESET_COUNT_TIME",/* AP_RESET_COUNT_TIME */
- "AP_BAD_ATTEMPT_LOCKOUT",/* AP_BAD_ATTEMPT_LOCKOUT */
- "AP_TIME_TO_LOGOUT",/* AP_TIME_TO_LOGOUT */
- NULL};
- /*lockOutObservationWindow
- lockoutThreshold $ pwdProperties*/
- static uint32 ap[9];
- static uint32 ap_usn = 0;
- uint32 tmp_usn = 0;
-
- SAM_ASSERT(privates && ads_struct && value);
-
- FIXME("We need to decode all account_policy attributes!\n");
-
- ads_status = sam_ads_usn_is_valid(privates,ap_usn,&tmp_usn);
- if (!ADS_ERR_OK(ads_status)) {
- ads_status = sam_ads_do_search(privates, ads_struct->config.bind_path, LDAP_SCOPE_BASE, "(objectClass=*)", ap_attrs, &ap_res);
- if (!ADS_ERR_OK(ads_status))
- return ads_status;
-
- if (ads_count_replies(ads_struct, ap_res) != 1) {
- ads_msgfree(ads_struct, ap_res);
- return ADS_ERROR(LDAP_NO_RESULTS_RETURNED);
- }
-
- if (!(ap_msg = ads_first_entry(ads_struct, ap_res))) {
- ads_msgfree(ads_struct, ap_res);
- return ADS_ERROR(LDAP_NO_RESULTS_RETURNED);
- }
-
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[0], &ap[0])) {
- /* AP_MIN_PASSWORD_LEN */
- ap[0] = MINPASSWDLENGTH;/* 5 chars minimum */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[1], &ap[1])) {
- /* AP_PASSWORD_HISTORY */
- ap[1] = 0;/* don't keep any old password */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[2], &ap[2])) {
- /* AP_USER_MUST_LOGON_TO_CHG_PASS */
- ap[2] = 0;/* don't force user to logon */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[3], &ap[3])) {
- /* AP_MAX_PASSWORD_AGE */
- ap[3] = MAX_PASSWORD_AGE;/* 21 days */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[4], &ap[4])) {
- /* AP_MIN_PASSWORD_AGE */
- ap[4] = 0;/* 0 days */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[5], &ap[5])) {
- /* AP_LOCK_ACCOUNT_DURATION */
- ap[5] = 0;/* lockout for 0 minutes */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[6], &ap[6])) {
- /* AP_RESET_COUNT_TIME */
- ap[6] = 0;/* reset immediatly */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[7], &ap[7])) {
- /* AP_BAD_ATTEMPT_LOCKOUT */
- ap[7] = 0;/* don't lockout */
- }
- if (!ads_pull_uint32(ads_struct, ap_msg, ap_attrs[8], &ap[8])) {
- /* AP_TIME_TO_LOGOUT */
- ap[8] = -1;/* don't force logout */
- }
-
- ads_msgfree(ads_struct, ap_res);
- ap_usn = tmp_usn;
- }
-
- switch(field) {
- case AP_MIN_PASSWORD_LEN:
- *value = ap[0];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_PASSWORD_HISTORY:
- *value = ap[1];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_USER_MUST_LOGON_TO_CHG_PASS:
- *value = ap[2];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_MAX_PASSWORD_AGE:
- *value = ap[3];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_MIN_PASSWORD_AGE:
- *value = ap[4];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_LOCK_ACCOUNT_DURATION:
- *value = ap[5];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_RESET_COUNT_TIME:
- *value = ap[6];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_BAD_ATTEMPT_LOCKOUT:
- *value = ap[7];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- case AP_TIME_TO_LOGOUT:
- *value = ap[8];
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- break;
- default: *value = 0; break;
- }
-
- return ads_status;
-}
-
-
-/**********************************
-Now the functions off the SAM API
-***********************************/
-
-/* General API */
-static NTSTATUS sam_ads_get_sec_desc(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token,
- const DOM_SID *sid, SEC_DESC **sd)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx;
- char *sidstr,*filter;
- void *sec_desc_res;
- void *sec_desc_msg;
- const char *sec_desc_attrs[] = {"nTSecurityDescriptor",NULL};
- fstring sid_str;
- SEC_DESC *my_sd;
-
- SAM_ASSERT(sam_method && access_token && sid && sd);
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_ROOT_TREE, &my_sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, my_sd, access_token, GENERIC_RIGHTS_DOMAIN_READ, NULL);
-
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- sidstr = sid_binstring(sid);
- if (asprintf(&filter, "(objectSid=%s)", sidstr) == -1) {
- SAFE_FREE(sidstr);
- return NT_STATUS_NO_MEMORY;
- }
-
- SAFE_FREE(sidstr);
-
- ads_status = sam_ads_do_search(privates,ads_struct->config.bind_path,
- LDAP_SCOPE_SUBTREE, filter, sec_desc_attrs,
- &sec_desc_res);
- SAFE_FREE(filter);
-
- if (!ADS_ERR_OK(ads_status)) {
- return ads_ntstatus(ads_status);
- }
-
- if (!(mem_ctx = talloc_init("sec_desc parse in sam_ads"))) {
- DEBUG(1, ("talloc_init() failed for sec_desc parse context in sam_ads"));
- ads_msgfree(ads_struct, sec_desc_res);
- return NT_STATUS_NO_MEMORY;
- }
-
- if (ads_count_replies(ads_struct, sec_desc_res) != 1) {
- DEBUG(1,("sam_ads_get_sec_desc: duplicate or 0 results for sid %s\n",
- sid_to_string(sid_str, sid)));
- talloc_destroy(mem_ctx);
- ads_msgfree(ads_struct, sec_desc_res);
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!(sec_desc_msg = ads_first_entry(ads_struct, sec_desc_res))) {
- talloc_destroy(mem_ctx);
- ads_msgfree(ads_struct, sec_desc_res);
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!ads_pull_sd(ads_struct, mem_ctx, sec_desc_msg, sec_desc_attrs[0], sd)) {
- ads_status = ADS_ERROR_NT(NT_STATUS_INVALID_PARAMETER);
- talloc_destroy(mem_ctx);
- ads_msgfree(ads_struct, sec_desc_res);
- return ads_ntstatus(ads_status);
- }
-
- /* now, were we allowed to see the SD we just got? */
-
- ads_msgfree(ads_struct, sec_desc_res);
- talloc_destroy(mem_ctx);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_set_sec_desc(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token,
- const DOM_SID *sid, const SEC_DESC *sd)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-
-static NTSTATUS sam_ads_lookup_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token,
- TALLOC_CTX *mem_ctx, const DOM_SID *sid, char **name,
- enum SID_NAME_USE *type)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- SEC_DESC *my_sd;
-
- SAM_ASSERT(sam_method && access_token && mem_ctx && sid && name && type);
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_ROOT_TREE, &my_sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, my_sd, access_token, GENERIC_RIGHTS_DOMAIN_READ, NULL);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- return ads_sid_to_name(ads_struct, mem_ctx, sid, name, type);
-}
-
-static NTSTATUS sam_ads_lookup_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token,
- const char *name, DOM_SID *sid, enum SID_NAME_USE *type)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- SEC_DESC *my_sd;
-
- SAM_ASSERT(sam_method && access_token && name && sid && type);
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_ROOT_TREE, &my_sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, my_sd, access_token, GENERIC_RIGHTS_DOMAIN_READ, NULL);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- return ads_name_to_sid(ads_struct, name, sid, type);
-}
-
-
-/* Domain API */
-
-static NTSTATUS sam_ads_update_domain(const SAM_METHODS *sam_method, const SAM_DOMAIN_HANDLE *domain)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_get_domain_handle(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token,
- const uint32 access_desired, SAM_DOMAIN_HANDLE **domain)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- TALLOC_CTX *mem_ctx = privates->mem_ctx; /*Fix me is this right??? */
- SAM_DOMAIN_HANDLE *dom_handle = NULL;
- SEC_DESC *sd;
- uint32 acc_granted;
- uint32 tmp_value;
-
- DEBUG(5,("sam_ads_get_domain_handle: %d\n",__LINE__));
-
- SAM_ASSERT(sam_method && access_token && domain);
-
- (*domain) = NULL;
-
- if ((dom_handle = talloc(mem_ctx, sizeof(SAM_DOMAIN_HANDLE))) == NULL) {
- DEBUG(0,("failed to talloc dom_handle\n"));
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- return ads_ntstatus(ads_status);
- }
-
- ZERO_STRUCTP(dom_handle);
-
- dom_handle->mem_ctx = mem_ctx; /*Fix me is this right??? */
- dom_handle->free_fn = NULL;
- dom_handle->current_sam_methods = sam_method;
-
- /* check if access can be granted as requested */
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_ROOT_TREE, &sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, sd, access_token, access_desired, &acc_granted);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- dom_handle->access_granted = acc_granted;
-
- /* fill all the values of dom_handle */
- sid_copy(&dom_handle->private.sid, &sam_method->domain_sid);
- dom_handle->private.name = smb_xstrdup(sam_method->domain_name);
- dom_handle->private.servername = "WHOKNOWS"; /* what is the servername */
-
- /*Fix me: sam_ads_account_policy_get() return ADS_STATUS! */
- ads_status = sam_ads_account_policy_get(privates, AP_MAX_PASSWORD_AGE, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for max password age. Useing default\n"));
- tmp_value = MAX_PASSWORD_AGE;
- }
- unix_to_nt_time_abs(&dom_handle->private.max_passwordage,tmp_value);
-
- ads_status = sam_ads_account_policy_get(privates, AP_MIN_PASSWORD_AGE, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for min password age. Useing default\n"));
- tmp_value = 0;
- }
- unix_to_nt_time_abs(&dom_handle->private.min_passwordage, tmp_value);
-
- ads_status = sam_ads_account_policy_get(privates, AP_LOCK_ACCOUNT_DURATION, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for lockout duration. Useing default\n"));
- tmp_value = 0;
- }
- unix_to_nt_time_abs(&dom_handle->private.lockout_duration, tmp_value);
-
- ads_status = sam_ads_account_policy_get(privates, AP_RESET_COUNT_TIME, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for time till locout count is reset. Useing default\n"));
- tmp_value = 0;
- }
- unix_to_nt_time_abs(&dom_handle->private.reset_count, tmp_value);
-
- ads_status = sam_ads_account_policy_get(privates, AP_MIN_PASSWORD_LEN, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for min password length. Useing default\n"));
- tmp_value = 0;
- }
- dom_handle->private.min_passwordlength = (uint16)tmp_value;
-
- ads_status = sam_ads_account_policy_get(privates, AP_PASSWORD_HISTORY, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed password history. Useing default\n"));
- tmp_value = 0;
- }
- dom_handle->private.password_history = (uint16)tmp_value;
-
- ads_status = sam_ads_account_policy_get(privates, AP_BAD_ATTEMPT_LOCKOUT, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for bad attempts till lockout. Useing default\n"));
- tmp_value = 0;
- }
- dom_handle->private.lockout_count = (uint16)tmp_value;
-
- ads_status = sam_ads_account_policy_get(privates, AP_TIME_TO_LOGOUT, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for force logout. Useing default\n"));
- tmp_value = -1;
- }
-
- ads_status = sam_ads_account_policy_get(privates, AP_USER_MUST_LOGON_TO_CHG_PASS, &tmp_value);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(4,("sam_ads_account_policy_get failed for user must login to change password. Useing default\n"));
- tmp_value = 0;
- }
-
- /* should the real values of num_accounts, num_groups and num_aliases be retreved?
- * I think it is to expensive to bother
- */
- dom_handle->private.num_accounts = 3;
- dom_handle->private.num_groups = 4;
- dom_handle->private.num_aliases = 5;
-
- *domain = dom_handle;
-
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
- return ads_ntstatus(ads_status);
-}
-
-/* Account API */
-static NTSTATUS sam_ads_create_account(const SAM_METHODS *sam_method,
- const NT_USER_TOKEN *access_token, uint32 access_desired,
- const char *account_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- SEC_DESC *sd = NULL;
- uint32 acc_granted;
-
- SAM_ASSERT(sam_method && privates && access_token && account_name && account);
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_SUBTREE_USERS, &sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, sd, access_token, access_desired, &acc_granted);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = ADS_ERROR_NT(sam_init_account(account));
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- (*account)->access_granted = acc_granted;
-
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_add_account(const SAM_METHODS *sam_method, const SAM_ACCOUNT_HANDLE *account)
-{
- ADS_STATUS ads_status = ADS_ERROR(LDAP_NO_MEMORY);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = privates->mem_ctx;
- ADS_MODLIST mods;
- uint16 acct_ctrl;
- char *new_dn;
- SEC_DESC *sd;
- uint32 acc_granted;
-
- SAM_ASSERT(sam_method && account);
-
- ads_status = ADS_ERROR_NT(sam_get_account_acct_ctrl(account,&acct_ctrl));
- if (!ADS_ERR_OK(ads_status))
- goto done;
-
- if ((acct_ctrl & ACB_WSTRUST)||(acct_ctrl & ACB_SVRTRUST)) {
- /* Computer account */
- char *name,*controlstr;
- char *hostname,*host_upn,*host_spn;
- const char *objectClass[] = {"top", "person", "organizationalPerson",
- "user", "computer", NULL};
-
- ads_status = ADS_ERROR_NT(sam_get_account_name(account,&name));
- if (!ADS_ERR_OK(ads_status))
- goto done;
-
- if (!(host_upn = talloc_asprintf(mem_ctx, "%s@%s", name, ads_struct->config.realm))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(new_dn = talloc_asprintf(mem_ctx, "CN=%s,CN=Computers,%s", hostname,
- ads_struct->config.bind_path))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(controlstr = talloc_asprintf(mem_ctx, "%u", ads_acb2uf(acct_ctrl)))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(mods = ads_init_mods(mem_ctx))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- ads_status = ads_mod_str(mem_ctx, &mods, "cn", hostname);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_strlist(mem_ctx, &mods, "objectClass", objectClass);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "userPrincipalName", host_upn);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "displayName", hostname);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "sAMAccountName", name);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "userAccountControl", controlstr);
- if (!ADS_ERR_OK(ads_status))
- goto done;
-
- ads_status = ads_mod_str(mem_ctx, &mods, "servicePrincipalName", host_spn);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "dNSHostName", hostname);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "userAccountControl", controlstr);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- /* ads_status = ads_mod_str(mem_ctx, &mods, "operatingSystem", "Samba");
- if (!ADS_ERR_OK(ads_status))
- goto done;
- *//* ads_status = ads_mod_str(mem_ctx, &mods, "operatingSystemVersion", VERSION);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- */
- /* End Computer account */
- } else {
- /* User account*/
- char *upn, *controlstr;
- char *name, *fullname;
- const char *objectClass[] = {"top", "person", "organizationalPerson",
- "user", NULL};
-
- ads_status = ADS_ERROR_NT(sam_get_account_name(account,&name));
- if (!ADS_ERR_OK(ads_status))
- goto done;
-
- ads_status = ADS_ERROR_NT(sam_get_account_fullname(account,&fullname));
- if (!ADS_ERR_OK(ads_status))
- goto done;
-
- if (!(upn = talloc_asprintf(mem_ctx, "%s@%s", name, ads_struct->config.realm))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(new_dn = talloc_asprintf(mem_ctx, "CN=%s,CN=Users,%s", fullname,
- ads_struct->config.bind_path))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(controlstr = talloc_asprintf(mem_ctx, "%u", ads_acb2uf(acct_ctrl)))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- if (!(mods = ads_init_mods(mem_ctx))) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- goto done;
- }
-
- ads_status = ads_mod_str(mem_ctx, &mods, "cn", fullname);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_strlist(mem_ctx, &mods, "objectClass", objectClass);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "userPrincipalName", upn);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "displayName", fullname);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "sAMAccountName", name);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- ads_status = ads_mod_str(mem_ctx, &mods, "userAccountControl", controlstr);
- if (!ADS_ERR_OK(ads_status))
- goto done;
- }/* End User account */
-
- /* Finally at the account */
- ads_status = ads_gen_add(ads_struct, new_dn, mods);
-
-done:
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_update_account(const SAM_METHODS *sam_method, const SAM_ACCOUNT_HANDLE *account)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_delete_account(const SAM_METHODS *sam_method, const SAM_ACCOUNT_HANDLE *account)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
-
-
-
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_enum_accounts(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-#if 0
-static NTSTATUS sam_ads_get_account_by_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *account_sid, SAM_ACCOUNT_HANDLE **account)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = privates->mem_ctx;
- SEC_DESC *sd = NULL;
- uint32 acc_granted;
-
- SAM_ASSERT(sam_method && privates && ads_struct && access_token && account_sid && account);
-
- ads_status = ADS_ERROR_NT(sam_ads_get_sec_desc(sam_method, access_token, account_sid, &my_sd));
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, sd, access_token, access_desired, &acc_granted);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = ADS_ERROR_NT(sam_init_account(account));
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- (*account)->access_granted = acc_granted;
-
- return ads_ntstatus(ads_status);
-}
-#else
-static NTSTATUS sam_ads_get_account_by_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *account_sid, SAM_ACCOUNT_HANDLE **account)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-#endif
-
-#if 0
-static NTSTATUS sam_ads_get_account_by_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const char *account_name, SAM_ACCOUNT_HANDLE **account)
-{
- ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = privates->mem_ctx;
- SEC_DESC *sd = NULL;
- uint32 acc_granted;
-
- SAM_ASSERT(sam_method && privates && ads_struct && access_token && account_name && account);
-
- ads_status = sam_ads_get_tree_sec_desc(privates, ADS_ROOT_TREE, &sd);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = sam_ads_access_check(privates, sd, access_token, access_desired, &acc_granted);
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- ads_status = ADS_ERROR_NT(sam_init_account(account));
- if (!ADS_ERR_OK(ads_status))
- return ads_ntstatus(ads_status);
-
- (*account)->access_granted = acc_granted;
-
- return ads_ntstatus(ads_status);
-}
-#else
-static NTSTATUS sam_ads_get_account_by_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const char *account_name, SAM_ACCOUNT_HANDLE **account)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-#endif
-
-/* Group API */
-static NTSTATUS sam_ads_create_group(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *group_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_add_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_update_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_delete_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_enum_groups(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- SAM_ADS_PRIVATES *privates = (struct sam_ads_privates *)sam_method->private_data;
- ADS_STRUCT *ads_struct = privates->ads_struct;
- TALLOC_CTX *mem_ctx = privates->mem_ctx;
- void *res = NULL;
- void *msg = NULL;
- char *filter = NULL;
- int i = 0;
-
- /* get only these LDAP attributes, witch we really need for a group */
- const char *group_enum_attrs[] = {"objectSid",
- "description",
- "sAMAcountName",
- NULL};
-
- SAM_ASSERT(sam_method && access_token && groups_count && groups);
-
- *groups_count = 0;
-
- DEBUG(3,("ads: enum_dom_groups\n"));
-
- FIXME("get only group from the wanted Type!\n");
- asprintf(&filter, "(&(objectClass=group)(groupType=%s))", "*");
- ads_status = sam_ads_do_search(privates, ads_struct->config.bind_path, LDAP_SCOPE_SUBTREE, filter, group_enum_attrs, &res);
- if (!ADS_ERR_OK(ads_status)) {
- DEBUG(1,("enum_groups ads_search: %s\n", ads_errstr(ads_status)));
- }
-
- *groups_count = ads_count_replies(ads_struct, res);
- if (*groups_count == 0) {
- DEBUG(1,("enum_groups: No groups found\n"));
- }
-
- (*groups) = talloc_zero(mem_ctx, (*groups_count) * sizeof(**groups));
- if (!*groups) {
- ads_status = ADS_ERROR_NT(NT_STATUS_NO_MEMORY);
- }
-
- for (msg = ads_first_entry(ads_struct, res); msg; msg = ads_next_entry(ads_struct, msg)) {
- uint32 grouptype;
-
- if (!ads_pull_uint32(ads_struct, msg, "groupType", &grouptype)) {
- ;
- } else {
- (*groups)->group_ctrl = ads_gtype2gcb(grouptype);
- }
-
- if (!((*groups)->group_name = ads_pull_string(ads_struct, mem_ctx, msg, "sAMAccountName"))) {
- ;
- }
-
- if (!((*groups)->group_desc = ads_pull_string(ads_struct, mem_ctx, msg, "description"))) {
- ;
- }
-
- if (!ads_pull_sid(ads_struct, msg, "objectSid", &((*groups)->sid))) {
- DEBUG(1,("No sid for group %s !?\n", (*groups)->group_name));
- continue;
- }
-
- i++;
- }
-
- (*groups_count) = i;
-
- ads_status = ADS_ERROR_NT(NT_STATUS_OK);
-
- DEBUG(3,("ads enum_dom_groups gave %d entries\n", (*groups_count)));
-
- if (res) ads_msgfree(ads_struct, res);
-
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_get_group_by_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_get_group_by_name(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_add_member_to_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_delete_member_from_group(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_enum_groupmembers(const SAM_METHODS *sam_method, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-static NTSTATUS sam_ads_get_groups_of_sid(const SAM_METHODS *sam_method, const NT_USER_TOKEN *access_token, const DOM_SID **sids, const uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups)
-{
- ADS_STATUS ads_status = ADS_STATUS_NOT_IMPLEMENTED;
- DEBUG(0,("sam_ads: %s was called!\n",FUNCTION_MACRO));
- SAM_ASSERT(sam_method);
- return ads_ntstatus(ads_status);
-}
-
-/**********************************
-Free our private data
-***********************************/
-static void sam_ads_free_private_data(void **vp)
-{
- SAM_ADS_PRIVATES **sam_ads_state = (SAM_ADS_PRIVATES **)vp;
-
- if ((*sam_ads_state)->ads_struct->ld) {
- ldap_unbind((*sam_ads_state)->ads_struct->ld);
- }
-
- ads_destroy(&((*sam_ads_state)->ads_struct));
-
- talloc_destroy((*sam_ads_state)->mem_ctx);
- FIXME("maybe we must free some other stuff here\n");
-
- *sam_ads_state = NULL;
-}
-
-
-
-/*****************************************************
-Init the ADS SAM backend
-******************************************************/
-NTSTATUS sam_init_ads(SAM_METHODS *sam_method, const char *module_params)
-{
- ADS_STATUS ads_status;
- SAM_ADS_PRIVATES *sam_ads_state;
- TALLOC_CTX *mem_ctx;
-
- SAM_ASSERT(sam_method && sam_method->parent);
-
- mem_ctx = sam_method->parent->mem_ctx;
-
- /* Here the SAM API functions of the sam_ads module */
-
- /* General API */
-
- sam_method->sam_get_sec_desc = sam_ads_get_sec_desc;
- sam_method->sam_set_sec_desc = sam_ads_set_sec_desc;
-
- sam_method->sam_lookup_sid = sam_ads_lookup_sid;
- sam_method->sam_lookup_name = sam_ads_lookup_name;
-
- /* Domain API */
-
- sam_method->sam_update_domain = sam_ads_update_domain;
- sam_method->sam_get_domain_handle = sam_ads_get_domain_handle;
-
- /* Account API */
-
- sam_method->sam_create_account = sam_ads_create_account;
- sam_method->sam_add_account = sam_ads_add_account;
- sam_method->sam_update_account = sam_ads_update_account;
- sam_method->sam_delete_account = sam_ads_delete_account;
- sam_method->sam_enum_accounts = sam_ads_enum_accounts;
-
- sam_method->sam_get_account_by_sid = sam_ads_get_account_by_sid;
- sam_method->sam_get_account_by_name = sam_ads_get_account_by_name;
-
- /* Group API */
-
- sam_method->sam_create_group = sam_ads_create_group;
- sam_method->sam_add_group = sam_ads_add_group;
- sam_method->sam_update_group = sam_ads_update_group;
- sam_method->sam_delete_group = sam_ads_delete_group;
- sam_method->sam_enum_groups = sam_ads_enum_groups;
- sam_method->sam_get_group_by_sid = sam_ads_get_group_by_sid;
- sam_method->sam_get_group_by_name = sam_ads_get_group_by_name;
-
- sam_method->sam_add_member_to_group = sam_ads_add_member_to_group;
- sam_method->sam_delete_member_from_group = sam_ads_delete_member_from_group;
- sam_method->sam_enum_groupmembers = sam_ads_enum_groupmembers;
-
- sam_method->sam_get_groups_of_sid = sam_ads_get_groups_of_sid;
-
- sam_ads_state = talloc_zero(mem_ctx, sizeof(SAM_ADS_PRIVATES));
- if (!sam_ads_state) {
- DEBUG(0, ("talloc() failed for sam_ads private_data!\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- if (!(sam_ads_state->mem_ctx = talloc_init("sam_ads_method"))) {
- DEBUG(0, ("talloc_init() failed for sam_ads_state->mem_ctx\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- sam_ads_state->ads_bind_dn = talloc_strdup(sam_ads_state->mem_ctx, lp_parm_string(NULL,"sam_ads","bind as"));
- sam_ads_state->ads_bind_pw = talloc_strdup(sam_ads_state->mem_ctx, lp_parm_string(NULL,"sam_ads","bind pw"));
-
- sam_ads_state->bind_plaintext = strequal(lp_parm_string(NULL, "sam_ads", "plaintext bind"), "yes");
-
- if (!sam_ads_state->ads_bind_dn || !sam_ads_state->ads_bind_pw) {
- DEBUG(0, ("talloc_strdup() failed for bind dn or password\n"));
- return NT_STATUS_NO_MEMORY;
- }
-
- /* Maybe we should not check the result here? Server down on startup? */
-
- if (module_params && *module_params) {
- sam_ads_state->ldap_uri = talloc_strdup(sam_ads_state->mem_ctx, module_params);
- if (!sam_ads_state->ldap_uri) {
- DEBUG(0, ("talloc_strdup() failed for bind dn or password\n"));
- return NT_STATUS_NO_MEMORY;
- }
- } else {
- sam_ads_state->ldap_uri = "ldapi://";
- }
-
- ads_status = sam_ads_cached_connection(sam_ads_state);
- if (!ADS_ERR_OK(ads_status)) {
- return ads_ntstatus(ads_status);
- }
-
- sam_method->private_data = sam_ads_state;
- sam_method->free_private_data = sam_ads_free_private_data;
-
- sam_ads_debug_level = debug_add_class("sam_ads");
- if (sam_ads_debug_level == -1) {
- sam_ads_debug_level = DBGC_ALL;
- DEBUG(0, ("sam_ads: Couldn't register custom debugging class!\n"));
- } else DEBUG(2, ("sam_ads: Debug class number of 'sam_ads': %d\n", sam_ads_debug_level));
-
- DEBUG(5, ("Initializing sam_ads\n"));
- if (module_params)
- DEBUG(10, ("Module Parameters for Domain %s[%s]: %s\n", sam_method->domain_name, sam_method->domain_name, module_params));
- return NT_STATUS_OK;
-}
-
-#else /* HAVE_LDAP */
-void sam_ads_dummy(void)
-{
- DEBUG(0,("sam_ads: not supported!\n"));
-}
-#endif /* HAVE_LDAP */
diff --git a/source3/sam/sam_skel.c b/source3/sam/sam_skel.c
deleted file mode 100644
index b4d64bb6da..0000000000
--- a/source3/sam/sam_skel.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- this is a skeleton for SAM backend modules.
-
- Copyright (C) Stefan (metze) Metzmacher 2002
- Copyright (C) Jelmer Vernooij 2002
- Copyright (C) Andrew Bartlett 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-
-static int sam_skel_debug_level = DBGC_SAM;
-
-#undef DBGC_CLASS
-#define DBGC_CLASS sam_skel_debug_level
-
-/* define the version of the SAM interface */
-SAM_MODULE_VERSIONING_MAGIC
-
-/* General API */
-
-static NTSTATUS sam_skel_get_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, SEC_DESC **sd)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_set_sec_desc(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID *sid, const SEC_DESC *sd)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS sam_skel_lookup_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, TALLOC_CTX *mem_ctx, const DOM_SID *sid, char **name, uint32 *type)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_lookup_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const char *name, DOM_SID *sid, uint32 *type)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Domain API */
-
-static NTSTATUS sam_skel_update_domain(const SAM_METHODS *sam_methods, const SAM_DOMAIN_HANDLE *domain)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_get_domain_handle(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, SAM_DOMAIN_HANDLE **domain)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Account API */
-
-static NTSTATUS sam_skel_create_account(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 acct_ctrl, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_add_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_update_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_delete_account(const SAM_METHODS *sam_methods, const SAM_ACCOUNT_HANDLE *account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_enum_accounts(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 acct_ctrl, uint32 *account_count, SAM_ACCOUNT_ENUM **accounts)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS sam_skel_get_account_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *accountsid, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_get_account_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_ACCOUNT_HANDLE **account)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-/* Group API */
-
-static NTSTATUS sam_skel_create_group(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *account_name, uint16 group_ctrl, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_add_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_update_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_delete_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_enum_groups(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint16 group_ctrl, uint32 *groups_count, SAM_GROUP_ENUM **groups)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_get_group_by_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const DOM_SID *groupsid, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_get_group_by_name(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, uint32 access_desired, const char *name, SAM_GROUP_HANDLE **group)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS sam_skel_add_member_to_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_delete_member_from_group(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, const SAM_GROUP_MEMBER *member)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS sam_skel_enum_groupmembers(const SAM_METHODS *sam_methods, const SAM_GROUP_HANDLE *group, uint32 *members_count, SAM_GROUP_MEMBER **members)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS sam_skel_get_groups_of_sid(const SAM_METHODS *sam_methods, const NT_USER_TOKEN *access_token, const DOM_SID **sids, uint16 group_ctrl, uint32 *group_count, SAM_GROUP_ENUM **groups)
-{
- DEBUG(0,("sam_skel: %s was called!\n",FUNCTION_MACRO));
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-NTSTATUS sam_init_skel(SAM_METHODS *sam_methods, const char *module_params)
-{
- /* Functions your SAM module doesn't provide should be set
- * to NULL */
-
- sam_methods->sam_get_sec_desc = sam_skel_get_sec_desc;
- sam_methods->sam_set_sec_desc = sam_skel_set_sec_desc;
-
- sam_methods->sam_lookup_sid = sam_skel_lookup_sid;
- sam_methods->sam_lookup_name = sam_skel_lookup_name;
-
- /* Domain API */
-
- sam_methods->sam_update_domain = sam_skel_update_domain;
- sam_methods->sam_get_domain_handle = sam_skel_get_domain_handle;
-
- /* Account API */
-
- sam_methods->sam_create_account = sam_skel_create_account;
- sam_methods->sam_add_account = sam_skel_add_account;
- sam_methods->sam_update_account = sam_skel_update_account;
- sam_methods->sam_delete_account = sam_skel_delete_account;
- sam_methods->sam_enum_accounts = sam_skel_enum_accounts;
-
- sam_methods->sam_get_account_by_sid = sam_skel_get_account_by_sid;
- sam_methods->sam_get_account_by_name = sam_skel_get_account_by_name;
-
- /* Group API */
-
- sam_methods->sam_create_group = sam_skel_create_group;
- sam_methods->sam_add_group = sam_skel_add_group;
- sam_methods->sam_update_group = sam_skel_update_group;
- sam_methods->sam_delete_group = sam_skel_delete_group;
- sam_methods->sam_enum_groups = sam_skel_enum_groups;
- sam_methods->sam_get_group_by_sid = sam_skel_get_group_by_sid;
- sam_methods->sam_get_group_by_name = sam_skel_get_group_by_name;
-
- sam_methods->sam_add_member_to_group = sam_skel_add_member_to_group;
- sam_methods->sam_delete_member_from_group = sam_skel_delete_member_from_group;
- sam_methods->sam_enum_groupmembers = sam_skel_enum_groupmembers;
-
- sam_methods->sam_get_groups_of_sid = sam_skel_get_groups_of_sid;
-
- sam_methods->free_private_data = NULL;
-
-
- sam_skel_debug_level = debug_add_class("sam_skel");
- if (sam_skel_debug_level == -1) {
- sam_skel_debug_level = DBGC_SAM;
- DEBUG(0, ("sam_skel: Couldn't register custom debugging class!\n"));
- } else DEBUG(2, ("sam_skel: Debug class number of 'sam_skel': %d\n", sam_skel_debug_level));
-
- if(module_params)
- DEBUG(0, ("Starting 'sam_skel' with parameters '%s' for domain %s\n", module_params, sam_methods->domain_name));
- else
- DEBUG(0, ("Starting 'sam_skel' for domain %s without paramters\n", sam_methods->domain_name));
-
- return NT_STATUS_OK;
-}
diff --git a/source3/script/genstruct.pl b/source3/script/genstruct.pl
deleted file mode 100755
index 081b81f510..0000000000
--- a/source3/script/genstruct.pl
+++ /dev/null
@@ -1,298 +0,0 @@
-#!/usr/bin/perl -w
-# a simple system for generating C parse info
-# this can be used to write generic C structer load/save routines
-# Copyright 2002 Andrew Tridgell <genstruct@tridgell.net>
-# released under the GNU General Public License v2 or later
-
-use strict;
-
-my(%enum_done) = ();
-my(%struct_done) = ();
-
-###################################################
-# general handler
-sub handle_general($$$$$$$$)
-{
- my($name) = shift;
- my($ptr_count) = shift;
- my($size) = shift;
- my($element) = shift;
- my($flags) = shift;
- my($dump_fn) = shift;
- my($parse_fn) = shift;
- my($tflags) = shift;
- my($array_len) = 0;
- my($dynamic_len) = "NULL";
-
- # handle arrays, currently treat multidimensional arrays as 1 dimensional
- while ($element =~ /(.*)\[(.*?)\]$/) {
- $element = $1;
- if ($array_len == 0) {
- $array_len = $2;
- } else {
- $array_len = "$2 * $array_len";
- }
- }
-
- if ($flags =~ /_LEN\((\w*?)\)/) {
- $dynamic_len = "\"$1\"";
- }
-
- if ($flags =~ /_NULLTERM/) {
- $tflags = "FLAG_NULLTERM";
- }
-
- print OFILE "{\"$element\", $ptr_count, $size, offsetof(struct $name, $element), $array_len, $dynamic_len, $tflags, $dump_fn, $parse_fn},\n";
-}
-
-
-####################################################
-# parse one element
-sub parse_one($$$$)
-{
- my($name) = shift;
- my($type) = shift;
- my($element) = shift;
- my($flags) = shift;
- my($ptr_count) = 0;
- my($size) = "sizeof($type)";
- my($tflags) = "0";
-
- # enums get the FLAG_ALWAYS flag
- if ($type =~ /^enum /) {
- $tflags = "FLAG_ALWAYS";
- }
-
-
- # make the pointer part of the base type
- while ($element =~ /^\*(.*)/) {
- $ptr_count++;
- $element = $1;
- }
-
- # convert spaces to _
- $type =~ s/ /_/g;
-
- my($dump_fn) = "gen_dump_$type";
- my($parse_fn) = "gen_parse_$type";
-
- handle_general($name, $ptr_count, $size, $element, $flags, $dump_fn, $parse_fn, $tflags);
-}
-
-####################################################
-# parse one element
-sub parse_element($$$)
-{
- my($name) = shift;
- my($element) = shift;
- my($flags) = shift;
- my($type);
- my($data);
-
- # pull the base type
- if ($element =~ /^struct (\S*) (.*)/) {
- $type = "struct $1";
- $data = $2;
- } elsif ($element =~ /^enum (\S*) (.*)/) {
- $type = "enum $1";
- $data = $2;
- } elsif ($element =~ /^unsigned (\S*) (.*)/) {
- $type = "unsigned $1";
- $data = $2;
- } elsif ($element =~ /^(\S*) (.*)/) {
- $type = $1;
- $data = $2;
- } else {
- die "Can't parse element '$element'";
- }
-
- # handle comma separated lists
- while ($data =~ /(\S*),[\s]?(.*)/) {
- parse_one($name, $type, $1, $flags);
- $data = $2;
- }
- parse_one($name, $type, $data, $flags);
-}
-
-
-my($first_struct) = 1;
-
-####################################################
-# parse the elements of one structure
-sub parse_elements($$)
-{
- my($name) = shift;
- my($elements) = shift;
-
- if ($first_struct) {
- $first_struct = 0;
- print "Parsing structs: $name";
- } else {
- print ", $name";
- }
-
- print OFILE "int gen_dump_struct_$name(struct parse_string *, const char *, unsigned);\n";
- print OFILE "int gen_parse_struct_$name(char *, const char *);\n";
-
- print OFILE "static const struct parse_struct pinfo_" . $name . "[] = {\n";
-
- while ($elements =~ /^.*?([a-z].*?);\s*?(\S*?)\s*?\$(.*)/msi) {
- my($element) = $1;
- my($flags) = $2;
- $elements = $3;
- parse_element($name, $element, $flags);
- }
-
- print OFILE "{NULL, 0, 0, 0, 0, NULL, 0, NULL, NULL}};\n";
-
- print OFILE "
-int gen_dump_struct_$name(struct parse_string *p, const char *ptr, unsigned indent) {
- return gen_dump_struct(pinfo_$name, p, ptr, indent);
-}
-int gen_parse_struct_$name(char *ptr, const char *str) {
- return gen_parse_struct(pinfo_$name, ptr, str);
-}
-
-";
-}
-
-my($first_enum) = 1;
-
-####################################################
-# parse out the enum declarations
-sub parse_enum_elements($$)
-{
- my($name) = shift;
- my($elements) = shift;
-
- if ($first_enum) {
- $first_enum = 0;
- print "Parsing enums: $name";
- } else {
- print ", $name";
- }
-
- print OFILE "static const struct enum_struct einfo_" . $name . "[] = {\n";
-
- my(@enums) = split(/,/s, $elements);
- for (my($i)=0; $i <= $#{@enums}; $i++) {
- my($enum) = $enums[$i];
- if ($enum =~ /\s*(\w*)/) {
- my($e) = $1;
- print OFILE "{\"$e\", $e},\n";
- }
- }
-
- print OFILE "{NULL, 0}};\n";
-
- print OFILE "
-int gen_dump_enum_$name(struct parse_string *p, const char *ptr, unsigned indent) {
- return gen_dump_enum(einfo_$name, p, ptr, indent);
-}
-
-int gen_parse_enum_$name(char *ptr, const char *str) {
- return gen_parse_enum(einfo_$name, ptr, str);
-}
-
-";
-}
-
-####################################################
-# parse out the enum declarations
-sub parse_enums($)
-{
- my($data) = shift;
-
- while ($data =~ /^GENSTRUCT\s+enum\s+(\w*?)\s*{(.*?)}\s*;(.*)/ms) {
- my($name) = $1;
- my($elements) = $2;
- $data = $3;
-
- if (!defined($enum_done{$name})) {
- $enum_done{$name} = 1;
- parse_enum_elements($name, $elements);
- }
- }
-
- if (! $first_enum) {
- print "\n";
- }
-}
-
-####################################################
-# parse all the structures
-sub parse_structs($)
-{
- my($data) = shift;
-
- # parse into structures
- while ($data =~ /^GENSTRUCT\s+struct\s+(\w+?)\s*{\s*(.*?)\s*}\s*;(.*)/ms) {
- my($name) = $1;
- my($elements) = $2;
- $data = $3;
- if (!defined($struct_done{$name})) {
- $struct_done{$name} = 1;
- parse_elements($name, $elements);
- }
- }
-
- if (! $first_struct) {
- print "\n";
- } else {
- print "No GENSTRUCT structures found?\n";
- }
-}
-
-
-####################################################
-# parse a header file, generating a dumper structure
-sub parse_data($)
-{
- my($data) = shift;
-
- # collapse spaces
- $data =~ s/[\t ]+/ /sg;
- $data =~ s/\s*\n\s+/\n/sg;
- # strip debug lines
- $data =~ s/^\#.*?\n//smg;
-
- parse_enums($data);
- parse_structs($data);
-}
-
-
-#########################################
-# display help text
-sub ShowHelp()
-{
- print "
-generator for C structure dumpers
-Copyright Andrew Tridgell <genstruct\@tridgell.net>
-
-Sample usage:
- genstruct -o output.h gcc -E -O2 -g test.h
-
-Options:
- --help this help page
- -o OUTPUT place output in OUTPUT
-";
- exit(0);
-}
-
-########################################
-# main program
-if ($ARGV[0] ne "-o" || $#ARGV < 2) {
- ShowHelp();
-}
-
-shift;
-my($opt_ofile)=shift;
-
-print "creating $opt_ofile\n";
-
-open(OFILE, ">$opt_ofile") || die "can't open $opt_ofile";
-
-print OFILE "/* This is an automatically generated file - DO NOT EDIT! */\n\n";
-
-parse_data(`@ARGV -DGENSTRUCT=GENSTRUCT`);
-exit(0);
diff --git a/source3/smbd/process.c b/source3/smbd/process.c
index 98ec6ce184..8018d5f6f6 100644
--- a/source3/smbd/process.c
+++ b/source3/smbd/process.c
@@ -1314,17 +1314,5 @@ void smbd_process(void)
last_timeout_processing_time = new_check_time; /* Reset time. */
}
}
-
- /* The timeout_processing function isn't run nearly
- often enough to implement 'max log size' without
- overrunning the size of the file by many megabytes.
- This is especially true if we are running at debug
- level 10. Checking every 50 SMBs is a nice
- tradeoff of performance vs log file size overrun. */
-
- if ((num_smbs % 50) == 0 && need_to_check_log_size()) {
- change_to_root_user();
- check_log_size();
- }
}
}
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 194f9f2300..1d1061f6d8 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -377,10 +377,6 @@ static BOOL open_sockets_smbd(BOOL is_daemon, BOOL interactive, const char *smb_
return False;
}
- /* Load DSO's */
- if(lp_modules())
- smb_load_modules(lp_modules());
-
return True;
}
/* The parent doesn't need this socket */
@@ -870,7 +866,6 @@ static BOOL init_structs(void )
smbd_process();
uni_group_cache_shutdown();
- namecache_shutdown();
exit_server("normal exit");
return(0);
}
diff --git a/source3/smbd/sesssetup.c b/source3/smbd/sesssetup.c
index 23a44d8df7..f8e8e017e0 100644
--- a/source3/smbd/sesssetup.c
+++ b/source3/smbd/sesssetup.c
@@ -23,8 +23,7 @@
#include "includes.h"
uint32 global_client_caps = 0;
-
-static struct auth_ntlmssp_state *global_ntlmssp_state;
+static struct auth_context *ntlmssp_auth_context = NULL;
/*
on a logon error possibly map the error to success if "map to guest"
@@ -213,7 +212,7 @@ static int reply_spnego_kerberos(connection_struct *conn,
send a security blob via a session setup reply
****************************************************************************/
static BOOL reply_sesssetup_blob(connection_struct *conn, char *outbuf,
- DATA_BLOB blob, NTSTATUS nt_status)
+ DATA_BLOB blob, uint32 errcode)
{
char *p;
@@ -222,69 +221,21 @@ static BOOL reply_sesssetup_blob(connection_struct *conn, char *outbuf,
/* we set NT_STATUS_MORE_PROCESSING_REQUIRED to tell the other end
that we aren't finished yet */
- nt_status = nt_status_squash(nt_status);
- SIVAL(outbuf, smb_rcls, NT_STATUS_V(nt_status));
+ SIVAL(outbuf, smb_rcls, errcode);
SSVAL(outbuf, smb_vwv0, 0xFF); /* no chaining possible */
SSVAL(outbuf, smb_vwv3, blob.length);
p = smb_buf(outbuf);
memcpy(p, blob.data, blob.length);
-
- add_signature(outbuf);
+ p += blob.length;
+ p += srvstr_push(outbuf, p, "Unix", -1, STR_TERMINATE);
+ p += srvstr_push(outbuf, p, "Samba", -1, STR_TERMINATE);
+ p += srvstr_push(outbuf, p, lp_workgroup(), -1, STR_TERMINATE);
+ set_message_end(outbuf,p);
return send_smb(smbd_server_fd(),outbuf);
}
/****************************************************************************
- send a session setup reply, wrapped in SPNEGO.
- get vuid and check first.
- end the NTLMSSP exchange context if we are OK/complete fail
-***************************************************************************/
-static BOOL reply_spnego_ntlmssp(connection_struct *conn, char *outbuf,
- AUTH_NTLMSSP_STATE **auth_ntlmssp_state,
- DATA_BLOB *ntlmssp_blob, NTSTATUS nt_status)
-{
- DATA_BLOB response;
- struct auth_serversupplied_info *server_info;
- server_info = (*auth_ntlmssp_state)->server_info;
-
- if (!NT_STATUS_IS_OK(nt_status)) {
- nt_status = do_map_to_guest(nt_status,
- &server_info,
- (*auth_ntlmssp_state)->ntlmssp_state->user,
- (*auth_ntlmssp_state)->ntlmssp_state->domain);
- }
-
- if (NT_STATUS_IS_OK(nt_status)) {
- int sess_vuid;
- sess_vuid = register_vuid(server_info, (*auth_ntlmssp_state)->ntlmssp_state->user /* check this for weird */);
-
- if (sess_vuid == -1) {
- nt_status = NT_STATUS_LOGON_FAILURE;
- } else {
-
- set_message(outbuf,4,0,True);
- SSVAL(outbuf, smb_vwv3, 0);
-
- if ((*auth_ntlmssp_state)->server_info->guest) {
- SSVAL(outbuf,smb_vwv2,1);
- }
-
- SSVAL(outbuf,smb_uid,sess_vuid);
- }
- }
-
- response = spnego_gen_auth_response(ntlmssp_blob, nt_status);
- reply_sesssetup_blob(conn, outbuf, response, nt_status);
- data_blob_free(&response);
-
- if (!NT_STATUS_EQUAL(nt_status, NT_STATUS_MORE_PROCESSING_REQUIRED)) {
- auth_ntlmssp_end(&global_ntlmssp_state);
- }
-
- return True;
-}
-
-/****************************************************************************
reply to a session setup spnego negotiate packet
****************************************************************************/
static int reply_spnego_negotiate(connection_struct *conn,
@@ -296,9 +247,12 @@ static int reply_spnego_negotiate(connection_struct *conn,
char *OIDs[ASN1_MAX_OIDS];
DATA_BLOB secblob;
int i;
- DATA_BLOB chal;
+ uint32 ntlmssp_command, neg_flags, chal_flags;
+ DATA_BLOB chal, spnego_chal;
+ const uint8 *cryptkey;
BOOL got_kerberos = False;
NTSTATUS nt_status;
+ char *cliname=NULL, *domname=NULL;
/* parse out the OIDs and the first sec blob */
if (!parse_negTokenTarg(blob1, OIDs, &secblob)) {
@@ -324,26 +278,95 @@ static int reply_spnego_negotiate(connection_struct *conn,
}
#endif
- if (global_ntlmssp_state) {
- auth_ntlmssp_end(&global_ntlmssp_state);
+ /* parse the NTLMSSP packet */
+#if 0
+ file_save("secblob.dat", secblob.data, secblob.length);
+#endif
+
+ if (!msrpc_parse(&secblob, "CddAA",
+ "NTLMSSP",
+ &ntlmssp_command,
+ &neg_flags,
+ &cliname,
+ &domname)) {
+ return ERROR_NT(NT_STATUS_LOGON_FAILURE);
}
+
+ data_blob_free(&secblob);
- nt_status = auth_ntlmssp_start(&global_ntlmssp_state);
- if (!NT_STATUS_IS_OK(nt_status)) {
- return ERROR_NT(nt_status);
+ if (ntlmssp_command != NTLMSSP_NEGOTIATE) {
+ return ERROR_NT(NT_STATUS_LOGON_FAILURE);
}
- nt_status = auth_ntlmssp_update(global_ntlmssp_state,
- secblob, &chal);
+ debug_ntlmssp_flags(neg_flags);
- data_blob_free(&secblob);
+ if (ntlmssp_auth_context) {
+ (ntlmssp_auth_context->free)(&ntlmssp_auth_context);
+ }
+
+ if (!NT_STATUS_IS_OK(nt_status = make_auth_context_subsystem(&ntlmssp_auth_context))) {
+ return ERROR_NT(nt_status);
+ }
+
+ cryptkey = ntlmssp_auth_context->get_ntlm_challenge(ntlmssp_auth_context);
- reply_spnego_ntlmssp(conn, outbuf, &global_ntlmssp_state,
- &chal, nt_status);
+ /* Give them the challenge. For now, ignore neg_flags and just
+ return the flags we want. Obviously this is not correct */
+
+ chal_flags = NTLMSSP_NEGOTIATE_UNICODE |
+ NTLMSSP_NEGOTIATE_128 |
+ NTLMSSP_NEGOTIATE_NTLM |
+ NTLMSSP_CHAL_TARGET_INFO;
+
+ {
+ DATA_BLOB domain_blob, struct_blob;
+ fstring dnsname, dnsdomname;
+ msrpc_gen(&domain_blob,
+ "U",
+ lp_workgroup());
+
+ fstrcpy(dnsdomname, (SEC_ADS == lp_security())?lp_realm():"");
+ strlower(dnsdomname);
+
+ fstrcpy(dnsname, global_myname());
+ fstrcat(dnsname, ".");
+ fstrcat(dnsname, dnsdomname);
+ strlower(dnsname);
+
+ msrpc_gen(&struct_blob, "aaaaa",
+ 2, lp_workgroup(),
+ 1, global_myname(),
+ 4, dnsdomname,
+ 3, dnsname,
+ 0, "");
+
+ msrpc_gen(&chal, "CdUdbddB",
+ "NTLMSSP",
+ NTLMSSP_CHALLENGE,
+ lp_workgroup(),
+ chal_flags,
+ cryptkey, 8,
+ 0, 0,
+ struct_blob.data, struct_blob.length);
+
+ data_blob_free(&domain_blob);
+ data_blob_free(&struct_blob);
+ }
+
+ if (!spnego_gen_challenge(&spnego_chal, &chal, &chal)) {
+ DEBUG(3,("Failed to generate challenge\n"));
+ data_blob_free(&chal);
+ return ERROR_NT(NT_STATUS_LOGON_FAILURE);
+ }
+
+ /* now tell the client to send the auth packet */
+ reply_sesssetup_blob(conn, outbuf, spnego_chal, NT_STATUS_V(NT_STATUS_MORE_PROCESSING_REQUIRED));
+
data_blob_free(&chal);
+ data_blob_free(&spnego_chal);
- /* already replied */
+ /* and tell smbd that we have already replied to this packet */
return -1;
}
@@ -355,8 +378,23 @@ static int reply_spnego_auth(connection_struct *conn, char *inbuf, char *outbuf,
int length, int bufsize,
DATA_BLOB blob1)
{
- DATA_BLOB auth, auth_reply;
+ DATA_BLOB auth, response;
+ char *workgroup = NULL, *user = NULL, *machine = NULL;
+ DATA_BLOB lmhash, nthash, sess_key;
+ DATA_BLOB plaintext_password = data_blob(NULL, 0);
+ uint32 ntlmssp_command, neg_flags;
NTSTATUS nt_status;
+ int sess_vuid;
+ BOOL as_guest;
+ uint32 auth_flags = AUTH_FLAG_NONE;
+ auth_usersupplied_info *user_info = NULL;
+ auth_serversupplied_info *server_info = NULL;
+
+ /* we must have setup the auth context by now */
+ if (!ntlmssp_auth_context) {
+ DEBUG(2,("ntlmssp_auth_context is NULL in reply_spnego_auth\n"));
+ return ERROR_NT(NT_STATUS_LOGON_FAILURE);
+ }
if (!spnego_parse_auth(blob1, &auth)) {
#if 0
@@ -365,15 +403,107 @@ static int reply_spnego_auth(connection_struct *conn, char *inbuf, char *outbuf,
return ERROR_NT(NT_STATUS_LOGON_FAILURE);
}
- nt_status = auth_ntlmssp_update(global_ntlmssp_state,
- auth, &auth_reply);
+ /* now the NTLMSSP encoded auth hashes */
+ if (!msrpc_parse(&auth, "CdBBUUUBd",
+ "NTLMSSP",
+ &ntlmssp_command,
+ &lmhash,
+ &nthash,
+ &workgroup,
+ &user,
+ &machine,
+ &sess_key,
+ &neg_flags)) {
+ return ERROR_NT(NT_STATUS_LOGON_FAILURE);
+ }
data_blob_free(&auth);
+ data_blob_free(&sess_key);
+
+ DEBUG(3,("Got user=[%s] workgroup=[%s] machine=[%s] len1=%d len2=%d\n",
+ user, workgroup, machine, lmhash.length, nthash.length));
- reply_spnego_ntlmssp(conn, outbuf, &global_ntlmssp_state,
- &auth_reply, nt_status);
-
- data_blob_free(&auth_reply);
+ /* the client has given us its machine name (which we otherwise would not get on port 445).
+ we need to possibly reload smb.conf if smb.conf includes depend on the machine name */
+
+ set_remote_machine_name(machine);
+
+ /* setup the string used by %U */
+ sub_set_smb_name(user);
+
+ reload_services(True);
+
+#if 0
+ file_save("nthash1.dat", nthash.data, nthash.length);
+ file_save("lmhash1.dat", lmhash.data, lmhash.length);
+#endif
+
+ if (lmhash.length) {
+ auth_flags |= AUTH_FLAG_LM_RESP;
+ }
+
+ if (nthash.length == 24) {
+ auth_flags |= AUTH_FLAG_NTLM_RESP;
+ } else if (nthash.length > 24) {
+ auth_flags |= AUTH_FLAG_NTLMv2_RESP;
+ };
+
+ nt_status = make_user_info_map(&user_info, user, workgroup, machine,
+ lmhash, nthash, plaintext_password,
+ auth_flags, True);
+
+ /* it looks a bit weird, but this function returns int type... */
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ return ERROR_NT(NT_STATUS_NO_MEMORY);
+ }
+
+ nt_status = ntlmssp_auth_context->check_ntlm_password(ntlmssp_auth_context, user_info, &server_info);
+
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ nt_status = do_map_to_guest(nt_status, &server_info, user, workgroup);
+ }
+
+ SAFE_FREE(workgroup);
+ SAFE_FREE(machine);
+
+ (ntlmssp_auth_context->free)(&ntlmssp_auth_context);
+
+ free_user_info(&user_info);
+
+ data_blob_free(&lmhash);
+
+ data_blob_free(&nthash);
+
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ SAFE_FREE(user);
+ return ERROR_NT(nt_status_squash(nt_status));
+ }
+
+ as_guest = server_info->guest;
+
+ sess_vuid = register_vuid(server_info, user);
+ free_server_info(&server_info);
+
+ SAFE_FREE(user);
+
+ if (sess_vuid == -1) {
+ return ERROR_NT(NT_STATUS_LOGON_FAILURE);
+ }
+
+ set_message(outbuf,4,0,True);
+ SSVAL(outbuf, smb_vwv3, 0);
+
+ if (as_guest) {
+ SSVAL(outbuf,smb_vwv2,1);
+ }
+
+ add_signature(outbuf);
+
+ SSVAL(outbuf,smb_uid,sess_vuid);
+ SSVAL(inbuf,smb_uid,sess_vuid);
+
+ response = spnego_gen_auth_response();
+ reply_sesssetup_blob(conn, outbuf, response, 0);
/* and tell smbd that we have already replied to this packet */
return -1;
@@ -381,16 +511,49 @@ static int reply_spnego_auth(connection_struct *conn, char *inbuf, char *outbuf,
/****************************************************************************
+reply to a session setup spnego anonymous packet
+****************************************************************************/
+static int reply_spnego_anonymous(connection_struct *conn, char *inbuf, char *outbuf,
+ int length, int bufsize)
+{
+ int sess_vuid;
+ auth_serversupplied_info *server_info = NULL;
+ NTSTATUS nt_status;
+
+ nt_status = check_guest_password(&server_info);
+
+ if (!NT_STATUS_IS_OK(nt_status)) {
+ return ERROR_NT(nt_status_squash(nt_status));
+ }
+
+ sess_vuid = register_vuid(server_info, lp_guestaccount());
+
+ free_server_info(&server_info);
+
+ if (sess_vuid == -1) {
+ return ERROR_NT(NT_STATUS_LOGON_FAILURE);
+ }
+
+ set_message(outbuf,4,0,True);
+ SSVAL(outbuf, smb_vwv3, 0);
+ add_signature(outbuf);
+
+ SSVAL(outbuf,smb_uid,sess_vuid);
+ SSVAL(inbuf,smb_uid,sess_vuid);
+
+ return chain_reply(inbuf,outbuf,length,bufsize);
+}
+
+
+/****************************************************************************
reply to a session setup command
****************************************************************************/
-static int reply_sesssetup_and_X_spnego(connection_struct *conn, char *inbuf,
- char *outbuf,
+static int reply_sesssetup_and_X_spnego(connection_struct *conn, char *inbuf,char *outbuf,
int length,int bufsize)
{
uint8 *p;
DATA_BLOB blob1;
int ret;
- size_t bufrem;
DEBUG(3,("Doing spnego session setup\n"));
@@ -401,13 +564,12 @@ static int reply_sesssetup_and_X_spnego(connection_struct *conn, char *inbuf,
p = (uint8 *)smb_buf(inbuf);
if (SVAL(inbuf, smb_vwv7) == 0) {
- /* an invalid request */
- return ERROR_NT(NT_STATUS_LOGON_FAILURE);
+ /* an anonymous request */
+ return reply_spnego_anonymous(conn, inbuf, outbuf, length, bufsize);
}
- bufrem = smb_bufrem(inbuf, p);
/* pull the spnego blob */
- blob1 = data_blob(p, MIN(bufrem, SVAL(inbuf, smb_vwv7)));
+ blob1 = data_blob(p, SVAL(inbuf, smb_vwv7));
#if 0
file_save("negotiate.dat", blob1.data, blob1.length);
@@ -624,10 +786,6 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
nt_status = check_guest_password(&server_info);
} else if (doencrypt) {
- if (!negprot_global_auth_context) {
- DEBUG(0, ("reply_sesssetup_and_X: Attempted encrypted session setup without negprot denied!\n"));
- return ERROR_NT(NT_STATUS_LOGON_FAILURE);
- }
nt_status = make_user_info_for_reply_enc(&user_info, user, domain,
lm_resp, nt_resp);
if (NT_STATUS_IS_OK(nt_status)) {
@@ -672,8 +830,10 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf,
}
/* it's ok - setup a reply */
- set_message(outbuf,3,0,True);
- if (Protocol == PROTOCOL_NT1) {
+ if (Protocol < PROTOCOL_NT1) {
+ set_message(outbuf,3,0,True);
+ } else {
+ set_message(outbuf,3,0,True);
add_signature(outbuf);
/* perhaps grab OS version here?? */
}
diff --git a/source3/torture/cmd_sam.c b/source3/torture/cmd_sam.c
deleted file mode 100644
index 3f7f7dfe27..0000000000
--- a/source3/torture/cmd_sam.c
+++ /dev/null
@@ -1,514 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM module functions
-
- Copyright (C) Jelmer Vernooij 2002
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "samtest.h"
-
-static void print_account(SAM_ACCOUNT_HANDLE *a)
-{
- /* FIXME */
-}
-
-static NTSTATUS cmd_context(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- NTSTATUS status;
- char **plugins;
- int i;
-
- plugins = malloc(argc * sizeof(char *));
-
- for(i = 1; i < argc; i++)
- plugins[i-1] = argv[i];
-
- plugins[argc-1] = NULL;
-
- if(!NT_STATUS_IS_OK(status = make_sam_context_list(&st->context, plugins))) {
- printf("make_sam_context_list failed: %s\n", nt_errstr(status));
- SAFE_FREE(plugins);
- return status;
- }
-
- SAFE_FREE(plugins);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_load_module(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- char *plugin_arg[2];
- NTSTATUS status;
- if (argc != 2 && argc != 3) {
- printf("Usage: load <module path> [domain-name]\n");
- return NT_STATUS_OK;
- }
-
- if (argc == 3)
- asprintf(&plugin_arg[0], "plugin:%s|%s", argv[1], argv[2]);
- else
- asprintf(&plugin_arg[0], "plugin:%s", argv[1]);
-
- plugin_arg[1] = NULL;
-
- if(!NT_STATUS_IS_OK(status = make_sam_context_list(&st->context, plugin_arg))) {
- free(plugin_arg[0]);
- return status;
- }
-
- free(plugin_arg[0]);
-
- printf("load: ok\n");
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_get_sec_desc(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_set_sec_desc(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_lookup_sid(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- char *name;
- uint32 type;
- NTSTATUS status;
- DOM_SID sid;
- if (argc != 2) {
- printf("Usage: lookup_sid <sid>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!string_to_sid(&sid, argv[1])){
- printf("Unparseable SID specified!\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_lookup_sid(st->context, st->token, mem_ctx, &sid, &name, &type))) {
- printf("sam_lookup_sid failed!\n");
- return status;
- }
-
- printf("Name: %s\n", name);
- printf("Type: %d\n", type); /* FIXME: What kind of an integer is type ? */
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_lookup_name(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- DOM_SID sid;
- uint32 type;
- NTSTATUS status;
- if (argc != 3) {
- printf("Usage: lookup_name <domain> <name>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_lookup_name(st->context, st->token, argv[1], argv[2], &sid, &type))) {
- printf("sam_lookup_name failed!\n");
- return status;
- }
-
- printf("SID: %s\n", sid_string_static(&sid));
- printf("Type: %d\n", type);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_lookup_account(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_lookup_group(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_lookup_domain(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- DOM_SID *sid;
- NTSTATUS status;
- if (argc != 2) {
- printf("Usage: lookup_domain <domain>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_lookup_domain(st->context, st->token, argv[1], &sid))) {
- printf("sam_lookup_name failed!\n");
- return status;
- }
-
- printf("SID: %s\n", sid_string_static(sid));
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_enum_domains(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- int32 domain_count, i;
- DOM_SID *domain_sids;
- char **domain_names;
- NTSTATUS status;
-
- if (!NT_STATUS_IS_OK(status = sam_enum_domains(st->context, st->token, &domain_count, &domain_sids, &domain_names))) {
- printf("sam_enum_domains failed!\n");
- return status;
- }
-
- if (domain_count == 0) {
- printf("No domains found!\n");
- return NT_STATUS_OK;
- }
-
- for (i = 0; i < domain_count; i++) {
- printf("%s %s\n", domain_names[i], sid_string_static(&domain_sids[i]));
- }
-
- SAFE_FREE(domain_sids);
- SAFE_FREE(domain_names);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_update_domain(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_show_domain(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- NTSTATUS status;
- DOM_SID sid;
- SAM_DOMAIN_HANDLE *domain;
- uint32 tmp_uint32;
- uint16 tmp_uint16;
- NTTIME tmp_nttime;
- BOOL tmp_bool;
- const char *tmp_string;
-
- if (argc != 2) {
- printf("Usage: show_domain <sid>\n");
- return status;
- }
-
- if (!string_to_sid(&sid, argv[1])){
- printf("Unparseable SID specified!\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_by_sid(st->context, st->token, GENERIC_RIGHTS_DOMAIN_ALL_ACCESS, &sid, &domain))) {
- printf("sam_get_domain_by_sid failed\n");
- return status;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_num_accounts(domain, &tmp_uint32))) {
- printf("sam_get_domain_num_accounts failed: %s\n", nt_errstr(status));
- } else {
- printf("Number of accounts: %d\n", tmp_uint32);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_num_groups(domain, &tmp_uint32))) {
- printf("sam_get_domain_num_groups failed: %s\n", nt_errstr(status));
- } else {
- printf("Number of groups: %u\n", tmp_uint32);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_num_aliases(domain, &tmp_uint32))) {
- printf("sam_get_domain_num_aliases failed: %s\n", nt_errstr(status));
- } else {
- printf("Number of aliases: %u\n", tmp_uint32);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_name(domain, &tmp_string))) {
- printf("sam_get_domain_name failed: %s\n", nt_errstr(status));
- } else {
- printf("Domain Name: %s\n", tmp_string);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_lockout_count(domain, &tmp_uint16))) {
- printf("sam_get_domain_lockout_count failed: %s\n", nt_errstr(status));
- } else {
- printf("Lockout Count: %u\n", tmp_uint16);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_force_logoff(domain, &tmp_bool))) {
- printf("sam_get_domain_force_logoff failed: %s\n", nt_errstr(status));
- } else {
- printf("Force Logoff: %s\n", (tmp_bool?"Yes":"No"));
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_lockout_duration(domain, &tmp_nttime))) {
- printf("sam_get_domain_lockout_duration failed: %s\n", nt_errstr(status));
- } else {
- printf("Lockout duration: %u\n", tmp_nttime.low);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_login_pwdchange(domain, &tmp_bool))) {
- printf("sam_get_domain_login_pwdchange failed: %s\n", nt_errstr(status));
- } else {
- printf("Password changing allowed: %s\n", (tmp_bool?"Yes":"No"));
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_max_pwdage(domain, &tmp_nttime))) {
- printf("sam_get_domain_max_pwdage failed: %s\n", nt_errstr(status));
- } else {
- printf("Maximum password age: %u\n", tmp_nttime.low);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_min_pwdage(domain, &tmp_nttime))) {
- printf("sam_get_domain_min_pwdage failed: %s\n", nt_errstr(status));
- } else {
- printf("Minimal password age: %u\n", tmp_nttime.low);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_min_pwdlength(domain, &tmp_uint16))) {
- printf("sam_get_domain_min_pwdlength: %s\n", nt_errstr(status));
- } else {
- printf("Minimal Password Length: %u\n", tmp_uint16);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_pwd_history(domain, &tmp_uint16))) {
- printf("sam_get_domain_pwd_history failed: %s\n", nt_errstr(status));
- } else {
- printf("Password history: %u\n", tmp_uint16);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_reset_count(domain, &tmp_nttime))) {
- printf("sam_get_domain_reset_count failed: %s\n", nt_errstr(status));
- } else {
- printf("Reset count: %u\n", tmp_nttime.low);
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_domain_server(domain, &tmp_string))) {
- printf("sam_get_domain_server failed: %s\n", nt_errstr(status));
- } else {
- printf("Server: %s\n", tmp_string);
- }
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_create_account(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_update_account(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_delete_account(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_enum_accounts(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- NTSTATUS status;
- DOM_SID sid;
- int32 account_count, i;
- SAM_ACCOUNT_ENUM *accounts;
-
- if (argc != 2) {
- printf("Usage: enum_accounts <domain-sid>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!string_to_sid(&sid, argv[1])){
- printf("Unparseable SID specified!\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_enum_accounts(st->context, st->token, &sid, 0, &account_count, &accounts))) {
- printf("sam_enum_accounts failed: %s\n", nt_errstr(status));
- return status;
- }
-
- if (account_count == 0) {
- printf("No accounts found!\n");
- return NT_STATUS_OK;
- }
-
- for (i = 0; i < account_count; i++)
- printf("SID: %s\nName: %s\nFullname: %s\nDescription: %s\nACB_BITS: %08X\n\n",
- sid_string_static(&accounts[i].sid), accounts[i].account_name,
- accounts[i].full_name, accounts[i].account_desc,
- accounts[i].acct_ctrl);
-
- SAFE_FREE(accounts);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_lookup_account_sid(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- NTSTATUS status;
- DOM_SID sid;
- SAM_ACCOUNT_HANDLE *account;
-
- if (argc != 2) {
- printf("Usage: lookup_account_sid <account-sid>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!string_to_sid(&sid, argv[1])){
- printf("Unparseable SID specified!\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
- if (!NT_STATUS_IS_OK(status = sam_get_account_by_sid(st->context, st->token, GENERIC_RIGHTS_USER_ALL_ACCESS, &sid, &account))) {
- printf("context_sam_get_account_by_sid failed: %s\n", nt_errstr(status));
- return status;
- }
-
- print_account(account);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_lookup_account_name(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- NTSTATUS status;
- SAM_ACCOUNT_HANDLE *account;
-
- if (argc != 3) {
- printf("Usage: lookup_account_name <domain-name> <account-name>\n");
- return NT_STATUS_INVALID_PARAMETER;
- }
-
-
- if (!NT_STATUS_IS_OK(status = sam_get_account_by_name(st->context, st->token, GENERIC_RIGHTS_USER_ALL_ACCESS, argv[1], argv[2], &account))) {
- printf("context_sam_get_account_by_sid failed: %s\n", nt_errstr(status));
- return status;
- }
-
- print_account(account);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_create_group(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_update_group(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_delete_group(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_enum_groups(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_lookup_group_sid(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_lookup_group_name(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_group_add_member(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-static NTSTATUS cmd_group_del_member(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS cmd_group_enum(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-
-static NTSTATUS cmd_get_sid_groups(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-struct cmd_set sam_general_commands[] = {
-
- { "General SAM Commands" },
-
- { "load", cmd_load_module, "Load a module", "load <module.so> [domain-sid]" },
- { "context", cmd_context, "Load specified context", "context [DOMAIN|]backend1[:options] [DOMAIN|]backend2[:options]" },
- { "get_sec_desc", cmd_get_sec_desc, "Get security descriptor info", "get_sec_desc <access-token> <sid>" },
- { "set_sec_desc", cmd_set_sec_desc, "Set security descriptor info", "set_sec_desc <access-token> <sid>" },
- { "lookup_sid", cmd_lookup_sid, "Lookup type of specified SID", "lookup_sid <sid>" },
- { "lookup_name", cmd_lookup_name, "Lookup type of specified name", "lookup_name <sid>" },
- { NULL }
-};
-
-struct cmd_set sam_domain_commands[] = {
- { "Domain Commands" },
- { "update_domain", cmd_update_domain, "Update domain information", "update_domain [domain-options] domain-name | domain-sid" },
- { "show_domain", cmd_show_domain, "Show domain information", "show_domain domain-sid | domain-name" },
- { "enum_domains", cmd_enum_domains, "Enumerate all domains", "enum_domains <token> <acct-ctrl>" },
- { "lookup_domain", cmd_lookup_domain, "Lookup a domain by name", "lookup_domain domain-name" },
- { NULL }
-};
-
-struct cmd_set sam_account_commands[] = {
- { "Account Commands" },
- { "create_account", cmd_create_account, "Create a new account with specified properties", "create_account [account-options]" },
- { "update_account", cmd_update_account, "Update an existing account", "update_account [account-options] account-sid | account-name" },
- { "delete_account", cmd_delete_account, "Delete an account", "delete_account account-sid | account-name" },
- { "enum_accounts", cmd_enum_accounts, "Enumerate all accounts", "enum_accounts <token> <acct-ctrl>" },
- { "lookup_account", cmd_lookup_account, "Lookup an account by either sid or name", "lookup_account account-sid | account-name" },
- { "lookup_account_sid", cmd_lookup_account_sid, "Lookup an account by sid", "lookup_account_sid account-sid" },
- { "lookup_account_name", cmd_lookup_account_name, "Lookup an account by name", "lookup_account_name account-name" },
- { NULL }
-};
-
-struct cmd_set sam_group_commands[] = {
- { "Group Commands" },
- { "create_group", cmd_create_group, "Create a new group", "create_group [group-opts]" },
- { "update_group", cmd_update_group, "Update an existing group", "update_group [group-opts] group-name | group-sid" },
- { "delete_group", cmd_delete_group, "Delete an existing group", "delete_group group-name | group-sid" },
- { "enum_groups", cmd_enum_groups, "Enumerate all groups", "enum_groups <token> <group-ctrl>" },
- { "lookup_group", cmd_lookup_group, "Lookup a group by SID or name", "lookup_group group-sid | group-name" },
- { "lookup_group_sid", cmd_lookup_group_sid, "Lookup a group by SID", "lookup_group_sid <sid>" },
- { "lookup_group_name", cmd_lookup_group_name, "Lookup a group by name", "lookup_group_name <name>" },
- { "group_add_member", cmd_group_add_member, "Add group member to group", "group_add_member <group-name | group-sid> <member-name | member-sid>" },
- { "group_del_member", cmd_group_del_member, "Delete group member from group", "group_del_member <group-name | group-sid> <member-name | member-sid>" },
- { "group_enum", cmd_group_enum, "Enumerate all members of specified group", "group_enum group-sid | group-name" },
-
- { "get_sid_groups", cmd_get_sid_groups, "Get a list of groups specified sid is a member of", "group_enum <group-sid | group-name>" },
- { NULL }
-};
diff --git a/source3/torture/samtest.c b/source3/torture/samtest.c
deleted file mode 100644
index 17444c0757..0000000000
--- a/source3/torture/samtest.c
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- Unix SMB/CIFS implementation.
- SAM module tester
-
- Copyright (C) 2002 Jelmer Vernooij
-
- Parts of the code stolen from vfstest by Simo Sorce and Eric Lorimer
- Parts of the code stolen from rpcclient by Tim Potter
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include "includes.h"
-#include "samtest.h"
-
-struct func_entry {
- char *name;
- int (*fn)(struct connection_struct *conn, const char *path);
-};
-
-/* List to hold groups of commands */
-static struct cmd_list {
- struct cmd_list *prev, *next;
- struct cmd_set *cmd_set;
-} *cmd_list;
-
-static char* next_command (char** cmdstr)
-{
- static pstring command;
- char *p;
-
- if (!cmdstr || !(*cmdstr))
- return NULL;
-
- p = strchr_m(*cmdstr, ';');
- if (p)
- *p = '\0';
- pstrcpy(command, *cmdstr);
- *cmdstr = p;
-
- return command;
-}
-
-/* Load specified configuration file */
-static NTSTATUS cmd_conf(struct samtest_state *sam, TALLOC_CTX *mem_ctx,
- int argc, char **argv)
-{
- if (argc != 2) {
- printf("Usage: %s <smb.conf>\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- if (!lp_load(argv[1], False, True, False)) {
- printf("Error loading \"%s\"\n", argv[1]);
- return NT_STATUS_OK;
- }
-
- printf("\"%s\" successfully loaded\n", argv[1]);
- return NT_STATUS_OK;
-}
-
-/* Display help on commands */
-static NTSTATUS cmd_help(struct samtest_state *st, TALLOC_CTX *mem_ctx,
- int argc, char **argv)
-{
- struct cmd_list *tmp;
- struct cmd_set *tmp_set;
-
- /* Usage */
- if (argc > 2) {
- printf("Usage: %s [command]\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- /* Help on one command */
-
- if (argc == 2) {
- for (tmp = cmd_list; tmp; tmp = tmp->next) {
-
- tmp_set = tmp->cmd_set;
-
- while(tmp_set->name) {
- if (strequal(argv[1], tmp_set->name)) {
- if (tmp_set->usage &&
- tmp_set->usage[0])
- printf("%s\n", tmp_set->usage);
- else
- printf("No help for %s\n", tmp_set->name);
-
- return NT_STATUS_OK;
- }
-
- tmp_set++;
- }
- }
-
- printf("No such command: %s\n", argv[1]);
- return NT_STATUS_OK;
- }
-
- /* List all commands */
-
- for (tmp = cmd_list; tmp; tmp = tmp->next) {
-
- tmp_set = tmp->cmd_set;
-
- while(tmp_set->name) {
-
- printf("%20s\t%s\n", tmp_set->name,
- tmp_set->description ? tmp_set->description:
- "");
-
- tmp_set++;
- }
- }
-
- return NT_STATUS_OK;
-}
-
-/* Change the debug level */
-static NTSTATUS cmd_debuglevel(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- if (argc > 2) {
- printf("Usage: %s [debuglevel]\n", argv[0]);
- return NT_STATUS_OK;
- }
-
- if (argc == 2) {
- DEBUGLEVEL = atoi(argv[1]);
- }
-
- printf("debuglevel is %d\n", DEBUGLEVEL);
-
- return NT_STATUS_OK;
-}
-
-static NTSTATUS cmd_quit(struct samtest_state *st, TALLOC_CTX *mem_ctx, int argc, char **argv)
-{
- /* Cleanup */
- talloc_destroy(mem_ctx);
-
- exit(0);
- return NT_STATUS_OK; /* NOTREACHED */
-}
-
-static struct cmd_set samtest_commands[] = {
-
- { "GENERAL OPTIONS" },
-
- { "help", cmd_help, "Get help on commands", "" },
- { "?", cmd_help, "Get help on commands", "" },
- { "conf", cmd_conf, "Load smb configuration file", "conf <smb.conf>" },
- { "debuglevel", cmd_debuglevel, "Set debug level", "" },
- { "exit", cmd_quit, "Exit program", "" },
- { "quit", cmd_quit, "Exit program", "" },
-
- { NULL }
-};
-
-static struct cmd_set separator_command[] = {
- { "---------------", NULL, "----------------------" },
- { NULL }
-};
-
-
-/*extern struct cmd_set sam_commands[];*/
-extern struct cmd_set sam_general_commands[];
-extern struct cmd_set sam_domain_commands[];
-extern struct cmd_set sam_account_commands[];
-extern struct cmd_set sam_group_commands[];
-static struct cmd_set *samtest_command_list[] = {
- samtest_commands,
- sam_general_commands,
- sam_domain_commands,
- sam_account_commands,
- sam_group_commands,
- NULL
-};
-
-static void add_command_set(struct cmd_set *cmd_set)
-{
- struct cmd_list *entry;
-
- if (!(entry = (struct cmd_list *)malloc(sizeof(struct cmd_list)))) {
- DEBUG(0, ("out of memory\n"));
- return;
- }
-
- ZERO_STRUCTP(entry);
-
- entry->cmd_set = cmd_set;
- DLIST_ADD(cmd_list, entry);
-}
-
-static NTSTATUS do_cmd(struct samtest_state *st, struct cmd_set *cmd_entry, char *cmd)
-{
- char *p = cmd, **argv = NULL;
- NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
- TALLOC_CTX *mem_ctx = NULL;
- pstring buf;
- int argc = 0, i;
-
- /* Count number of arguments first time through the loop then
- allocate memory and strdup them. */
-
- again:
- while(next_token(&p, buf, " ", sizeof(buf))) {
- if (argv) {
- argv[argc] = strdup(buf);
- }
-
- argc++;
- }
-
- if (!argv) {
-
- /* Create argument list */
-
- argv = (char **)malloc(sizeof(char *) * argc);
- memset(argv, 0, sizeof(char *) * argc);
-
- if (!argv) {
- fprintf(stderr, "out of memory\n");
- result = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
- p = cmd;
- argc = 0;
-
- goto again;
- }
-
- /* Call the function */
-
- if (cmd_entry->fn) {
-
- if (mem_ctx == NULL) {
- /* Create mem_ctx */
- if (!(mem_ctx = talloc_init("do_cmd"))) {
- DEBUG(0, ("talloc_init() failed\n"));
- goto done;
- }
- }
-
- /* Run command */
- result = cmd_entry->fn(st, mem_ctx, argc, argv);
-
- } else {
- fprintf (stderr, "Invalid command\n");
- goto done;
- }
-
- done:
-
- /* Cleanup */
-
- if (argv) {
- for (i = 0; i < argc; i++)
- SAFE_FREE(argv[i]);
-
- SAFE_FREE(argv);
- }
-
- return result;
-}
-
-/* Process a command entered at the prompt or as part of -c */
-static NTSTATUS process_cmd(struct samtest_state *st, char *cmd)
-{
- struct cmd_list *temp_list;
- BOOL found = False;
- pstring buf;
- char *p = cmd;
- NTSTATUS result = NT_STATUS_OK;
- int len = 0;
-
- if (cmd[strlen(cmd) - 1] == '\n')
- cmd[strlen(cmd) - 1] = '\0';
-
- if (!next_token(&p, buf, " ", sizeof(buf))) {
- return NT_STATUS_OK;
- }
-
- /* strip the trainly \n if it exsists */
- len = strlen(buf);
- if (buf[len-1] == '\n')
- buf[len-1] = '\0';
-
- /* Search for matching commands */
-
- for (temp_list = cmd_list; temp_list; temp_list = temp_list->next) {
- struct cmd_set *temp_set = temp_list->cmd_set;
-
- while(temp_set->name) {
- if (strequal(buf, temp_set->name)) {
- found = True;
- result = do_cmd(st, temp_set, cmd);
-
- goto done;
- }
- temp_set++;
- }
- }
-
- done:
- if (!found && buf[0]) {
- printf("command not found: %s\n", buf);
- return NT_STATUS_OK;
- }
-
- if (!NT_STATUS_IS_OK(result)) {
- printf("result was %s\n", nt_errstr(result));
- }
-
- return result;
-}
-
-void exit_server(char *reason)
-{
- DEBUG(3,("Server exit (%s)\n", (reason ? reason : "")));
- exit(0);
-}
-
-static int server_fd = -1;
-int last_message = -1;
-
-int smbd_server_fd(void)
-{
- return server_fd;
-}
-
-BOOL reload_services(BOOL test)
-{
- return True;
-}
-
-/* Main function */
-
-int main(int argc, char *argv[])
-{
- BOOL interactive = True;
- int opt;
- static char *cmdstr = "";
- static char *opt_logfile=NULL;
- static char *config_file = dyn_CONFIGFILE;
- pstring logfile;
- struct cmd_set **cmd_set;
- struct samtest_state st;
-
- /* make sure the vars that get altered (4th field) are in
- a fixed location or certain compilers complain */
- poptContext pc;
- struct poptOption long_options[] = {
- POPT_AUTOHELP
- { NULL, 0, POPT_ARG_INCLUDE_TABLE, popt_common_debug },
- {"command", 'e', POPT_ARG_STRING, &cmdstr, 'e', "Execute semicolon seperated cmds"},
- {"logfile", 'l', POPT_ARG_STRING, &opt_logfile, 'l', "Logfile to use instead of stdout"},
- {"configfile", 'c', POPT_ARG_STRING, &config_file, 0,"use different configuration file",NULL},
- { 0, 0, 0, 0}
- };
-
- ZERO_STRUCT(st);
-
- st.token = get_system_token();
-
- setlinebuf(stdout);
-
- DEBUGLEVEL = 1;
-
- pc = poptGetContext("samtest", argc, (const char **) argv,
- long_options, 0);
-
- while((opt = poptGetNextOpt(pc)) != -1) {
- switch (opt) {
- case 'l':
- slprintf(logfile, sizeof(logfile) - 1, "%s.client",
- opt_logfile);
- lp_set_logfile(logfile);
- interactive = False;
- break;
- }
- }
-
- if (!lp_load(config_file,True,False,False)) {
- fprintf(stderr, "Can't load %s - run testparm to debug it\n", config_file);
- exit(1);
- }
-
- poptFreeContext(pc);
-
- /* the following functions are part of the Samba debugging
- facilities. See lib/debug.c */
- setup_logging("samtest", interactive);
- if (!interactive)
- reopen_logs();
-
- /* Load command lists */
-
- cmd_set = samtest_command_list;
-
- while(*cmd_set) {
- add_command_set(*cmd_set);
- add_command_set(separator_command);
- cmd_set++;
- }
-
- /* Do anything specified with -c */
- if (cmdstr[0]) {
- char *cmd;
- char *p = cmdstr;
-
- while((cmd=next_command(&p)) != NULL) {
- process_cmd(&st, cmd);
- }
-
- return 0;
- }
-
- /* Loop around accepting commands */
-
- while(1) {
- pstring prompt;
- char *line;
-
- slprintf(prompt, sizeof(prompt) - 1, "samtest $> ");
-
- line = smb_readline(prompt, NULL, NULL);
-
- if (line == NULL)
- break;
-
- if (line[0] != '\n')
- process_cmd(&st, line);
- }
-
- return 0;
-}
diff --git a/source3/utils/editreg.c b/source3/utils/editreg.c
deleted file mode 100644
index ff9dacaa13..0000000000
--- a/source3/utils/editreg.c
+++ /dev/null
@@ -1,1874 +0,0 @@
-/*
- Samba Unix/Linux SMB client utility editreg.c
- Copyright (C) 2002 Richard Sharpe, rsharpe@richardsharpe.com
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-/*************************************************************************
-
- A utility to edit a Windows NT/2K etc registry file.
-
- Many of the ideas in here come from other people and software.
- I first looked in Wine in misc/registry.c and was also influenced by
- http://www.wednesday.demon.co.uk/dosreg.html
-
- Which seems to contain comments from someone else. I reproduce them here
- incase the site above disappears. It actually comes from
- http://home.eunet.no/~pnordahl/ntpasswd/WinReg.txt.
-
- The goal here is to read the registry into memory, manipulate it, and then
- write it out if it was changed by any actions of the user.
-
-The windows NT registry has 2 different blocks, where one can occur many
-times...
-
-the "regf"-Block
-================
-
-"regf" is obviosly the abbreviation for "Registry file". "regf" is the
-signature of the header-block which is always 4kb in size, although only
-the first 64 bytes seem to be used and a checksum is calculated over
-the first 0x200 bytes only!
-
-Offset Size Contents
-0x00000000 D-Word ID: ASCII-"regf" = 0x66676572
-0x00000004 D-Word ???? //see struct REGF
-0x00000008 D-Word ???? Always the same value as at 0x00000004
-0x0000000C Q-Word last modify date in WinNT date-format
-0x00000014 D-Word 1
-0x00000018 D-Word 3
-0x0000001C D-Word 0
-0x00000020 D-Word 1
-0x00000024 D-Word Offset of 1st key record
-0x00000028 D-Word Size of the data-blocks (Filesize-4kb)
-0x0000002C D-Word 1
-0x000001FC D-Word Sum of all D-Words from 0x00000000 to
-0x000001FB //XOR of all words. Nigel
-
-I have analyzed more registry files (from multiple machines running
-NT 4.0 german version) and could not find an explanation for the values
-marked with ???? the rest of the first 4kb page is not important...
-
-the "hbin"-Block
-================
-I don't know what "hbin" stands for, but this block is always a multiple
-of 4kb in size.
-
-Inside these hbin-blocks the different records are placed. The memory-
-management looks like a C-compiler heap management to me...
-
-hbin-Header
-===========
-Offset Size Contents
-0x0000 D-Word ID: ASCII-"hbin" = 0x6E696268
-0x0004 D-Word Offset from the 1st hbin-Block
-0x0008 D-Word Offset to the next hbin-Block
-0x001C D-Word Block-size
-
-The values in 0x0008 and 0x001C should be the same, so I don't know
-if they are correct or swapped...
-
-From offset 0x0020 inside a hbin-block data is stored with the following
-format:
-
-Offset Size Contents
-0x0000 D-Word Data-block size //this size must be a
-multiple of 8. Nigel
-0x0004 ???? Data
-
-If the size field is negative (bit 31 set), the corresponding block
-is free and has a size of -blocksize!
-
-That does not seem to be true. All block lengths seem to be negative! (Richard Sharpe)
-
-The data is stored as one record per block. Block size is a multiple
-of 4 and the last block reaches the next hbin-block, leaving no room.
-
-Records in the hbin-blocks
-==========================
-
-nk-Record
-
- The nk-record can be treated as a kombination of tree-record and
- key-record of the win 95 registry.
-
-lf-Record
-
- The lf-record is the counterpart to the RGKN-record (the
- hash-function)
-
-vk-Record
-
- The vk-record consists information to a single value.
-
-sk-Record
-
- sk (? Security Key ?) is the ACL of the registry.
-
-Value-Lists
-
- The value-lists contain information about which values are inside a
- sub-key and don't have a header.
-
-Datas
-
- The datas of the registry are (like the value-list) stored without a
- header.
-
-All offset-values are relative to the first hbin-block and point to the
-block-size field of the record-entry. to get the file offset, you have to add
-the header size (4kb) and the size field (4 bytes)...
-
-the nk-Record
-=============
-Offset Size Contents
-0x0000 Word ID: ASCII-"nk" = 0x6B6E
-0x0002 Word for the root-key: 0x2C, otherwise 0x20 //key symbolic links 0x10. Nigel
-0x0004 Q-Word write-date/time in windows nt notation
-0x0010 D-Word Offset of Owner/Parent key
-0x0014 D-Word number of sub-Keys
-0x001C D-Word Offset of the sub-key lf-Records
-0x0024 D-Word number of values
-0x0028 D-Word Offset of the Value-List
-0x002C D-Word Offset of the sk-Record
-
-0x0030 D-Word Offset of the Class-Name //see NK structure for the use of these fields. Nigel
-0x0044 D-Word Unused (data-trash) //some kind of run time index. Does not appear to be important. Nigel
-0x0048 Word name-length
-0x004A Word class-name length
-0x004C ???? key-name
-
-the Value-List
-==============
-Offset Size Contents
-0x0000 D-Word Offset 1st Value
-0x0004 D-Word Offset 2nd Value
-0x???? D-Word Offset nth Value
-
-To determine the number of values, you have to look at the owner-nk-record!
-
-Der vk-Record
-=============
-Offset Size Contents
-0x0000 Word ID: ASCII-"vk" = 0x6B76
-0x0002 Word name length
-0x0004 D-Word length of the data //if top bit is set when offset contains data. Nigel
-0x0008 D-Word Offset of Data
-0x000C D-Word Type of value
-0x0010 Word Flag
-0x0012 Word Unused (data-trash)
-0x0014 ???? Name
-
-If bit 0 of the flag-word is set, a name is present, otherwise the value has no name (=default)
-
-If the data-size is lower 5, the data-offset value is used to store the data itself!
-
-The data-types
-==============
-Wert Beteutung
-0x0001 RegSZ: character string (in UNICODE!)
-0x0002 ExpandSZ: string with "%var%" expanding (UNICODE!)
-0x0003 RegBin: raw-binary value
-0x0004 RegDWord: Dword
-0x0007 RegMultiSZ: multiple strings, seperated with 0
- (UNICODE!)
-
-The "lf"-record
-===============
-Offset Size Contents
-0x0000 Word ID: ASCII-"lf" = 0x666C
-0x0002 Word number of keys
-0x0004 ???? Hash-Records
-
-Hash-Record
-===========
-Offset Size Contents
-0x0000 D-Word Offset of corresponding "nk"-Record
-0x0004 D-Word ASCII: the first 4 characters of the key-name, padded with 0's. Case sensitiv!
-
-Keep in mind, that the value at 0x0004 is used for checking the data-consistency! If you change the
-key-name you have to change the hash-value too!
-
-//These hashrecords must be sorted low to high within the lf record. Nigel.
-
-The "sk"-block
-==============
-(due to the complexity of the SAM-info, not clear jet)
-(This is just a security descriptor in the data. R Sharpe.)
-
-
-Offset Size Contents
-0x0000 Word ID: ASCII-"sk" = 0x6B73
-0x0002 Word Unused
-0x0004 D-Word Offset of previous "sk"-Record
-0x0008 D-Word Offset of next "sk"-Record
-0x000C D-Word usage-counter
-0x0010 D-Word Size of "sk"-record in bytes
-???? //standard self
-relative security desciptor. Nigel
-???? ???? Security and auditing settings...
-????
-
-The usage counter counts the number of references to this
-"sk"-record. You can use one "sk"-record for the entire registry!
-
-Windows nt date/time format
-===========================
-The time-format is a 64-bit integer which is incremented every
-0,0000001 seconds by 1 (I don't know how accurate it realy is!)
-It starts with 0 at the 1st of january 1601 0:00! All values are
-stored in GMT time! The time-zone is important to get the real
-time!
-
-Common values for win95 and win-nt
-==================================
-Offset values marking an "end of list", are either 0 or -1 (0xFFFFFFFF).
-If a value has no name (length=0, flag(bit 0)=0), it is treated as the
-"Default" entry...
-If a value has no data (length=0), it is displayed as empty.
-
-simplyfied win-3.?? registry:
-=============================
-
-+-----------+
-| next rec. |---+ +----->+------------+
-| first sub | | | | Usage cnt. |
-| name | | +-->+------------+ | | length |
-| value | | | | next rec. | | | text |------->+-------+
-+-----------+ | | | name rec. |--+ +------------+ | xxxxx |
- +------------+ | | value rec. |-------->+------------+ +-------+
- v | +------------+ | Usage cnt. |
-+-----------+ | | length |
-| next rec. | | | text |------->+-------+
-| first sub |------+ +------------+ | xxxxx |
-| name | +-------+
-| value |
-+-----------+
-
-Greatly simplyfied structure of the nt-registry:
-================================================
-
-+---------------------------------------------------------------+
-| |
-v |
-+---------+ +---------->+-----------+ +----->+---------+ |
-| "nk" | | | lf-rec. | | | nk-rec. | |
-| ID | | | # of keys | | | parent |---+
-| Date | | | 1st key |--+ | .... |
-| parent | | +-----------+ +---------+
-| suk-keys|-----+
-| values |--------------------->+----------+
-| SK-rec. |---------------+ | 1. value |--> +----------+
-| class |--+ | +----------+ | vk-rec. |
-+---------+ | | | .... |
- v | | data |--> +-------+
- +------------+ | +----------+ | xxxxx |
- | Class name | | +-------+
- +------------+ |
- v
- +---------+ +---------+
- +----->| next sk |--->| Next sk |--+
- | +---| prev sk |<---| prev sk | |
- | | | .... | | ... | |
- | | +---------+ +---------+ |
- | | ^ |
- | | | |
- | +--------------------+ |
- +----------------------------------+
-
----------------------------------------------------------------------------
-
-Hope this helps.... (Although it was "fun" for me to uncover this things,
- it took me several sleepless nights ;)
-
- B.D.
-
-*************************************************************************/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <assert.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <sys/mman.h>
-#include <string.h>
-#include <fcntl.h>
-
-static int verbose = 0;
-
-/*
- * These definitions are for the in-memory registry structure.
- * It is a tree structure that mimics what you see with tools like regedit
- */
-
-/*
- * DateTime struct for Windows
- */
-
-typedef struct date_time_s {
- unsigned int low, high;
-} NTTIME;
-
-/*
- * Definition of a Key. It has a name, classname, date/time last modified,
- * sub-keys, values, and a security descriptor
- */
-
-#define REG_ROOT_KEY 1
-#define REG_SUB_KEY 2
-#define REG_SYM_LINK 3
-
-typedef struct reg_key_s {
- char *name; /* Name of the key */
- char *class_name;
- int type; /* One of REG_ROOT_KEY or REG_SUB_KEY */
- NTTIME last_mod; /* Time last modified */
- struct reg_key_s *owner;
- struct key_list_s *sub_keys;
- struct val_list_s *values;
- struct key_sec_desc_s *security;
-} REG_KEY;
-
-/*
- * The KEY_LIST struct lists sub-keys.
- */
-
-typedef struct key_list_s {
- int key_count;
- REG_KEY *keys[1];
-} KEY_LIST;
-
-typedef struct val_key_s {
- char *name;
- int has_name;
- int data_type;
- int data_len;
- void *data_blk; /* Might want a separate block */
-} VAL_KEY;
-
-typedef struct val_list_s {
- int val_count;
- VAL_KEY *vals[1];
-} VAL_LIST;
-
-#ifndef MAXSUBAUTHS
-#define MAXSUBAUTHS 15
-#endif
-
-typedef struct dom_sid_s {
- unsigned char ver, auths;
- unsigned char auth[6];
- unsigned int sub_auths[MAXSUBAUTHS];
-} DOM_SID;
-
-typedef struct ace_struct_s {
- unsigned char type, flags;
- unsigned int perms; /* Perhaps a better def is in order */
- DOM_SID *trustee;
-} ACE;
-
-typedef struct acl_struct_s {
- unsigned short rev, refcnt;
- unsigned short num_aces;
- ACE *aces[1];
-} ACL;
-
-typedef struct sec_desc_s {
- unsigned int rev, type;
- DOM_SID *owner, *group;
- ACL *sacl, *dacl;
-} SEC_DESC;
-
-#define SEC_DESC_NON 0
-#define SEC_DESC_RES 1
-#define SEC_DESC_OCU 2
-
-typedef struct key_sec_desc_s {
- struct key_sec_desc_s *prev, *next;
- int ref_cnt;
- int state;
- SEC_DESC *sec_desc;
-} KEY_SEC_DESC;
-
-
-/*
- * An API for accessing/creating/destroying items above
- */
-
-/*
- * Iterate over the keys, depth first, calling a function for each key
- * and indicating if it is terminal or non-terminal and if it has values.
- *
- * In addition, for each value in the list, call a value list function
- */
-
-/*
- * There should eventually be one to deal with security keys as well
- */
-
-typedef int (*key_print_f)(const char *path, char *key_name, char *class_name,
- int root, int terminal, int values);
-
-typedef int (*val_print_f)(const char *path, char *val_name, int val_type,
- int data_len, void *data_blk, int terminal,
- int first, int last);
-
-typedef int (*sec_print_f)(SEC_DESC *sec_desc);
-
-typedef struct regf_struct_s REGF;
-
-int nt_key_iterator(REGF *regf, REG_KEY *key_tree, int bf, const char *path,
- key_print_f key_print, sec_print_f sec_print,
- val_print_f val_print);
-
-int nt_val_list_iterator(REGF *regf, VAL_LIST *val_list, int bf, char *path,
- int terminal, val_print_f val_print)
-{
- int i;
-
- if (!val_list) return 1;
-
- if (!val_print) return 1;
-
- for (i=0; i<val_list->val_count; i++) {
- if (!val_print(path, val_list->vals[i]->name, val_list->vals[i]->data_type,
- val_list->vals[i]->data_len, val_list->vals[i]->data_blk,
- terminal,
- (i == 0),
- (i == val_list->val_count))) {
-
- return 0;
-
- }
- }
-
- return 1;
-}
-
-int nt_key_list_iterator(REGF *regf, KEY_LIST *key_list, int bf, char *path,
- key_print_f key_print, sec_print_f sec_print,
- val_print_f val_print)
-{
- int i;
-
- if (!key_list) return 1;
-
- for (i=0; i< key_list->key_count; i++) {
- if (!nt_key_iterator(regf, key_list->keys[i], bf, path, key_print,
- sec_print, val_print)) {
- return 0;
- }
- }
- return 1;
-}
-
-int nt_key_iterator(REGF *regf, REG_KEY *key_tree, int bf, const char *path,
- key_print_f key_print, sec_print_f sec_print,
- val_print_f val_print)
-{
- int path_len = strlen(path);
- char *new_path;
-
- if (!regf || !key_tree)
- return -1;
-
- /* List the key first, then the values, then the sub-keys */
-
- if (key_print) {
-
- if (!(*key_print)(path, key_tree->name,
- key_tree->class_name,
- (key_tree->type == REG_ROOT_KEY),
- (key_tree->sub_keys == NULL),
- (key_tree->values?(key_tree->values->val_count):0)))
- return 0;
- }
-
- /*
- * If we have a security print routine, call it
- */
- if (sec_print) {
- if (key_tree->security && !(*sec_print)(key_tree->security->sec_desc))
- return 0;
- }
-
- new_path = (char *)malloc(path_len + 1 + strlen(key_tree->name) + 1);
- if (!new_path) return 0; /* Errors? */
- new_path[0] = '\0';
- strcat(new_path, path);
- strcat(new_path, "\\");
- strcat(new_path, key_tree->name);
-
- /*
- * Now, iterate through the values in the val_list
- */
-
- if (key_tree->values &&
- !nt_val_list_iterator(regf, key_tree->values, bf, new_path,
- (key_tree->values!=NULL),
- val_print)) {
-
- free(new_path);
- return 0;
- }
-
- /*
- * Now, iterate through the keys in the key list
- */
-
- if (key_tree->sub_keys &&
- !nt_key_list_iterator(regf, key_tree->sub_keys, bf, new_path, key_print,
- sec_print, val_print)) {
- free(new_path);
- return 0;
- }
-
- free(new_path);
- return 1;
-}
-
-/* Make, delete keys */
-
-
-
-int nt_delete_val_list(VAL_LIST *vl)
-{
-
- return 1;
-}
-
-int nt_delete_val_key(VAL_KEY *val_key)
-{
-
- return 1;
-}
-
-int nt_delete_key_list(KEY_LIST *key_list)
-{
-
- return 1;
-}
-
-int nt_delete_sid(DOM_SID *sid)
-{
-
- if (sid) free(sid);
- return 1;
-
-}
-
-int nt_delete_ace(ACE *ace)
-{
-
- if (ace) {
- nt_delete_sid(ace->trustee);
- free(ace);
- }
- return 1;
-
-}
-
-int nt_delete_acl(ACL *acl)
-{
-
- if (acl) {
- int i;
-
- for (i=0; i<acl->num_aces; i++)
- nt_delete_ace(acl->aces[i]);
-
- free(acl);
- }
- return 1;
-}
-
-int nt_delete_sec_desc(SEC_DESC *sec_desc)
-{
-
- if (sec_desc) {
-
- nt_delete_sid(sec_desc->owner);
- nt_delete_sid(sec_desc->group);
- nt_delete_acl(sec_desc->sacl);
- nt_delete_acl(sec_desc->dacl);
- free(sec_desc);
-
- }
- return 1;
-}
-
-int nt_delete_key_sec_desc(KEY_SEC_DESC *key_sec_desc)
-{
-
- if (key_sec_desc) {
- key_sec_desc->ref_cnt--;
- if (key_sec_desc->ref_cnt<=0) {
- /*
- * There should always be a next and prev, even if they point to us
- */
- key_sec_desc->next->prev = key_sec_desc->prev;
- key_sec_desc->prev->next = key_sec_desc->next;
- nt_delete_sec_desc(key_sec_desc->sec_desc);
- }
- }
- return 1;
-}
-
-int nt_delete_reg_key(REG_KEY *key)
-{
-
- return 1;
-}
-
-/*
- * Create/delete key lists and add delete keys to/from a list, count the keys
- */
-
-
-/*
- * Create/delete value lists, add/delete values, count them
- */
-
-
-/*
- * Create/delete security descriptors, add/delete SIDS, count SIDS, etc.
- * We reference count the security descriptors. Any new reference increments
- * the ref count. If we modify an SD, we copy the old one, dec the ref count
- * and make the change. We also want to be able to check for equality so
- * we can reduce the number of SDs in use.
- */
-
-/*
- * Code to parse registry specification from command line or files
- *
- * Format:
- * [cmd:]key:type:value
- *
- * cmd = a|d|c|add|delete|change|as|ds|cs
- *
- */
-
-
-/*
- * Load and unload a registry file.
- *
- * Load, loads it into memory as a tree, while unload sealizes/flattens it
- */
-
-/*
- * Get the starting record for NT Registry file
- */
-
-/* A map of sk offsets in the regf to KEY_SEC_DESCs for quick lookup etc */
-typedef struct sk_map_s {
- int sk_off;
- KEY_SEC_DESC *key_sec_desc;
-} SK_MAP;
-
-/*
- * Where we keep all the regf stuff for one registry.
- * This is the structure that we use to tie the in memory tree etc
- * together. By keeping separate structs, we can operate on different
- * registries at the same time.
- * Currently, the SK_MAP is an array of mapping structure.
- * Since we only need this on input and output, we fill in the structure
- * as we go on input. On output, we know how many SK items we have, so
- * we can allocate the structure as we need to.
- * If you add stuff here that is dynamically allocated, add the
- * appropriate free statements below.
- */
-
-#define REGF_REGTYPE_NONE 0
-#define REGF_REGTYPE_NT 1
-#define REGF_REGTYPE_W9X 2
-
-#define TTTONTTIME(r, t1, t2) (r)->last_mod_time.low = (t1); \
- (r)->last_mod_time.high = (t2);
-
-#define REGF_HDR_BLKSIZ 0x1000
-
-struct regf_struct_s {
- int reg_type;
- char *regfile_name, *outfile_name;
- int fd;
- struct stat sbuf;
- char *base;
- int modified;
- NTTIME last_mod_time;
- REG_KEY *root; /* Root of the tree for this file */
- int sk_count, sk_map_size;
- SK_MAP *sk_map;
-};
-
-/*
- * Structures for dealing with the on-disk format of the registry
- */
-
-#define IVAL(buf) ((unsigned int) \
- (unsigned int)*((unsigned char *)(buf)+3)<<24| \
- (unsigned int)*((unsigned char *)(buf)+2)<<16| \
- (unsigned int)*((unsigned char *)(buf)+1)<<8| \
- (unsigned int)*((unsigned char *)(buf)+0))
-
-#define SVAL(buf) ((unsigned short) \
- (unsigned short)*((unsigned char *)(buf)+1)<<8| \
- (unsigned short)*((unsigned char *)(buf)+0))
-
-#define CVAL(buf) ((unsigned char)*((unsigned char *)(buf)))
-
-#define OFF(f) ((f) + REGF_HDR_BLKSIZ + 4)
-#define LOCN(base, f) ((base) + OFF(f))
-
-/*
- * All of the structures below actually have a four-byte lenght before them
- * which always seems to be negative. The following macro retrieves that
- * size as an integer
- */
-
-#define BLK_SIZE(b) ((int)*(int *)(((int *)b)-1))
-
-typedef unsigned int DWORD;
-typedef unsigned short WORD;
-
-#define REG_REGF_ID 0x66676572
-
-typedef struct regf_block {
- DWORD REGF_ID; /* regf */
- DWORD uk1;
- DWORD uk2;
- DWORD tim1, tim2;
- DWORD uk3; /* 1 */
- DWORD uk4; /* 3 */
- DWORD uk5; /* 0 */
- DWORD uk6; /* 1 */
- DWORD first_key; /* offset */
- unsigned int dblk_size;
- DWORD uk7[116]; /* 1 */
- DWORD chksum;
-} REGF_HDR;
-
-typedef struct hbin_sub_struct {
- DWORD dblocksize;
- char data[1];
-} HBIN_SUB_HDR;
-
-#define REG_HBIN_ID 0x6E696268
-
-typedef struct hbin_struct {
- DWORD HBIN_ID; /* hbin */
- DWORD next_off;
- DWORD prev_off;
- DWORD uk1;
- DWORD uk2;
- DWORD uk3;
- DWORD uk4;
- DWORD blk_size;
- HBIN_SUB_HDR hbin_sub_hdr;
-} HBIN_HDR;
-
-#define REG_NK_ID 0x6B6E
-
-typedef struct nk_struct {
- WORD NK_ID;
- WORD type;
- DWORD t1, t2;
- DWORD uk1;
- DWORD own_off;
- DWORD subk_num;
- DWORD uk2;
- DWORD lf_off;
- DWORD uk3;
- DWORD val_cnt;
- DWORD val_off;
- DWORD sk_off;
- DWORD clsnam_off;
- DWORD unk4[4];
- DWORD unk5;
- WORD nam_len;
- WORD clsnam_len;
- char key_nam[1]; /* Actual length determined by nam_len */
-} NK_HDR;
-
-#define REG_SK_ID 0x6B73
-
-typedef struct sk_struct {
- WORD SK_ID;
- WORD uk1;
- DWORD prev_off;
- DWORD next_off;
- DWORD ref_cnt;
- DWORD rec_size;
- char sec_desc[1];
-} SK_HDR;
-
-typedef struct ace_struct {
- unsigned char type;
- unsigned char flags;
- unsigned short length;
- unsigned int perms;
- DOM_SID trustee;
-} REG_ACE;
-
-typedef struct acl_struct {
- WORD rev;
- WORD size;
- DWORD num_aces;
- REG_ACE *aces; /* One or more ACEs */
-} REG_ACL;
-
-typedef struct sec_desc_rec {
- WORD rev;
- WORD type;
- DWORD owner_off;
- DWORD group_off;
- DWORD sacl_off;
- DWORD dacl_off;
-} REG_SEC_DESC;
-
-typedef struct hash_struct {
- DWORD nk_off;
- char hash[4];
-} HASH_REC;
-
-#define REG_LF_ID 0x666C
-
-typedef struct lf_struct {
- WORD LF_ID;
- WORD key_count;
- struct hash_struct hr[1]; /* Array of hash records, depending on key_count */
-} LF_HDR;
-
-typedef DWORD VL_TYPE[1]; /* Value list is an array of vk rec offsets */
-
-#define REG_VK_ID 0x6B76
-
-typedef struct vk_struct {
- WORD VK_ID;
- WORD nam_len;
- DWORD dat_len; /* If top-bit set, offset contains the data */
- DWORD dat_off;
- DWORD dat_type;
- WORD flag; /* =1, has name, else no name (=Default). */
- WORD unk1;
- char dat_name[1]; /* Name starts here ... */
-} VK_HDR;
-
-#define REG_TYPE_REGSZ 1
-#define REG_TYPE_EXPANDSZ 2
-#define REG_TYPE_BIN 3
-#define REG_TYPE_DWORD 4
-#define REG_TYPE_MULTISZ 7
-
-typedef struct _val_str {
- unsigned int val;
- const char * str;
-} VAL_STR;
-
-const VAL_STR reg_type_names[] = {
- { 1, "REG_SZ" },
- { 2, "REG_EXPAND_SZ" },
- { 3, "REG_BIN" },
- { 4, "REG_DWORD" },
- { 7, "REG_MULTI_SZ" },
- { 0, NULL },
-};
-
-const char *val_to_str(unsigned int val, const VAL_STR *val_array)
-{
- int i = 0;
-
- if (!val_array) return NULL;
-
- while (val_array[i].val && val_array[i].str) {
-
- if (val_array[i].val == val) return val_array[i].str;
- i++;
-
- }
-
- return NULL;
-
-}
-
-/*
- * Convert from UniCode to Ascii ... Does not take into account other lang
- * Restrict by ascii_max if > 0
- */
-int uni_to_ascii(unsigned char *uni, unsigned char *ascii, int ascii_max,
- int uni_max)
-{
- int i = 0;
-
- while (i < ascii_max && !(!uni[i*2] && !uni[i*2+1])) {
- if (uni_max > 0 && (i*2) >= uni_max) break;
- ascii[i] = uni[i*2];
- i++;
-
- }
-
- ascii[i] = '\0';
-
- return i;
-}
-
-/*
- * Convert a data value to a string for display
- */
-int data_to_ascii(unsigned char *datap, int len, int type, char *ascii, int ascii_max)
-{
- unsigned char *asciip;
- int i;
-
- switch (type) {
- case REG_TYPE_REGSZ:
- fprintf(stderr, "Len: %d\n", len);
- return uni_to_ascii(datap, ascii, len, ascii_max);
- break;
-
- case REG_TYPE_EXPANDSZ:
- return uni_to_ascii(datap, ascii, len, ascii_max);
- break;
-
- case REG_TYPE_BIN:
- asciip = ascii;
- for (i=0; (i<len)&&(i+1)*3<ascii_max; i++) {
- int str_rem = ascii_max - ((int)asciip - (int)ascii);
- asciip += snprintf(asciip, str_rem, "%02x", *(unsigned char *)(datap+i));
- if (i < len && str_rem > 0)
- *asciip = ' '; asciip++;
- }
- *asciip = '\0';
- return ((int)asciip - (int)ascii);
- break;
-
- case REG_TYPE_DWORD:
- if (*(int *)datap == 0)
- return snprintf(ascii, ascii_max, "0");
- else
- return snprintf(ascii, ascii_max, "0x%x", *(int *)datap);
- break;
-
- case REG_TYPE_MULTISZ:
-
- break;
-
- default:
- return 0;
- break;
- }
-
- return len;
-
-}
-
-REG_KEY *nt_get_key_tree(REGF *regf, NK_HDR *nk_hdr, int size);
-
-int nt_set_regf_input_file(REGF *regf, char *filename)
-{
- return ((regf->regfile_name = strdup(filename)) != NULL);
-}
-
-int nt_set_regf_output_file(REGF *regf, char *filename)
-{
- return ((regf->outfile_name = strdup(filename)) != NULL);
-}
-
-/* Create a regf structure and init it */
-
-REGF *nt_create_regf(void)
-{
- REGF *tmp = (REGF *)malloc(sizeof(REGF));
- if (!tmp) return tmp;
- bzero(tmp, sizeof(REGF));
- return tmp;
-}
-
-/* Free all the bits and pieces ... Assumes regf was malloc'd */
-/* If you add stuff to REGF, add the relevant free bits here */
-int nt_free_regf(REGF *regf)
-{
- if (!regf) return 0;
-
- if (regf->regfile_name) free(regf->regfile_name);
- if (regf->outfile_name) free(regf->outfile_name);
-
- /* Free the mmap'd area */
-
- if (regf->base) munmap(regf->base, regf->sbuf.st_size);
- regf->base = NULL;
- close(regf->fd); /* Ignore the error :-) */
-
- nt_delete_reg_key(regf->root); /* Free the tree */
- free(regf->sk_map);
- regf->sk_count = regf->sk_map_size = 0;
-
- free(regf);
-
- return 1;
-}
-
-/* Get the header of the registry. Return a pointer to the structure
- * If the mmap'd area has not been allocated, then mmap the input file
- */
-REGF_HDR *nt_get_regf_hdr(REGF *regf)
-{
- if (!regf)
- return NULL; /* What about errors */
-
- if (!regf->regfile_name)
- return NULL; /* What about errors */
-
- if (!regf->base) { /* Try to mmap etc the file */
-
- if ((regf->fd = open(regf->regfile_name, O_RDONLY, 0000)) <0) {
- return NULL; /* What about errors? */
- }
-
- if (fstat(regf->fd, &regf->sbuf) < 0) {
- return NULL;
- }
-
- regf->base = mmap(0, regf->sbuf.st_size, PROT_READ, MAP_SHARED, regf->fd, 0);
-
- if ((int)regf->base == 1) {
- fprintf(stderr, "Could not mmap file: %s, %s\n", regf->regfile_name,
- strerror(errno));
- return NULL;
- }
- }
-
- /*
- * At this point, regf->base != NULL, and we should be able to read the
- * header
- */
-
- assert(regf->base != NULL);
-
- return (REGF_HDR *)regf->base;
-}
-
-/*
- * Validate a regf header
- * For now, do nothing, but we should check the checksum
- */
-int valid_regf_hdr(REGF_HDR *regf_hdr)
-{
- if (!regf_hdr) return 0;
-
- return 1;
-}
-
-/*
- * Process an SK header ...
- * Every time we see a new one, add it to the map. Otherwise, just look it up.
- * We will do a simple linear search for the moment, since many KEYs have the
- * same security descriptor.
- * We allocate the map in increments of 10 entries.
- */
-
-/*
- * Create a new entry in the map, and increase the size of the map if needed
- */
-
-SK_MAP *alloc_sk_map_entry(REGF *regf, KEY_SEC_DESC *tmp, int sk_off)
-{
- if (!regf->sk_map) { /* Allocate a block of 10 */
- regf->sk_map = (SK_MAP *)malloc(sizeof(SK_MAP) * 10);
- if (!regf->sk_map) {
- free(tmp);
- return NULL;
- }
- regf->sk_map_size = 10;
- regf->sk_count = 1;
- (regf->sk_map)[0].sk_off = sk_off;
- (regf->sk_map)[0].key_sec_desc = tmp;
- }
- else { /* Simply allocate a new slot, unless we have to expand the list */
- int ndx = regf->sk_count;
- if (regf->sk_count >= regf->sk_map_size) {
- regf->sk_map = (SK_MAP *)realloc(regf->sk_map,
- (regf->sk_map_size + 10)*sizeof(SK_MAP));
- if (!regf->sk_map) {
- free(tmp);
- return NULL;
- }
- /*
- * ndx already points at the first entry of the new block
- */
- regf->sk_map_size += 10;
- }
- (regf->sk_map)[ndx].sk_off = sk_off;
- (regf->sk_map)[ndx].key_sec_desc = tmp;
- regf->sk_count++;
- }
- return regf->sk_map;
-}
-
-/*
- * Search for a KEY_SEC_DESC in the sk_map, but dont create one if not
- * found
- */
-
-KEY_SEC_DESC *lookup_sec_key(SK_MAP *sk_map, int count, int sk_off)
-{
- int i;
-
- if (!sk_map) return NULL;
-
- for (i = 0; i < count; i++) {
-
- if (sk_map[i].sk_off == sk_off)
- return sk_map[i].key_sec_desc;
-
- }
-
- return NULL;
-
-}
-
-/*
- * Allocate a KEY_SEC_DESC if we can't find one in the map
- */
-
-KEY_SEC_DESC *lookup_create_sec_key(REGF *regf, SK_MAP *sk_map, int sk_off)
-{
- KEY_SEC_DESC *tmp = lookup_sec_key(regf->sk_map, regf->sk_count, sk_off);
-
- if (tmp) {
- return tmp;
- }
- else { /* Allocate a new one */
- tmp = (KEY_SEC_DESC *)malloc(sizeof(KEY_SEC_DESC));
- if (!tmp) {
- return NULL;
- }
- tmp->state = SEC_DESC_RES;
- if (!alloc_sk_map_entry(regf, tmp, sk_off)) {
- return NULL;
- }
- return tmp;
- }
-}
-
-/*
- * Allocate storage and duplicate a SID
- * We could allocate the SID to be only the size needed, but I am too lazy.
- */
-DOM_SID *dup_sid(DOM_SID *sid)
-{
- DOM_SID *tmp = (DOM_SID *)malloc(sizeof(DOM_SID));
- int i;
-
- if (!tmp) return NULL;
- tmp->ver = sid->ver;
- tmp->auths = sid->auths;
- for (i=0; i<6; i++) {
- tmp->auth[i] = sid->auth[i];
- }
- for (i=0; i<tmp->auths&&i<MAXSUBAUTHS; i++) {
- tmp->sub_auths[i] = sid->sub_auths[i];
- }
- return tmp;
-}
-
-/*
- * Allocate space for an ACE and duplicate the registry encoded one passed in
- */
-ACE *dup_ace(REG_ACE *ace)
-{
- ACE *tmp = NULL;
-
- tmp = (ACE *)malloc(sizeof(ACE));
-
- if (!tmp) return NULL;
-
- tmp->type = CVAL(&ace->type);
- tmp->flags = CVAL(&ace->flags);
- tmp->perms = IVAL(&ace->perms);
- tmp->trustee = dup_sid(&ace->trustee);
- return tmp;
-}
-
-/*
- * Allocate space for an ACL and duplicate the registry encoded one passed in
- */
-ACL *dup_acl(REG_ACL *acl)
-{
- ACL *tmp = NULL;
- REG_ACE* ace;
- int i, num_aces;
-
- num_aces = IVAL(&acl->num_aces);
-
- tmp = (ACL *)malloc(sizeof(ACL) + (num_aces - 1)*sizeof(ACE *));
- if (!tmp) return NULL;
-
- tmp->num_aces = num_aces;
- tmp->refcnt = 1;
- tmp->rev = SVAL(&acl->rev);
- ace = (REG_ACE *)&acl->aces;
- for (i=0; i<num_aces; i++) {
- tmp->aces[i] = dup_ace(ace);
- ace = (REG_ACE *)((char *)ace + SVAL(&ace->length));
- /* XXX: FIXME, should handle malloc errors */
- }
-
- return tmp;
-}
-
-SEC_DESC *process_sec_desc(REGF *regf, REG_SEC_DESC *sec_desc)
-{
- SEC_DESC *tmp = NULL;
-
- tmp = (SEC_DESC *)malloc(sizeof(SEC_DESC));
-
- if (!tmp) {
- return NULL;
- }
-
- tmp->rev = SVAL(&sec_desc->rev);
- tmp->type = SVAL(&sec_desc->type);
- tmp->owner = dup_sid((DOM_SID *)((char *)sec_desc + IVAL(&sec_desc->owner_off)));
- if (!tmp->owner) {
- free(tmp);
- return NULL;
- }
- tmp->group = dup_sid((DOM_SID *)((char *)sec_desc + IVAL(&sec_desc->group_off)));
- if (!tmp->group) {
- free(tmp);
- return NULL;
- }
-
- /* Now pick up the SACL and DACL */
-
- if (sec_desc->sacl_off)
- tmp->sacl = dup_acl((REG_ACL *)((char *)sec_desc + IVAL(&sec_desc->sacl_off)));
- else
- tmp->sacl = NULL;
-
- if (sec_desc->dacl_off)
- tmp->dacl = dup_acl((REG_ACL *)((char *)sec_desc + IVAL(&sec_desc->dacl_off)));
- else
- tmp->dacl = NULL;
-
- return tmp;
-}
-
-KEY_SEC_DESC *process_sk(REGF *regf, SK_HDR *sk_hdr, int sk_off, int size)
-{
- KEY_SEC_DESC *tmp = NULL;
- int sk_next_off, sk_prev_off, sk_size;
- REG_SEC_DESC *sec_desc;
-
- if (!sk_hdr) return NULL;
-
- if (SVAL(&sk_hdr->SK_ID) != REG_SK_ID) {
- fprintf(stderr, "Unrecognized SK Header ID: %08X, %s\n", (int)sk_hdr,
- regf->regfile_name);
- return NULL;
- }
-
- if (-size < (sk_size = IVAL(&sk_hdr->rec_size))) {
- fprintf(stderr, "Incorrect SK record size: %d vs %d. %s\n",
- -size, sk_size, regf->regfile_name);
- return NULL;
- }
-
- /*
- * Now, we need to look up the SK Record in the map, and return it
- * Since the map contains the SK_OFF mapped to KEY_SEC_DESC, we can
- * use that
- */
-
- if (regf->sk_map &&
- ((tmp = lookup_sec_key(regf->sk_map, regf->sk_count, sk_off)) != NULL)
- && (tmp->state == SEC_DESC_OCU)) {
- tmp->ref_cnt++;
- return tmp;
- }
-
- /* Here, we have an item in the map that has been reserved, or tmp==NULL. */
-
- assert(tmp == NULL || (tmp && tmp->state != SEC_DESC_NON));
-
- /*
- * Now, allocate a KEY_SEC_DESC, and parse the structure here, and add the
- * new KEY_SEC_DESC to the mapping structure, since the offset supplied is
- * the actual offset of structure. The same offset will be used by all
- * all future references to this structure
- * We chould put all this unpleasantness in a function.
- */
-
- if (!tmp) {
- tmp = (KEY_SEC_DESC *)malloc(sizeof(KEY_SEC_DESC));
- if (!tmp) return NULL;
- bzero(tmp, sizeof(KEY_SEC_DESC));
-
- /*
- * Allocate an entry in the SK_MAP ...
- * We don't need to free tmp, because that is done for us if the
- * sm_map entry can't be expanded when we need more space in the map.
- */
-
- if (!alloc_sk_map_entry(regf, tmp, sk_off)) {
- return NULL;
- }
- }
-
- tmp->ref_cnt++;
- tmp->state = SEC_DESC_OCU;
-
- /*
- * Now, process the actual sec desc and plug the values in
- */
-
- sec_desc = (REG_SEC_DESC *)&sk_hdr->sec_desc[0];
- tmp->sec_desc = process_sec_desc(regf, sec_desc);
-
- /*
- * Now forward and back links. Here we allocate an entry in the sk_map
- * if it does not exist, and mark it reserved
- */
-
- sk_prev_off = IVAL(&sk_hdr->prev_off);
- tmp->prev = lookup_create_sec_key(regf, regf->sk_map, sk_prev_off);
- assert(tmp->prev != NULL);
- sk_next_off = IVAL(&sk_hdr->next_off);
- tmp->next = lookup_create_sec_key(regf, regf->sk_map, sk_next_off);
- assert(tmp->next != NULL);
-
- return tmp;
-}
-
-/*
- * Process a VK header and return a value
- */
-VAL_KEY *process_vk(REGF *regf, VK_HDR *vk_hdr, int size)
-{
- char val_name[1024];
- int nam_len, dat_len, flag, dat_type, dat_off, vk_id;
- const char *val_type;
- VAL_KEY *tmp = NULL;
-
- if (!vk_hdr) return NULL;
-
- if ((vk_id = SVAL(&vk_hdr->VK_ID)) != REG_VK_ID) {
- fprintf(stderr, "Unrecognized VK header ID: %0X, block: %0X, %s\n",
- vk_id, (int)vk_hdr, regf->regfile_name);
- return NULL;
- }
-
- nam_len = SVAL(&vk_hdr->nam_len);
- val_name[nam_len] = '\0';
- flag = SVAL(&vk_hdr->flag);
- dat_type = IVAL(&vk_hdr->dat_type);
- dat_len = IVAL(&vk_hdr->dat_len); /* If top bit, offset contains data */
- dat_off = IVAL(&vk_hdr->dat_off);
-
- tmp = (VAL_KEY *)malloc(sizeof(VAL_KEY));
- if (!tmp) {
- goto error;
- }
- bzero(tmp, sizeof(VAL_KEY));
- tmp->has_name = flag;
- tmp->data_type = dat_type;
-
- if (flag & 0x01) {
- strncpy(val_name, vk_hdr->dat_name, nam_len);
- tmp->name = strdup(val_name);
- if (!tmp->name) {
- goto error;
- }
- }
- else
- strncpy(val_name, "<No Name>", 10);
-
- /*
- * Allocate space and copy the data as a BLOB
- */
-
- if (dat_len) {
-
- char *dtmp = (char *)malloc(dat_len&0x7FFFFFFF);
-
- if (!dtmp) {
- goto error;
- }
-
- tmp->data_blk = dtmp;
-
- if ((dat_len&0x80000000) == 0) { /* The data is pointed to by the offset */
- char *dat_ptr = LOCN(regf->base, dat_off);
- bcopy(dat_ptr, dtmp, dat_len);
- }
- else { /* The data is in the offset */
- dat_len = dat_len & 0x7FFFFFFF;
- bcopy(&dat_off, dtmp, dat_len);
- }
-
- tmp->data_len = dat_len;
- }
-
- val_type = val_to_str(dat_type, reg_type_names);
-
- /*
- * We need to save the data area as well
- */
-
- if (verbose) fprintf(stdout, " %s : %s : \n", val_name, val_type);
-
- return tmp;
-
- error:
- /* XXX: FIXME, free the partially allocated struct */
- return NULL;
-
-}
-
-/*
- * Process a VL Header and return a list of values
- */
-VAL_LIST *process_vl(REGF *regf, VL_TYPE vl, int count, int size)
-{
- int i, vk_off;
- VK_HDR *vk_hdr;
- VAL_LIST *tmp = NULL;
-
- if (!vl) return NULL;
-
- if (-size < (count+1)*sizeof(int)){
- fprintf(stderr, "Error in VL header format. Size less than space required. %d\n", -size);
- return NULL;
- }
-
- tmp = (VAL_LIST *)malloc(sizeof(VAL_LIST) + (count - 1) * sizeof(VAL_KEY *));
- if (!tmp) {
- goto error;
- }
-
- for (i=0; i<count; i++) {
- vk_off = IVAL(&vl[i]);
- vk_hdr = (VK_HDR *)LOCN(regf->base, vk_off);
- tmp->vals[i] = process_vk(regf, vk_hdr, BLK_SIZE(vk_hdr));
- if (!tmp->vals[i]){
- goto error;
- }
- }
-
- tmp->val_count = count;
-
- return tmp;
-
- error:
- /* XXX: FIXME, free the partially allocated structure */
- return NULL;
-}
-
-/*
- * Process an LF Header and return a list of sub-keys
- */
-KEY_LIST *process_lf(REGF *regf, LF_HDR *lf_hdr, int size)
-{
- int count, i, nk_off;
- unsigned int lf_id;
- KEY_LIST *tmp;
-
- if (!lf_hdr) return NULL;
-
- if ((lf_id = SVAL(&lf_hdr->LF_ID)) != REG_LF_ID) {
- fprintf(stderr, "Unrecognized LF Header format: %0X, Block: %0X, %s.\n",
- lf_id, (int)lf_hdr, regf->regfile_name);
- return NULL;
- }
-
- assert(size < 0);
-
- count = SVAL(&lf_hdr->key_count);
-
- if (count <= 0) return NULL;
-
- /* Now, we should allocate a KEY_LIST struct and fill it in ... */
-
- tmp = (KEY_LIST *)malloc(sizeof(KEY_LIST) + (count - 1) * sizeof(REG_KEY *));
- if (!tmp) {
- goto error;
- }
-
- tmp->key_count = count;
-
- for (i=0; i<count; i++) {
- NK_HDR *nk_hdr;
-
- nk_off = IVAL(&lf_hdr->hr[i].nk_off);
- nk_hdr = (NK_HDR *)LOCN(regf->base, nk_off);
- tmp->keys[i] = nt_get_key_tree(regf, nk_hdr, BLK_SIZE(nk_hdr));
- if (!tmp->keys[i]) {
- goto error;
- }
- }
-
- return tmp;
-
- error:
- /* XXX: FIXME, free the partially allocated structure */
- return NULL;
-}
-
-/*
- * This routine is passed a NK_HDR pointer and retrieves the entire tree
- * from there down. It return a REG_KEY *.
- */
-REG_KEY *nt_get_key_tree(REGF *regf, NK_HDR *nk_hdr, int size)
-{
- REG_KEY *tmp = NULL;
- int name_len, clsname_len, lf_off, val_off, val_count, sk_off;
- unsigned int nk_id;
- LF_HDR *lf_hdr;
- VL_TYPE *vl;
- SK_HDR *sk_hdr;
- char key_name[1024], cls_name[1024];
-
- if (!nk_hdr) return NULL;
-
- if ((nk_id = SVAL(&nk_hdr->NK_ID)) != REG_NK_ID) {
- fprintf(stderr, "Unrecognized NK Header format: %08X, Block: %0X. %s\n",
- nk_id, (int)nk_hdr, regf->regfile_name);
- return NULL;
- }
-
- assert(size < 0);
-
- name_len = SVAL(&nk_hdr->nam_len);
- clsname_len = SVAL(&nk_hdr->clsnam_len);
-
- /*
- * The value of -size should be ge
- * (sizeof(NK_HDR) - 1 + name_len)
- * The -1 accounts for the fact that we included the first byte of
- * the name in the structure. clsname_len is the length of the thing
- * pointed to by clsnam_off
- */
-
- if (-size < (sizeof(NK_HDR) - 1 + name_len)) {
- fprintf(stderr, "Incorrect NK_HDR size: %d, %0X\n", -size, (int)nk_hdr);
- fprintf(stderr, "Sizeof NK_HDR: %d, name_len %d, clsname_len %d\n",
- sizeof(NK_HDR), name_len, clsname_len);
- /*return NULL;*/
- }
-
- if (verbose) fprintf(stdout, "NK HDR: Name len: %d, class name len: %d\n",
- name_len, clsname_len);
-
- /* Fish out the key name and process the LF list */
-
- assert(name_len < sizeof(key_name));
-
- /* Allocate the key struct now */
- tmp = (REG_KEY *)malloc(sizeof(REG_KEY));
- if (!tmp) return tmp;
- bzero(tmp, sizeof(REG_KEY));
-
- tmp->type = (SVAL(&nk_hdr->type)==0x2C?REG_ROOT_KEY:REG_SUB_KEY);
-
- strncpy(key_name, nk_hdr->key_nam, name_len);
- key_name[name_len] = '\0';
-
- if (verbose) fprintf(stdout, "Key name: %s\n", key_name);
-
- tmp->name = strdup(key_name);
- if (!tmp->name) {
- goto error;
- }
-
- /*
- * Fish out the class name, it is in UNICODE, while the key name is
- * ASCII :-)
- */
-
- if (clsname_len) { /* Just print in Ascii for now */
- char *clsnamep;
- int clsnam_off;
-
- clsnam_off = IVAL(&nk_hdr->clsnam_off);
- clsnamep = LOCN(regf->base, clsnam_off);
-
- bzero(cls_name, clsname_len);
- uni_to_ascii(clsnamep, cls_name, sizeof(cls_name), clsname_len);
-
- /*
- * I am keeping class name as an ascii string for the moment.
- * That means it needs to be converted on output.
- * XXX: FIXME
- */
-
- tmp->class_name = strdup(cls_name);
- if (!tmp->class_name) {
- goto error;
- }
-
- if (verbose) fprintf(stdout, " Class Name: %s\n", cls_name);
-
- }
-
- /*
- * If there are any values, process them here
- */
-
- val_count = IVAL(&nk_hdr->val_cnt);
-
- if (val_count) {
-
- val_off = IVAL(&nk_hdr->val_off);
- vl = (VL_TYPE *)LOCN(regf->base, val_off);
-
- tmp->values = process_vl(regf, *vl, val_count, BLK_SIZE(vl));
- if (!tmp->values) {
- goto error;
- }
-
- }
-
- /*
- * Also handle the SK header ...
- */
-
- sk_off = IVAL(&nk_hdr->sk_off);
- sk_hdr = (SK_HDR *)LOCN(regf->base, sk_off);
-
- if (sk_off != -1) {
-
- tmp->security = process_sk(regf, sk_hdr, sk_off, BLK_SIZE(sk_hdr));
-
- }
-
- lf_off = IVAL(&nk_hdr->lf_off);
-
- /*
- * No more subkeys if lf_off == -1
- */
-
- if (lf_off != -1) {
-
- lf_hdr = (LF_HDR *)LOCN(regf->base, lf_off);
-
- tmp->sub_keys = process_lf(regf, lf_hdr, BLK_SIZE(lf_hdr));
- if (!tmp->sub_keys){
- goto error;
- }
-
- }
-
- return tmp;
-
- error:
- if (tmp) nt_delete_reg_key(tmp);
- return NULL;
-}
-
-int nt_load_registry(REGF *regf)
-{
- REGF_HDR *regf_hdr;
- unsigned int regf_id, hbin_id;
- HBIN_HDR *hbin_hdr;
- NK_HDR *first_key;
-
- /* Get the header */
-
- if ((regf_hdr = nt_get_regf_hdr(regf)) == NULL) {
- return -1;
- }
-
- /* Now process that header and start to read the rest in */
-
- if ((regf_id = IVAL(&regf_hdr->REGF_ID)) != REG_REGF_ID) {
- fprintf(stderr, "Unrecognized NT registry header id: %0X, %s\n",
- regf_id, regf->regfile_name);
- return -1;
- }
-
- /*
- * Validate the header ...
- */
- if (!valid_regf_hdr(regf_hdr)) {
- fprintf(stderr, "Registry file header does not validate: %s\n",
- regf->regfile_name);
- return -1;
- }
-
- /* Update the last mod date, and then go get the first NK record and on */
-
- TTTONTTIME(regf, IVAL(&regf_hdr->tim1), IVAL(&regf_hdr->tim2));
-
- /*
- * The hbin hdr seems to be just uninteresting garbage. Check that
- * it is there, but that is all.
- */
-
- hbin_hdr = (HBIN_HDR *)(regf->base + REGF_HDR_BLKSIZ);
-
- if ((hbin_id = IVAL(&hbin_hdr->HBIN_ID)) != REG_HBIN_ID) {
- fprintf(stderr, "Unrecognized registry hbin hdr ID: %0X, %s\n",
- hbin_id, regf->regfile_name);
- return -1;
- }
-
- /*
- * Get a pointer to the first key from the hreg_hdr
- */
-
- first_key = (NK_HDR *)LOCN(regf->base, IVAL(&regf_hdr->first_key));
-
- /*
- * Now, get the registry tree by processing that NK recursively
- */
-
- regf->root = nt_get_key_tree(regf, first_key, BLK_SIZE(first_key));
-
- assert(regf->root != NULL);
-
- return 1;
-}
-
-/*
- * Main code from here on ...
- */
-
-/*
- * key print function here ...
- */
-
-int print_key(const char *path, char *name, char *class_name, int root,
- int terminal, int vals)
-{
-
- if (terminal) fprintf(stdout, "%s\\%s\n", path, name);
-
- return 1;
-}
-
-/*
- * Sec Desc print functions
- */
-
-void print_sid(DOM_SID *sid)
-{
- int i, comps = sid->auths;
- fprintf(stdout, "S-%u-%u", sid->ver, sid->auth[5]);
-
- for (i = 0; i < comps; i++) {
-
- fprintf(stdout, "-%u", sid->sub_auths[i]);
-
- }
- fprintf(stdout, "\n");
-}
-
-int print_sec(SEC_DESC *sec_desc)
-{
-
- fprintf(stdout, " SECURITY\n");
- fprintf(stdout, " Owner: ");
- print_sid(sec_desc->owner);
- fprintf(stdout, " Group: ");
- print_sid(sec_desc->group);
- return 1;
-}
-
-/*
- * Value print function here ...
- */
-int print_val(const char *path, char *val_name, int val_type, int data_len,
- void *data_blk, int terminal, int first, int last)
-{
- char data_asc[1024];
-
- bzero(data_asc, sizeof(data_asc));
- if (!terminal && first)
- fprintf(stdout, "%s\n", path);
- data_to_ascii((unsigned char *)data_blk, data_len, val_type, data_asc,
- sizeof(data_asc) - 1);
- fprintf(stdout, " %s : %s : %s\n", (val_name?val_name:"<No Name>"),
- val_to_str(val_type, reg_type_names), data_asc);
- return 1;
-}
-
-void usage(void)
-{
- fprintf(stderr, "Usage: editreg [-v] [-k] <registryfile>\n");
- fprintf(stderr, "Version: 0.1\n\n");
- fprintf(stderr, "\n\t-v\t sets verbose mode");
-}
-
-int main(int argc, char *argv[])
-{
- REGF *regf;
- extern char *optarg;
- extern int optind;
- int opt;
-
- if (argc < 2) {
- usage();
- exit(1);
- }
-
- /*
- * Now, process the arguments
- */
-
- while ((opt = getopt(argc, argv, "vk")) != EOF) {
- switch (opt) {
- case 'v':
- verbose++;
- break;
-
- case 'k':
- break;
-
- default:
- usage();
- exit(1);
- break;
- }
- }
-
- if ((regf = nt_create_regf()) == NULL) {
- fprintf(stderr, "Could not create registry object: %s\n", strerror(errno));
- exit(2);
- }
-
- if (!nt_set_regf_input_file(regf, argv[optind])) {
- fprintf(stderr, "Could not set name of registry file: %s, %s\n",
- argv[1], strerror(errno));
- exit(3);
- }
-
- /* Now, open it, and bring it into memory :-) */
-
- if (nt_load_registry(regf) < 0) {
- fprintf(stderr, "Could not load registry: %s\n", argv[1]);
- exit(4);
- }
-
- /*
- * At this point, we should have a registry in memory and should be able
- * to iterate over it.
- */
-
- nt_key_iterator(regf, regf->root, 0, "", print_key, print_sec, print_val);
- return 0;
-}
-
diff --git a/source3/utils/net_lookup.c b/source3/utils/net_lookup.c
index 271094480c..eedc2c7f92 100644
--- a/source3/utils/net_lookup.c
+++ b/source3/utils/net_lookup.c
@@ -201,7 +201,7 @@ static int net_lookup_kdc(int argc, const char **argv)
realm.length = strlen(realm.data);
}
- rc = krb5_locate_kdc(ctx, &realm, &addrs, &num_kdcs, 0);
+ rc = krb5_locate_kdc(ctx, &realm, (struct sockaddr **)&addrs, &num_kdcs, 0);
if (rc) {
DEBUG(1, ("krb5_locate_kdc failed (%s)\n", error_message(rc)));
return -1;
diff --git a/source3/utils/pdbedit.c b/source3/utils/pdbedit.c
index cd4cdfddb4..09493f9a89 100644
--- a/source3/utils/pdbedit.c
+++ b/source3/utils/pdbedit.c
@@ -517,9 +517,6 @@ int main (int argc, char **argv)
exit(1);
}
- if(lp_modules())
- smb_load_modules(lp_modules());
-
if (!init_names())
exit(1);
diff --git a/source3/web/cgi.c b/source3/web/cgi.c
index 35f3266283..018dd3602f 100644
--- a/source3/web/cgi.c
+++ b/source3/web/cgi.c
@@ -291,6 +291,37 @@ static void cgi_web_auth(void)
passwd_free(&pwd);
}
+/***************************************************************************
+decode a base64 string in-place - simple and slow algorithm
+ ***************************************************************************/
+static void base64_decode(char *s)
+{
+ const char *b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ int bit_offset, byte_offset, idx, i, n;
+ unsigned char *d = (unsigned char *)s;
+ char *p;
+
+ n=i=0;
+
+ while (*s && (p=strchr_m(b64,*s))) {
+ idx = (int)(p - b64);
+ byte_offset = (i*6)/8;
+ bit_offset = (i*6)%8;
+ d[byte_offset] &= ~((1<<(8-bit_offset))-1);
+ if (bit_offset < 3) {
+ d[byte_offset] |= (idx << (2-bit_offset));
+ n = byte_offset+1;
+ } else {
+ d[byte_offset] |= (idx >> (bit_offset-2));
+ d[byte_offset+1] = 0;
+ d[byte_offset+1] |= (idx << (8-(bit_offset-2))) & 0xFF;
+ n = byte_offset+2;
+ }
+ s++; i++;
+ }
+ /* null terminate */
+ d[n] = 0;
+}
/***************************************************************************
handle a http authentication line