diff --git a/README.md b/README.md index b606c84..5989811 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,9 @@ Portable emulator of an Apple II+ or //e. Written in Go. - DSK - PO - [WOZ 1.0 or 2.0](storage/WozSupportStatus.md) (read only) + - 13 Sector 5 1/4 diskettes. Uncompressed or compressed witth gzip or zip. Supported formats: + - NIB (read only) + - [WOZ 2.0](storage/WozSupportStatus.md) (read only) - 3.5 disks in PO or 2MG format - Hard disk in HDV or 2MG format with ProDOS and SmartPort support - Emulated extension cards: @@ -225,6 +228,7 @@ The available pre-configured models are: 2enh: Apple //e 2plus: Apple ][+ base64a: Base 64A + dos32: Apple ][+ with 13 sectors disk adapter and DOS 3.2x swyft: swyft The available cards are: diff --git a/cardDisk2.go b/cardDisk2.go index e78ad5e..e0fd0ef 100644 --- a/cardDisk2.go +++ b/cardDisk2.go @@ -25,6 +25,8 @@ NIB: 35 tracks 6656 bytes, 232960 bytes // CardDisk2 is a DiskII interface card type CardDisk2 struct { cardBase + sectors13 bool + selected int // q5, Only 0 and 1 supported power bool // q4 drive [2]cardDisk2Drive @@ -57,13 +59,11 @@ func newCardDisk2Builder() *cardBuilder { {"disk2", "Diskette image for drive 2", ""}, {"tracktracer", "Trace how the disk head moves between tracks", "false"}, {"fast", "Enable CPU burst when accessing the disk", "true"}, + {"sectors13", "Use 13 sectors per track ROM", "false"}, }, buildFunc: func(params map[string]string) (Card, error) { var c CardDisk2 - err := c.loadRomFromResource("/DISK2.rom", cardRomSimple) - if err != nil { - return nil, err - } + c.sectors13 = paramsGetBool(params, "sectors13") disk1 := paramsGetPath(params, "disk1") if disk1 != "" { @@ -71,6 +71,10 @@ func newCardDisk2Builder() *cardBuilder { if err != nil { return nil, err } + if c.drive[0].diskette.Is13Sectors() && !c.sectors13 { + // Auto configure for 13 sectors per track + c.sectors13 = true + } } disk2 := paramsGetPath(params, "disk2") if disk2 != "" { @@ -79,6 +83,17 @@ func newCardDisk2Builder() *cardBuilder { return nil, err } } + + P5RomFile := "/Apple Disk II 16 Sector Interface Card ROM P5 - 341-0027.bin" + if c.sectors13 { + P5RomFile = "/Apple Disk II 13 Sector Interface Card ROM P5 - 341-0009.bin" + } + + err := c.loadRomFromResource(P5RomFile, cardRomSimple) + if err != nil { + return nil, err + } + trackTracer := paramsGetBool(params, "tracktracer") if trackTracer { c.trackTracer = makeTrackTracerLogger() @@ -92,7 +107,11 @@ func newCardDisk2Builder() *cardBuilder { // GetInfo returns smartPort info func (c *CardDisk2) GetInfo() map[string]string { info := make(map[string]string) - info["rom"] = "16 sector" + if c.sectors13 { + info["rom"] = "13 sector" + } else { + info["rom"] = "16 sector" + } info["power"] = strconv.FormatBool(c.power) info["D1 name"] = c.drive[0].name diff --git a/cardDisk2Sequencer.go b/cardDisk2Sequencer.go index ae06759..cc4aff7 100644 --- a/cardDisk2Sequencer.go +++ b/cardDisk2Sequencer.go @@ -22,7 +22,9 @@ See: type CardDisk2Sequencer struct { cardBase - p6ROM []uint8 + sectors13 bool + p6ROM []uint8 + q [8]bool // 8-bit latch SN74LS259 register uint8 // 8-bit shift/storage register SN74LS323 sequence uint8 // 4 bits stored in an hex flip-flop SN74LS174 @@ -66,16 +68,6 @@ func newCardDisk2SequencerBuilder() *cardBuilder { }, buildFunc: func(params map[string]string) (Card, error) { var c CardDisk2Sequencer - err := c.loadRomFromResource("/DISK2.rom", cardRomSimple) - if err != nil { - return nil, err - } - - data, _, err := LoadResource("/DISK2P6.rom") - if err != nil { - return nil, err - } - c.p6ROM = data disk1 := paramsGetString(params, "disk1") if disk1 != "" { @@ -83,7 +75,9 @@ func newCardDisk2SequencerBuilder() *cardBuilder { if err != nil { return nil, err } + c.sectors13 = c.drive[0].data.Info.BootSectorFormat == 2 // Woz 13 sector disk } + disk2 := paramsGetString(params, "disk2") if disk2 != "" { err := c.drive[1].insertDiskette(disk2) @@ -91,6 +85,26 @@ func newCardDisk2SequencerBuilder() *cardBuilder { return nil, err } } + + P5RomFile := "/Apple Disk II 16 Sector Interface Card ROM P5 - 341-0027.bin" + P6RomFile := "/Apple Disk II 16 Sector Interface Card ROM P6 - 341-0028.bin" + if c.sectors13 { + P5RomFile = "/Apple Disk II 13 Sector Interface Card ROM P5 - 341-0009.bin" + // Buggy sequencer not need for 13 sectors disks to work + //P6RomFile = "/Apple Disk II 13 Sector Interface Card ROM P6 - 341-0010.bin" + } + + err := c.loadRomFromResource(P5RomFile, cardRomSimple) + if err != nil { + return nil, err + } + + data, _, err := LoadResource(P6RomFile) + if err != nil { + return nil, err + } + c.p6ROM = data + trackTracer := paramsGetBool(params, "tracktracer") if trackTracer { c.trackTracer = makeTrackTracerLogger() @@ -103,7 +117,11 @@ func newCardDisk2SequencerBuilder() *cardBuilder { // GetInfo returns card info func (c *CardDisk2Sequencer) GetInfo() map[string]string { info := make(map[string]string) - info["rom"] = "16 sector" + if c.sectors13 { + info["rom"] = "13 sector" + } else { + info["rom"] = "16 sector" + } // TODO: add drives info return info } diff --git a/cardDisk2SequencerDrive.go b/cardDisk2SequencerDrive.go index 38c0eb5..ae69adc 100644 --- a/cardDisk2SequencerDrive.go +++ b/cardDisk2SequencerDrive.go @@ -34,9 +34,6 @@ func (d *cardDisk2SequencerDrive) insertDiskette(filename string) error { if f.Info.DiskType != 1 { return errors.New("only 5.25 disks are supported") } - if f.Info.BootSectorFormat == 2 { // Info not available in WOZ 1.0 - return errors.New("woz 13 sector disks are not supported") - } d.data = f d.writeProtected = !writeable diff --git a/configs/dos32.cfg b/configs/dos32.cfg new file mode 100644 index 0000000..9bf440c --- /dev/null +++ b/configs/dos32.cfg @@ -0,0 +1,4 @@ +name: Apple ][ with 13 sectors disk adapter and DOS 3.2x +parent: 2 +s0: multirom,bank=7,basic=0 +s6: diskii,sectors13,disk1=/dos32.nib \ No newline at end of file diff --git a/configuration.go b/configuration.go index 779f110..1a5dcfc 100644 --- a/configuration.go +++ b/configuration.go @@ -63,9 +63,13 @@ func (c *configuration) getHas(key string) (string, bool) { return value, ok } +func (c *configuration) has(key string) bool { + _, ok := c.getHas(key) + return ok +} + func (c *configuration) get(key string) string { - key = strings.ToLower(key) - value, ok := c.data[key] + value, ok := c.getHas(key) if !ok { // Should not happen panic(fmt.Errorf("key %s not found", key)) diff --git a/doc/usage.txt b/doc/usage.txt index da94663..c90c64d 100644 --- a/doc/usage.txt +++ b/doc/usage.txt @@ -50,6 +50,7 @@ The available pre-configured models are: 2enh: Apple //e 2plus: Apple ][+ base64a: Base 64A + dos32: Apple ][+ with 13 sectors disk adapter and DOS 3.2x swyft: swyft The available cards are: diff --git a/e2e_boot_test.go b/e2e_boot_test.go index 72cc2c2..f333c34 100644 --- a/e2e_boot_test.go +++ b/e2e_boot_test.go @@ -5,11 +5,17 @@ import ( "testing" ) -func testBoots(t *testing.T, model string, disk string, cycles uint64, banner string, prompt string, col80 bool) { - overrides := newConfiguration() +func testBoots(t *testing.T, model string, disk string, overrides *configuration, cycles uint64, banner string, prompt string, col80 bool) { + if overrides == nil { + overrides = newConfiguration() + } + if disk != "" { + if overrides.has(confS6) { + t.Fatal("Do not set custom slot 6 configuration and custom disk") + } overrides.set(confS6, "diskii,disk1=\""+disk+"\"") - } else { + } else if !overrides.has(confS6) { overrides.set(confS6, "empty") } @@ -36,29 +42,36 @@ func testBoots(t *testing.T, model string, disk string, cycles uint64, banner st } func TestPlusBoots(t *testing.T) { - testBoots(t, "2plus", "", 200_000, "APPLE ][", "\n]", false) + testBoots(t, "2plus", "", nil, 200_000, "APPLE ][", "\n]", false) } func Test2EBoots(t *testing.T) { - testBoots(t, "2e", "", 200_000, "Apple ][", "\n]", false) + testBoots(t, "2e", "", nil, 200_000, "Apple ][", "\n]", false) } func Test2EnhancedBoots(t *testing.T) { - testBoots(t, "2enh", "", 200_000, "Apple //e", "\n]", false) + testBoots(t, "2enh", "", nil, 200_000, "Apple //e", "\n]", false) } func TestBase64Boots(t *testing.T) { - testBoots(t, "base64a", "", 1_000_000, "BASE 64A", "\n]", false) + testBoots(t, "base64a", "", nil, 1_000_000, "BASE 64A", "\n]", false) +} + +func TestPlusDOS32Boots(t *testing.T) { + overrides := newConfiguration() + overrides.set(confS0, "multirom,bank=7,basic=0") + overrides.set(confS6, "diskii,sectors13,disk1=/dos32.nib") + testBoots(t, "2plus", "", overrides, 100_000_000, "MASTER DISKETTE VERSION 3.2 STANDARD", "\n>", false) } func TestPlusDOS33Boots(t *testing.T) { - testBoots(t, "2plus", "/dos33.dsk", 100_000_000, "DOS VERSION 3.3", "\n]", false) + testBoots(t, "2plus", "/dos33.dsk", nil, 100_000_000, "DOS VERSION 3.3", "\n]", false) } func TestProdDOSBoots(t *testing.T) { - testBoots(t, "2enh", "/ProDOS_2_4_3.po", 100_000_000, "BITSY BYE", "NEW VOL", false) + testBoots(t, "2enh", "/ProDOS_2_4_3.po", nil, 100_000_000, "BITSY BYE", "NEW VOL", false) } func TestCPM65Boots(t *testing.T) { - testBoots(t, "2enh", "/cpm65.po", 5_000_000, "CP/M-65 for the Apple II", "\nA>", true) + testBoots(t, "2enh", "/cpm65.po", nil, 5_000_000, "CP/M-65 for the Apple II", "\nA>", true) } diff --git a/e2e_woz_test.go b/e2e_woz_test.go index 2cfd521..1abf041 100644 --- a/e2e_woz_test.go +++ b/e2e_woz_test.go @@ -55,9 +55,9 @@ func TestWoz(t *testing.T) { cycleLimit uint64 expectedTracks []int }{ - // How to being - // DOS 3.2, requires 13 sector disks - {"DOS3.3", all, "DOS 3.3 System Master.woz", 11_000_000, []int{0, 8, 0, 76, 68, 84, 68, 84, 68, 92, 16, 24}}, + // How to begin + {"DOS 3.2", all, "DOS 3.2 System Master.woz", 7_000_000, []int{0, 72}}, + {"DOS 3.3", all, "DOS 3.3 System Master.woz", 11_000_000, []int{0, 8, 0, 76, 68, 84, 68, 84, 68, 92, 16, 24}}, // Next choices {"Bouncing Kamungas", all, "Bouncing Kamungas - Disk 1, Side A.woz", 30_000_000, []int{0, 32, 0, 40, 0}}, diff --git a/noSlotClockDS1216.go b/noSlotClockDS1216.go index 6197d53..20d72b8 100644 --- a/noSlotClockDS1216.go +++ b/noSlotClockDS1216.go @@ -53,7 +53,7 @@ const ( nscStateEnabled = uint8(2) ) -func newNoSlotClockDS1216(a *Apple2, memory memoryHandler) *noSlotClockDS1216 { +func newNoSlotClockDS1216(_ *Apple2, memory memoryHandler) *noSlotClockDS1216 { var nsc noSlotClockDS1216 nsc.memory = memory nsc.state = nscStateDisabled diff --git a/resources/Apple Disk II 13 Sector Interface Card ROM P5 - 341-0009.bin b/resources/Apple Disk II 13 Sector Interface Card ROM P5 - 341-0009.bin new file mode 100644 index 0000000..3588f88 Binary files /dev/null and b/resources/Apple Disk II 13 Sector Interface Card ROM P5 - 341-0009.bin differ diff --git a/resources/Apple Disk II 13 Sector Interface Card ROM P6 - 341-0010.bin b/resources/Apple Disk II 13 Sector Interface Card ROM P6 - 341-0010.bin new file mode 100644 index 0000000..c67a68d --- /dev/null +++ b/resources/Apple Disk II 13 Sector Interface Card ROM P6 - 341-0010.bin @@ -0,0 +1,65 @@ + + + + +ɈɈˈˈ + + + +ɈɈˈ˸= + + + +٘٘ۘۘݘ + + + +٘٘ۘ۸ + + + + + + + + + + + +P + + + +H + + + +H(H(H(H(H(H( + + + +H(H(H(H( + + + +X8X8X8X8 X8 + + + +X8X8X8X8 + + + +hhhhhh + + + +hhhhxp + + + +xxxx -xp + + + +xxxx \ No newline at end of file diff --git a/resources/DISK2.rom b/resources/Apple Disk II 16 Sector Interface Card ROM P5 - 341-0027.bin similarity index 100% rename from resources/DISK2.rom rename to resources/Apple Disk II 16 Sector Interface Card ROM P5 - 341-0027.bin diff --git a/resources/DISK2P6.rom b/resources/Apple Disk II 16 Sector Interface Card ROM P6 - 341-0028.bin similarity index 100% rename from resources/DISK2P6.rom rename to resources/Apple Disk II 16 Sector Interface Card ROM P6 - 341-0028.bin diff --git a/resources/dos32.nib b/resources/dos32.nib new file mode 100644 index 0000000..a7f9b4e --- /dev/null +++ b/resources/dos32.nib @@ -0,0 +1 @@ +뺮־ڵ׭ۺ߮ߵ뵫ﵻںݯߺݺֻ֫뽶߯޺ڷ۾ݯݯ۫ۺݵުժުժݫ֫׫ޫ߫޵ݵ֫﷮ڽ۫뫫֫ުժުժ۵ݵ־޵ֿھ޵ꮺޫޭޮޮׯׯֿۮݵֻ뭫۷ݵݫ﫫޽믺ڽ׾֫޵ڽ׶ުժުժ۽߽믭뵿ۯߵ뷫믫뺫׺ۭ׾ڿڭֻ믯ﯯ׫׻߻׺ݫڽ׿׺ۻ׭޻޽߶ުժުժ֫߭ݵ޶ֶֺ߯ݾڿګ׭׵ڶ߷ݭ֫뽭ݯꫫ֭뿷׿ګ׷뭭ޭ֫ޮֵֶ뾷ޫګڷ뫫۫׵ڻ޻ޫ߷ުժުժޭݭ뽶ﺮ׫ꫯޮޫݫ߫ݻۺߺ۷ݭݺޯھ۵֭׮׮ﮭ֭֭﫯ުժުժڶޭݵݾݵګݾ۫ګ߷ׯݮ߿߯߶޾ォ޿߾گۭ߿ڭ껯ګ߭߯־ޮ뭵ڮڮ޺׶ګ߷ݫުժڶޭݵݾݵګݾ۫ګ߷ׯݮ߿߯߶޾ォ޿߾گۭ߿ڭ껯ګ߭߯־ޮ뭵ڮڮ޺׶ګ߷ݫުժުժֻ뵻뫵ݻ뫵ݫݫ뫵뫻ֵ֫ݻ֫֫֫ݫ֮߫ﭫֻֻﭻ־޺ׯ׭׻ׯ׭ޫꮶޫ믷߻޽ꫫުժުժ꿫ﯽ׫ޫڮݮݷݯ׫֮߭ݷ߽޶־ڵۿ׭ݫ߷ۿ붽ޫݭ֫ݯݷ޷׫ޫ֭֫߮־߫֫ޭ뻫ꮿֽۭ֫֫ۻ֮֫ުժުժ۵뫮޵߾ګ﷾붫ݮ֫ߵֵݭݷݻׯﭮݫ߭۫߿۷۷گڿ߾ޫֽݻᆴֿ뫵ꫫګڽ۫ޫﶺ׺ګۭ→޾޵꯵ֺ׵ޫ꿶޶ުժުժۭ۫߶ޫ֭׻ھ߫ݻ׿޶ۿַ׺ھֶݯ׷ޫ۷ݭֶ׺۶뫺֯׷껫ګڮڿ׶޷߶֫뽿ݯ۾뷺ݵݾߺݵ۫׭߭߾ުժުժݻۮݽֻ߿ﻯ׽ֺޮں뵽۵ݻھ޽ޫ޿ݭ뫶޵﫫ﵽ꫽꿭۫ﵻ֫۽گ߽ޫ֭֭﫾־߽۫۽꾭ުժުժ֭ﭽڶڶﯺ߽뽫ﺶ޵ݶޫ뫮ۿ뫫ݫ׻꾮ګޯۯ׭ݫֻﶭݾ֫۫ׯﷶڽ۶ַֻ۫ުժުժۺ֫׫߮ݭ뫫֫﮿۾߫߫뮯ݫڵ붵ׯ۫ᄒׯ뫫ޫ֭ﭮݵׯ֫޽뫫׫ׯުժުժ׮ݭڭ޺֮뾭뫽뻽ﭽׯ߶޵׻뭯׷ګۻ߶믺׵֭޵׷۫޵ݫݽֿ뮭֭ݭ޶߽껶ۯ﷿ݫ߽ھݭݫڷߵݷۭ߫뵮׽׫߷ުժުժݫ꯻ﭽֻݮݫ޷ޫޭݶ޵޵뻵޽֭߫ޯۺݺޫ﷫ۺ۶ڽ߻ֵꮫ۫׭޻﫭ﺷں׮뽮ۮ׺ݭޫ뮾޻ݭݺݭުժުժ꿯޽﮶޾ߵﶶᆵﺵ߿׫׽ݻ߫߭ۯ׵׮֫׵޻꭮ֶ߯ݵ޶ֶ֭ݫݶ׭۫֫ګ۾ޫݯ߻뿵ݭ޽ڻ֫޾޵뷫﫫ޭڮުժުׯժ׵׶ھۮֽ׽ڮׯֺ߮޵﮽׺ޭ׽ߺݫݷ׿ﶫ߷߭ڷڷ޿޾ݭׯ֫߫ꭺ߮﫶ݭֵﵿ۫׺ֿۭޫݫگޮڭ׮׵ֶ߭귵ުժ׵׶ھۮֽ׽ڮׯֺ߮޵﮽׺ޭ׽ߺݫݷ׿ﶫ߷߭ڷڷ޿޾ݭׯ֫߫ꭺ߮﫶ݭֵﵿ۫׺ֿۭޫݫگޮڭ׮׵ֶ߭귵ުժުժ߾߶ߵ׽޻ڮ׷ݻ֮뫫ݶ߫ߵֻ߫ݭֿۭݭ߮ޭݫݭݫګ߽׵޻ޮ꯮ݭ߫߫۽޶ޫݫ߫ݫۮުժުժᄊ֮߶׿ګ׷ׯޮݷ۵ֵ޿ݶ޵ݮ߯﫫ߵۮݫ߶ޮ׫ݭۻݽ׻ݫ֮ﵮꫫݯ֫ݭݭ׫۵꫻귯׫ۭ׻ֵ뫽ڻڭ׻֫׺ݶ׺޻׺ޭ۾ުժުժޭ׵߶޺۾ݷޯޫ֫ݵ۽ޯ۵ݫۭۻֶ֮ޫݫֶֻ뮮֫ݭ׭ݭ׻ڵݭ߶߿ﶻޫߺׯꫫڷ֫׫׫׶ޫ۵ݯ߫ުժުժޭ޾ھ߾ڶ׫ۺֿ޺۵뫭׶ڶݷ׭߻޺߫޵־뻫ׯھڵݷ߫ګ۵ڭֶۭ뫶ݵݶ޶ݵ껭ݭۻﭭ֮֯ߺުժުժݻ۫ݫۻ﮻ݾۿڿ֭ݫ붵׭ߵ֫껽ڮݯۭݭ׫׭ޫ۫ݮ뷻ݫڮޭ֭֭ޯ뾵۾ޫ֮߮گ֭뻮ۯݫڮֻ뾾ڵުժުժ׮߻ַ믿׮׾۫֫޾޺߻֯뫯ֽ޷ޭޭޫޫۺ뫭֭׿ڭۿ﫮޻޵귽ݭ۫ޫ߽߫ﶫݵ߯뺵ֶ޿׫ުժުժ۫׽ۿ߮ۯڮ߭֫꯵뮺ֶ۾۵ݶݭ׫߯׭ۮ׺﫫׶ꮫ۫׭۫־ݫݭꭾޫۿ޽ګֻޫ޵߭ﺻֻ޿޽ֽ꾫ݻݾ׺۫ޫުժުժַݯ뺯ڶ뺶ֵ۫ߺݵ꽷ַ۾ޫ߾ݯׯ׽ݵߵڵޯ뮫ߺۻ߯߷߭֫ޮ׽ۿ﷭ݵֵ߫ݫᄏ޺ﯵۻ߷ݯۻݿ۫꫺׮﫵뵫֮׮ުժުժ뷭߮߾ֻۿڮ׵ݫﵽگ뫫뺺뫫ޭꫫۿ߽ګ֫ުժުժߵۮݽ߭ݭ׫޻ڿڽ۫ޯۯֺֽ۫۵ݽ꫾ޫ֯ޫ֫ޮڶ׫굫ﯺۻ׫ݷ޺ۮ꫶׾ݻꫭުժުժ׵ォ۽۽֭޵߯궮붫ݾڭֽ׵ֺݿ߶ַ׿ګݯ޿ꫯﵫ۷ֻ۽뵯ꫯ߮ﷷڭﯭޮ־ݯֻݯֽުժުժޯֻֽ۶ڭۺ׷ڻߵ귷ﵺֶޫ׻ݫݵﵯޭ۾׫꿿޵ߵ߽ꫫ껯ֻ߿ݿ﷮ﵫ﫮߮־ݵꫫֵ֮۫ޮުժުժުժ׭֭ګߺۿ߮۫뫭־۾뫫߽꫿۫֫޾ߺ޵ַ޿﫫ׯ﮷ޮ޿߭ޫݫ޿ֻ꽯ުժުժۭߺݻ׶ޫ뫫׺ݯ۶ھ߷ݮګںֽ꿭׫꿮ֻ껯ۯ޻ݾ֮߫ݯݫ￿ޮݯ֯꫺ַުժުժۺޫ߶۫ޮ뫻ݮߵ֫ڮڻݷڿڭۺ۵ꮾګ׶޾߾ݿ׻׫׭߿ַ믮ޯݭݯ۫ﮮオ޾ݭ귮ݮﯫ޺ޮ߯ުժުժުժުժުժ޵ַۮ߫ۮ֫޾޽ֻ޺ֿ뫫ݭݵ꽭־뭫ۯݺޮꫫ׻׶׾﫮֫߫ꫮ޵׷뫫ֵﵽڭݶޯݮګ۫֫ﺶۮݮުժުժﶶ޷ݻޭﭭ뭭뷵ޭ֫ߵݭ֮ޭݶۭ޵ֺ޿ڷֿݻ۶ۺ޷׫ݮꫵ֯ݻ֯߷ݽޫڷ߮﫵ۿ޺ۮֶۮުժުժ߫ڭݾﯭ޺ڭ۫߭׶۷ݮׯ뫫֫ﭮﺷ뿭귯޶׶׺꽺ﵫݺ۫ﵻޮ߮꫷׽ڻﵻ۷ޯֶׯ޿ھ޵ۯソګֻ﷮ֵ׷ުժުժ֫뫭ꫫ޿ڮުժުժۮֶֻڶݭ߯׭޺ګۻ붭֫ޫޯ޻־ַ߯֯֫߫ڷگڿ߫ޯ뫫׿ګ֮ﻻޭݶֻ߫ݶ뮿ګﻻ뷻ֵںַַﵫ뮿ګުժުժֻﺾֺۭ֯۷׷ֽھګ۵ݶ׮ګ׭߻ׯֻޭ׾ګڮ֫߫ׯګ֭ׯ߻ݭ߫޻޻ګګګ붫ڮ֮޾ުժުժ׶׭ۮ־׻ݶַֽޭ޶ۯگ뷯ߵ۵׾־֫߫޻ֺګֺ֫߭ݻګڷګֵ۫߾ڻ׿ݫ׻ڮڮګۺ߶ު뽫ժުժۭ߿߫ںڿݿ׷ߺ߭ڮֻۭ֫߭׵־׫ݻ۽꭭ګ꽮ګڮګﻶޫ׶ֺֺ׻ۭ֫ګںڻުժުժ߶گַݭﺶᆳ￾ﺯ׾ڮ뵶뮮־׻ڭ׺ۺ߷׻֫־׻ޯ뻷޵׻ᄎ֮߾ުժުժޮޯ۾ޯڷ﷫ַں뾮ֻ޾޾׶޷ڶ׽뫺޽ֻ޿ګ꽮޿֫׵ݾ׻ګ꭭﫫֫֫֯۫ުժުժ뭽߷ֶ뮮߷׿޿ھֵ֫ڮׯ뫯׻ׯݻ궫׭֫֫ݮۺګֺ۫־׭֫ۮޫֻݫ׫ګ޻ߵݫﭺ׿֮ۭުժުժݽ޶׽ۯֵۭ֫۫ںݯۻ֯ݽ뵶ڶګ׿޽ګ߿۫֫ꫫګַ۫۫ڶֵھ֫޷ݵ׫ګګ꺽߿ުժުժ۷۾ݯڿַׯ׭۷뾾ޫݻ߷ݿڿ߭޵ޯݷ߫굽뮯ھګڭݻ޽ݯ׽ޫ뽿֯뫻ݻޭݭګުժުժڻﵶڶ߷궮ֿ߫۫۾ֻ׾ګ׮׫޶֯޷۫׫꫶ֻ۫ۿ߿ګ֫֫۫ݫ֮뮿ھ־߾ﺻޫߵުժުժ뮯־ߵֵֻֽ￶ֺ߮ߺݵݵڮگֶ׻ڷ׶ֽ귵߾߾־뺫׭׭꫷߫޿ᄊ׫׫ޭۯݿۭ֯׭ު뮯־ߵֵֻֽ￶ֺ߮ߺݵݵڮگֶ׻ڷ׶ֽ귵߾߾־뺫׭׭꫷߫޿ᄊ׫׫ޭۯݿۭ֯׭ުժުժ׺۷ݯ޶ޫ޿꺭ֽ֭׶׻ﻭߵںֶں׵ڻݶ׮ݷ߭׽׫ڿګݵ׿ګ׫ݭڮ꫿۷֫ׯֿ֫ۿުժުժֺݭ׽޻ۺں֫꯾ڿꮮ۽֫߿֫뫫ֽ߮֫߫֫ڵ߿֫ڻۯ߫ޮַګ۫ݫׯݫ껯־ޯ֫֯﫷ֺ֭֫޶ުջժުժ﫮ݶ귶ګ׶߭޽֫׻뻭ڶڵݺ߶߮믭ګ۶ﭺޯ۫ݷ믯ڵﭺݯګ֫ֶᄊ֭ګ׫ﺫ뫫ګݭګݫۭ߫߯߷ުժުժꫮ־߽׮뾻߮׻߶׽ߵ־ޫֽޫֺ׫ݭֽ꽶꽶ڻ׫֫޿ڻڽ뷵׭ڽ۵ڮ꿵궫ުժުժۯ׫۾ݯ׫۫ޯ۶ݶݮۭ׫߽ګګﭭ߷׽ۿڮ߫ں֫گ޺ֺֽꫫ׮۾ګګۯݭ׫۫׭֫۷믭ۯ߽ں֫׿߭ڿުժުժۮ޺ﵯ꺮ݫ֫ۻ۽ۯۯ޽׺ֽޭ۶뮫ګֶڭ֯ׯګ֮뺶֫ګ׵׭ګ֭߫֯ڽުժުժڽۺݻ۶׺ֽگ߭گ޻ڽݻ뵺ڷ޿׮ߵ믯ھ۫׭ګݷګ۫׽믭귻޾߿ڭֺ߫ګ޿ުժڽۺݻ۶׺ֽگ߭گ޻ڽݻ뵺ڷ޿׮ߵ믯ھ۫׭ګݷګ۫׽믭귻޾߿ڭֺ߫ګ޿ުժުժۺݭ׫޾֮ﶶڭ׿ݻ׭ڶڮڮ֮뷾۾޺׫׵߿֮֫뮮ڽ֫׻ګߵݵڮޯުժުժ׫׾ۿ߻ݮݷګݾݶ뷶׫߫׺ޫگڮ߯ڵ֫۾ֺۭ׮׫ۭ֫뭵ګݷڽׯۭګ뺫ݯ﫫ݫۭ֮۫ުժުժ޺߻ֵګֽ֯޵߫׽ݶݾ۷ݻ޷ݻ֫ݽ۽֫֯޽ګ֭뫮꽫׮ݫګֺ֫޺֭ꭶ޶ݫ֫׫޶֭֫߫׭ֶ֭ުժުժݺ׵޾ۮ߮ۮ׭ڻֶ۫뻾ﵶݻۺ꿻ޭ꽫֫ݾۺ뺺ꭾ֫֫޽֫߫ݷ꫶ګꮭ뮶뮫ޫֺګ޶ުժުժݶݻֶֺﯮۯ߷߫׿ッݻݺڽ۽ۭڭ߿֭ޯڮگ߫ݫگ׫ﯷ۫ݫڭڮۯݮ֯믭޶߿ڭںۮ֭ۯں֫־׫뮫޶ֺۭުժުժﭿ׻ݵھڶォ޵޽뽽뾺믺ޭꫫݶݮޭ뵭ګ޾߿۫ڮ뮫ֺ뿭ڿݮ־֫ڶ۫۾߻۫ګګ֫ڮ֮߫ުժުժꭾۭ۷ﺵگ۾ݵں뽿ֽۭ۫޽۫߫߶붽ޫ֮ګֺ۫ڭ߿׵ڷֺ֫۫۫ޫ﷽ުժުժֻֽ۫֯֯ھޭ׫ꮫڽڽ۫֫֫۾گ뵯׭׫֫ުպ֮گڵݽݽ׭۵ۭ۾۫ګ׫׷׭֮껯޶۽ګڽ۫֫֫۾گ뵯׭׫֫ުսժުժڷ־׾ۭګ۽۾ھ߮߫꫾޶ֻ֮׾꺫׶׭ݵֻ޶ݫݷ뮿ںڻֵ֫뿮ݷ뮵ݿ꺮뮿߫־۷ֵﺺ۷ֵֿ֫־ުժުժ׾ޯֻݯۻ붻۷ݯں޻߭ڻ߾ֵڻ׾ڽݺ׾ګ﫫ڭڮݫ׫굫ޯޫ֮뮾߫ڽڵڭ֭ޮ֮۫֫۫۫۫߯ުժުժۭ׫궫ڵڻڶݶ޵ݭޭ߽ݮڷ޽ַߺګ׫֫ݭګ׭ګ޵߯ݯ֭ޯڮ޻ޯ߮ڮ߿ߵݻۮ߫߯֫ﯮޭګׯߵڮֶڭުժުժ߫޷׷ڿޭ޶ֵ׻ֶݷں޶ᆳ۵ׯ׫ڵߺۺ׫ݮ޶׫߫ꮮݮֽݭޫ׮۫뽶ۭ֫ڮںֵۯ֮׭ۭ߭֫֫ޫۭުժުժݽݵᆴ֮ڮߵۭۻۯ޵߽֫۫ۻֶ޾ګګګ۫ڶ׻۫ګ꫷ުڿժުժޫ۫뫭ڽﭿ֭׭붷߫ﷷ꽿뾽꯷߶ַ߫߻֫ޫۭ֯׫ݫ۫ݮګگ۫֫ݵݮݶ߽׫׭߻֭ۮݭ߫׫ګ֫֫ޫ֫ݮުժުժ߭׿ڮ޾׶ڵ뭻뵵ֵݫ߮޺׫ھ֮ޫݵھ۾׻ﭽޭ۵ֽں߻﫫뭭ڮگݮ뫫뮫﮻׽߫뷺ݺݫ׮۵ݫꫫ޽֫ުꫵժުժ۷۶׽ﭷݾڮֽ޶ۿֵ׽׭ַޫݷ뿶׫ֻ֫޶ۭꮯ﫯뮯׫۫߭ڭڮ߮ޯ߫֫۵ݮ׭޶֫ׯݭگ߯ުժުժۭ֯گ붮ګׯۿݫ߭޶ڽ޿뷶߻ڭڿڭ׾ڷګ߶ݶ믷ۺ۷ݯ믯޵ڮޯֺ֯߫ݮ׫ګ믽ַ־뮫׶׺۷ݭߵުժުժڮ׿۶׫ګֻ߭ڭ޺ꮶݿۯ׵ݶֶڭޫݫݿ뫮׶߫ﺷ﫽߫궫ۭڿ۶ۿڮڻ־ַګ߶ګ׾オުվժުժ֯ګ뿷߽޵ֺ߽ۭ׾뷷޿گݻ޿־﷭߮߿־׭߽ګ궵ޫ߶ֺ۶ﻫޯۭ֫֫ꭵֶ֫۵궵ֵ֮߯껿׵۫۶ުժުժھׯᆱۮݵ߽ﺺ뭻ݻ֭ޫں׽ޯڻֽ﫯コׯ߻꯫׭믯۫ڮֺ꺽۽޶ݮׯׯުժުժ֮گڵݽݽ׭۵ۭ۾۫ګ׫׷׭֮껯޶۽ګޫ׭껾ުժުժ׵ݶݫ޽뮵ݫݯ߷ھ۫뿽ڮ׫޶֮׫׭꭮֭֯׫޶׫׭߯ڮׯ׫۽׫֫֫׮۫ׯ뫶֫׭ޮ۫׫ުժުժﶶګߺ޿ݭݺ뾻ڷ֫׫ۺﷵ۷ݫ޵׭ݺۺޮۻֵ׭߫߭گ۫ޮگ꭯ڮڮۭׯ׫֮֫ꮯ׭׫֭߯꯯ޮڭ֮ׯګׯ֫ݯ֫֫֫ޫުսꮯګߺ޿ݭݺ뾻ڷ֫׫ۺﷵ۷ݫ޵׭ݺۺޮۻֵ׭߫߭گ۫ޮگ꭯ڮڮۭׯ׫֮֫ꮯ׭׫֭߯꯯ޮڭ֮ׯګׯ֫ݯ֫֫֫ޫުժުժݭޫ׵ڷ֮ڽ뮭޶ݮڮ׭֫ڮ֭뺺ڭڮګ֭۫۫޺֫ޫ֫گ֮߯֫ګ֫گڮ믭ۮڭ붫֫׫֭֫ުժުժݿݽڭۻ뮺ۮﶵ׽뫫׫ޫ߯߮֫׫۾۫׫ڶޫֿ֫ݭ붯ګׯ֭֫ڮګ뫫֭ۮ뵷֫֫֫֫뫫߫֫뫫ުժުժ뭫׭ڶݮ׫ۺﵭ޿۵ޫֵ﫫ֺۯꮷޫﻯުժުժݺگ޷꯮ﷶ۽ݯ׻߽׽뫫ߵڭګګꫭ߯ګׯ֫߫ګ߫֫گګ֫ګ׮ުժުժꮵ׫׵ڿ۫ݫګۯ׽ڶګ֭ݫﭫުչժުժ۵ַۯ߾ޯݽ׮ﵭ׺ׯֵ߭ګ֫۫۫뭷ګڭֵ뫭׫֮ޯ￶ڭګݺުժުժڮڶݯݯ۷ﵷۯ۽ھݶֿڵ֫ڭڭݾڿ۽֫֫뷾޵֫֫۫֫޺׭߻߯ުժުժڿ뿾߻۶뽭޻ݭګ껭ߺݮݫ뵶귵׫޶ׯ׫ڮ֫گ׻ݮ꭭֮޶ۯګ׫׫׫ڮޫ׫߫ګサ֭۫ުժުժֻۻַ߶ڮۭ֫׭뫮ۭۯګ뫫ۯ׭ݫ׵ުժުժ޽ڶ׮߫ڮﵻ޺ۮ֮۫ޯ۷֭ݭֺ߭۫ﮫݭ߫믭ګ֫ڿﭫֿ뭭׷֫گ뫫޺ߵ֫֫۾뫮ֺ뮫붶֫ުժުժ׶ݭ׾޾׫߾۽׭ڽڿ뫺׻ڻ׷׿׶ڿ֫֭߫뫯ڶ֭ګֽޫ֭֫﫫׶֫۷ګ׫뫮ݫ֫߫꽯뫯ݭ۵﫮ֶ֫ޯݾ֫ުުժުժ׺ֻں׿׷۶ݶڷ޾׺ַݿگ߷޽ݾ֮ݽګ۫޶コ֮ڽګڷ߫ڽګھ֫ڮݮ֭ުժުժ֫뿭߻ꫮ׽޾ۮֵֽ۫׫߫׷׫ګ׵׫޷߿ֻ׿߫׫߫׭׮׫ֺ׫׫׮֫׫׫ުժުժ߭ں붻ڶ뺶ֻ֭ګݮڿַگַۭۻ߮ݮڮۯ֮־֭׮۫ګ֮֫֫۶׿׫޺ڭݫֺ֭֫֫ݻ۾׫ުժުժ׺ڭַں߶۾޻ݾ߻޿ֽ־굷ݻں굶ַꭵ߿﫫궫ֻߺֶ֮׭ォڮꮮֻۯۮֶ֮߯ګ׫֯׶ޯڭۯگ׮׭ޯ֭׫ֶ߭ުժުժ۵ڿݷ޶׶ﺺۻڶ→ڮ궵ګګֿֿߵ֮ګ붺ګݾ֫ߵֻ߻ֵ֮֮֫֫ݾڮڮ׺ں֫ުժުժ׿߽߷߻ں۷־۫߶־׵޻׫׫֭׿߫ګ֫۫֫߫߫׫꿫ګ׫֫ݯ֮׽ݯ׫׫֭۫֫ݫުժުժ׽ﭾ۶׿֫ۿ׵޵ֽݭ׽ֿ׽߾ګںֿڽ֫֫ޫ֮֫ڿڿۮ꿫֫׫֫ګׯ뫫֫׫ݻ׶߽֫֫ڿ֭ުժުժ׭׵﾿ޭݾ׮׶׮﫶ݻ߮ۮ߯ݶ֮߫֯߯֫ڮگֶگֶֶۭ޶֭֭ۯֶګֶֶֶ߯֫޶޾궫ֶݶުժުժگݽگߺ׶ׯڿگ֭ݵ׫׶޻׮֭گݭڶ֭ݫۭ뿵֮ׯګڮ֫޿ֽۭھ׮ׯ֮׶ڮڮ֭׽뮺߫׮ۭުժگݽگߺ׶ׯڿگ֭ݵ׫׶޻׮֭گݭڶ֭ݫۭ뿵֮ׯګڮ֫޿ֽۭھ׮ׯ֮׶ڮڮ֭׽뮺߫׮ۭުժުժ޾ںֻ׮ޭ֭߿ۿ﷽ۯֽ߫ׯڷ޶ݮ޺ߺګ׫ݺ׫ګ֫ׯګ׫֮ڮ뷺֮֫֫ڭ׭ﯯު۫ꮺժުժۿޭ޽ݯַֺ׵ڮ֮־߻ֻׯ׷߯ݮ﫫׵ޫۺۻ߯֭֭׫ۻޯ׽ݫ׮۾ګֵ߿ުժުժڿ߶ڵﭻݵߺۮگګֿݭگ굯޻ֿޮ޽޷귽ڮۯֶ׫֫׭ݷڮ׫뮯֮ݭֽۮڶׯ޶ֶֻ۫۫֫뭯ުժުժֿڶ귵׮뫫֮׭߻ޫުժުժ껽ﮯ׶߿ַڵﭫ۫ۮ߻ֵﯷۮ߾껾ֻ֮ڭ֭گ׫׭׭ֶ׫׭ޫ뫭ګ֮׫׵ڮ׫׭뭯ڮ׫گ׮֮׫ګׯ֫ުժުժߺݺ޶޾޺׵ڭ߫ۮ֯ں־ݵڶګ֭֭ׯ߻ڮګ�׭׫ׯ֮ۯ֭֮֮ګ׭֭ׯ׭ꮫ֫׫֮گ֫֫ުժުժ־׽޵ַڶ׿޺ֵֺ߯׮ڮݯڶ־ݮ۷߶ۯ뫮ۭ֯ۮگ׫֮ֺ߭ڮ뽭۫ګݻڮ껫ۿڭֿުժުժֻۭ߯ۮ֫۷ڮ뫫ۭگ׶ۭھۯۯ׭ݫۭ׿ުժުժۯھֶڷڵ׶֭׫ۭ۽߭֫׫ݭ־׮ݫꫯ׿֯޷׫ݫݶۮڮ֫׫޽׫붶ׯ֭׭뫫ﭫ뮯ڮުժުժڿۭݯ۫껽붮ݫޮﭷ뺽ݯ붫믫ھݺݷݷۭ֭֫֫֫ګ֮۫֫֫ۭ֫ݫ֫֫֫֫֫۷֫֫֫֫֫֫֫֫޺֫ުժڿۭݯ۫껽붮ݫޮﭷ뺽ݯ붫믫ھݺݷݷۭ֭֫֫֫ګ֮۫֫֫ۭ֫ݫ֫֫֫֫֫۷֫֫֫֫֫֫֫֫޺֫ުժުժۯޫݭֵۮ֫ݯֿ߫۵۶׽뭯׭߶﷽ګꮫڮ֮꾭֯޻֫߿߯ׯݻ޺߻֯ݯۿګڵ꭫߫ڮݻڭުժުժߵݺۯڵֽ۽ݽڷۮֺ޶ڭֶֽݯګޭݫ֫ڻֻ׫߫׭ۭ֯꽫֯߫׫߫׶ګڵ֫׫߫۶ھ֫۶޶گޫ޻׫߫׫׫ֶַ֮׫׫붫֯۽ݵުժުժ۶׵ֶ۶׷뫷ۺ껽ۮߵ뮫׽־߭گ֭ڮ۵ﭽ׭گ꯽׫ڮ֭֫׫׭֫ݮ׫ګ궿׮ڮޭ߾ګ֮֫߯֫֫׫۶ݷުժުժݫ뫫ުժުժ׿ﭭ굵޺۷޵ڵ־뭫ޮڮݻ뵮߫߷ֶݵ֫ݵ֯ھֻݻݵ߫ݻ߽ڵꫮ޻ݵᄏ޺گݻ֫ުժުժݷݿꮭڿֽߵڽ޵ګ޻گ֭׭֫ޫߵګ޶ڿ߫׭ګ֫ֻ׽ڽݻ׭׫׮ۭߵ֯׫گ۶ֻ׫׮֮߭ݻުժުժ־ݺꮺڷ׾޻ߺݿ߶ﻻꫮֿڿڭ޶ݯ׶ݮֽڮ֫ޭ붶׫ۭ뷺꫿߫׫ޫۭۯ֮ۯ׫ګֿ֫뫫ڮ޺ֺ֫߮ꫫ֫뮫ګګޫޫ׵֫뫷ުժުժ޽׿۶߮֫߮ݺ߾׭۶ޫ߮ݫ߿ꭿ߷ڶﯶ߫ݽڮ׾ݵ׫굽֭뭭׷껫޻޿꫷뫫ݫں궭ݾݶ꺺۾۫붶֫ޭ֫ꮯ޿ުժުժݾڽ߽ݻߺ껮۵ګݻﭯޮֺޫۿ뺭ݶ뷷֫뫫޶ֺﯽݷ뫫ڮ޺ֺ߮ꫫ֫뺶۫ޫׯުժݾڽ߽ݻߺ껮۵ګݻﭯޮֺޫۿ뺭ݶ뷷֫뫫޶ֺﯽݷ뫫ڮ޺ֺ߮ꫫ֫뺶۫ޫׯުժުժ޻׫׾޻ݫꮶ޶۵޶ֶֿﻵڻ궮ֺ뻫߾޻ݵںګ۫֯׭׭׭ڿڶ֫ڮ֭ڽۭ֫뾯ֺֽޫ޺׫ګ֫ڿ׮֮֫ڿ޺ڿ۫׫ݽ޻ڭֺֺ׭֫׫֮׵뫵޺ڿުժުժޭ뵶ڶ׿ֿﺭﵭ׶۫ݺ׽ڮֽ߽޻ۻޯޯ׫گ׭ֶ뾿ۯׯ궫׮׭۵뫫ַ֫꭯֫ڮ׮ڮگֻ۫֫׫׮۶ګ߻ڽ޾۫۶ݫֶ֯ުժުժ߻ڭ׫ݵھ߽ݭݷݶ믺޵ﮯ֭߫ޫګݶ߷ڵ޿ַ߫߭߿ڭݫݯݭ߭߯޶ֶڮުժުժګ־ꫯګ۫꫻߫ݽ뫫ޮ֭߭ۺݫ뻵߮׮׵굫׮ޯ޵֭ﯭۭ֭ޫުժުժ뫫ڻ֮׿ݶﯮֿ֭ޫ޷׻׫ۯ׭ۭ֫ګ뫫ڮޫ׫׮﫫ׯۭګڭﭮꫫׯۭۮ׫뫫׫ۯ﫫﫫ުժުժ׽޾ݽ׭߶ֵ޶ߺں־ݻݽګ޶׭۽׶ݫֶֶݫ֭֫ګ֫޶׮׶ڿ׽ۯګ뵫׭׫֭֮׶۶֫ڮ׭ڭ֯׫뫫ګ۶ݭګۮ۶׫֮֫ګ֫ުսժުժ޿֮߿߻ݫݮݺ߽ۻ޶ڮ߻֫޿׵ݵݫޮ﫫ޭۮݭ۫ݫګֻ뭫ݽۻۯ׽־﫫޽ګ֭ݫުսժުժݭ޾뭮ݶ׶޵ֵ۾ڵڵۯګ֭޵ݮ굫뭭ޫ뫾׷ݵ׮ߺ߭ݭ޻׽ݷֵݶ߫ޭֿުժުժݵުժުժۿ֫׭ꮫ֯ݭڿګ߽ڮ׽־ڶ߽֮۽ߵ׵۷꺮뻵ַֿߵۭ֫ڭﵵ֮֯֫޷֮ڿ׭ۮ޿뫫۫뷾֭ڮ޿۫߶߻׭ުժުժݫݾڽ߽߭۾ׯ۵ګݻﭯ֮׶ޮֺޫھ뺭ݶ뷷֫뫫޶ֺ﫫뫫ݷ׫뾽׫ֶ߶ߵﷵ﮶ֻݻ޺ߺޫֵޯ־ھۭ֫֫ګۿۮ궾ۮګڮ޻߾ګ֮߫׵ֿݷڽڵڿڮުުժުժݫﻫ뫫ުުժުժ꿭뮽굾߿ݶ޺ۯ뻻ڻ֫뫭ﶽ׿ݵ߽ݽֺ֭׮گ׭֭׫ׯګګڮׯ׭֭׶ګۭ֭֫ڮۯګ׭֭׫׮ګۭ֮֫֫ګ׭֫ڮ֮ۯگڶֽ֫׫׫ׯ׭ګھުժުժ֯﮷־۽ۭݻߺݫ޽ֵ߽֫֫ޭ׽﷽֯گۭޯ֮׫׫׽۫֫׫ֶګׯ֮׽֫׶ګ֮ڮ֭֭گ֯׫׶׭֫׽ֶۮۮֻگۮׯުժުժ߽ꮿֺ߮޵׫ޭ֫׺ޮ궫޶׿׭ڮׯ֫ۮַֽ֮׫ޫ׫׿ۯ׭֮붶ګ׫ګ֭ڮׯ׫ޭ߫ݷڮ֭֮֫׫ڮުժުժݻ޺ڮ۽׵׵ݻ׽ֵڶݶﺯ׮֮֮׫׫ۯ֭֫ׯ뫭ۮ׫֮ۮۭ֫֫ګ֯ޭگڮګ׮֫׫ګ뭭뫮֭ګ֭׫ګ뫭ڮުݿݻ޺ڮ۽׵׵ݻ׽ֵڶݶﺯ׮֮֮׫׫ۯ֭֫ׯ뫭ۮ׫֮ۮۭ֫֫ګ֯ޭگڮګ׮֫׫ګ뭭뫮֭ګ֭׫ګ뫭ڮުݿժުժֻ۶ۺ׭߭ﯫ߶޶ۺݯ۫ݺ믯ֵݵ۫ݾ߭گ޶ַݮݾګݻڮ׶޶޵ۺ֭ۮݿۺݶۮݵֺ﷯ۭھ׺ۮֶ߮ݾުުժުժߵߺ׶޵ֶޯ뮶۵׮֮֫߶ݫޮ׭ګڵڭڶ֯ګ֭֭۫׫֮֫ׯۭ֮ګگ֭֮׫֯ګگ׫گׯ֭׫ۭ֭֮گׯ׭׭ګֽګۭگڮֽ֮֫֫ۯ۵ګڶڭުժުժުժުժ׽֯׻﷫ڽ߽뷿׷뫽ߵ׻ֵ뮮꫶ں׫߮֯׾֭ڮ׽ۯ׭붶ׯ׫޷׫뫭ޫ뭭ׯ뫽׮۵֮׫֮ުժުժߺ׻֭﮶ޭֽ֮ݭگֶ׻֮־ݻڮ߮ݭ﫫ޫﺭ׺ګ궶ޫ׾ھ뭭﫿ޫߵޫ߶۫ޫַ׭ޭںޫ޽붶ުժުժݺ߷굺ֿޯݭݭ֫ߵݾ׫ڭꫭݫޭݺߺֽ׫ַۭ֮֫֯֫׭֫֫׫گ֫ګگ׭ڮ֫ׯ׻ڭگׯگ׭׫֮֫۫ګ֫׭گ׫ګֵުժުժ׶귾׮ڶ۾߷ھݵ۷߭뷯ꫫ׺ﵫׯ۫ګ׽֫ھگڮ׫֭֫֫گڮ׫ګڮ֮֯֫ڵ֭֭֮۫ګۭ֭׭׫ׯުժުժݭۿ꯶׵ݭ֫ڵ׵׶ڻݮ۫׭֫ګ׫֫ۯݻ߮ګګ֭ۯުտժުժ۽ݷުުժުժ׿ﮯ߷޺ڿ޶ֵ꯿׻ֵ׻ڭ־뵻߾ꮯֽ׫ڶۯ׫׭ׯ֮׭֫ׯݫꮯ߯׽׭﷭֮뻵ַ۫֫ݯޫ׫׭߫֫ުժުժߵ붾۵ڭַׯگޯ뫷ڻ׭ڮ߽֫ڻ߻ݻ۫ۯ۫ۻַ֫֫ݫ߭޺޻ުժުժ뫫֫گֻ׻ګںݯݫ־﷭׵߶۾ݾ־۷ֽ﫫뫮ڮ뫫뷻־׷ݫ뫮׮ֵ뭭־׭ݵ־ݮ뫫뫮׭ֺ־ݫֵﷻ߫׮ݫުժުժ굷֯۽ݽ޾ݽݭݫ׽߭޶ߺڽݽ޷ۯ֭֭ګگ֭ګ׫֫֯׫ڭ֮׭׭׭﫫׫֭׫׭׫׭֫׭׫׫ުժުժ׶ݯ׽ڷ޷߿ڮگֻ߫۾޽֮۫ڷ߽߾ۯַ֮׭ۯگګׯھ߻ګگڮޯֻݮ׶ֻڮګ֫ڮݵ׵ڮ׫ׯګۭڻׯڮ֫ޫ뵶ުժުժ۶뭶׿ڮֵ֫ڶڻ꽭ޭ۷꽵׫ۭ뽺߫޽뵫ޮݮַ߫֫گ־׶ۭݻ޿ޭڮޮ߶ڮ׫ۭ׭ֽ׻׶ګڷ׻ުժުժ޺﫵ֻׯ뫫ַڻۭ뫫ߵ׵ګ߽֫ڵ׾ׯڭ뫫۫ݫڮڽ֮گ׫ݫ׭ڽګ׭ھ֫ګگ뫫ګׯڮ׭׭뫫ڭ׾֮ݫګׯھ׫׫뫫֭ګ֫ުժުժ߿޿۽ھۮڵ뫵۶ޭ߻۽׻ֵ׵ֿ߫׭֫׫ڮۯ֫ޫ֭ګ֫׫֫֫׫ۭ֭֫׭۫ڻޭޫޫگ׭֮گ߻ׯ׭ڮׯ߯֫֫޶ުժުժݵګ׵ֻ߷߫ﯭ﫭ݻ߫֫޷߮߫ڮݫ﫫ۯۯگ﫫뫫ڮ׭뫯뫫뫫ׯ뫫뫫뫫ׯ׫ۭ֯뫫ۭ׭뫫ުֶժުժڭޮ֭ګݶ־ׯݫݮ۾붶ޫֿݺֵޯݮ۶ڿ׽뫮ۭ׫֫ݺ֫ׯ֫ڮ뭯׭׫߿ޮ֭ۯ֭֫֫ګګ׫گޭֻޫުտժުժオ޺뺵뫯뫫ݭۿַ׶ֽګګ޽ݮ׵߶ֵֽ׻޻뫯׭뫫ׯ֫ۮޯڭ׫ݫ֭ޮګ֭׶׫߻ݵ۷ݫ֫뫫궫ֿ֭߷߿ֶ׭ޫֻ׫ݽګުオ޺뺵뫯뫫ݭۿַ׶ֽګګ޽ݮ׵߶ֵֽ׻޻뫯׭뫫ׯ֫ۮޯڭ׫ݫ֭ޮګ֭׶׫߻ݵ۷ݫ֫뫫궫ֿ֭߷߿ֶ׭ޫֻ׫ݽګުժުժ׺ޯڮݫֻ굾ںޮ߶߯޶߾ֽ֫߷ݫ޿߿ߺޮ뭾ۯۭ֭ڮ֮ګ߮ڮ׭ګ֭ګ֮ګګֵۭ׫ګگׯ֮۷ګ۶֫ڿֵުժުſժ֯׿ョۻ׻׾ֶ۾֮޵־ֺۭڷڭֺ֫׻ֺ֯֫뭭׫ګޮګۭ֮ګګ޽ݫݭڿ뫮۾߯޿߫ڶުժުժﮯ۽ګ궯׮׵۾ﯽۯګ۶ڶ޶ڷۺ뷶ںݭֵ֮֮֫ݫ֫ﶫݫֵ߫ګֵڶֺޮڵ߭֫ݷګ֫֫۫֫ꫫ֭֫֫֫֫޻ުժުժڷ׫ڶڻݽ׫׽ګ׶֫ګ־ޫ믷ޫ۾۶۽ݭ߻׫ګگ۶ڿګګھ۫۫ګګ꽫ګݫڻ߫ںֺꮯګ߾ګުժުժ뭯뫫ݶۮݶݫުꮻժުժڵݿֽ֭ۮڿ۷ڷݭ׾ֵַ֫׽뫻ޫ۾ګ뫮ݿګڶݮݷֺߺ߫گ뫮۾֮ڿݷڵڿުڵݿֽ֭ۮڿ۷ڷݭ׾ֵַ֫׽뫻ޫ۾ګ뫮ݿګڶݮݷֺߺ߫گ뫮۾֮ڿݷڵڿުժުժֵ궽޽ׯﵶ׫ۭ֮ڮﷺڷݿֶ޵۫ޭۭھۻ֫ڻݿ׻׵ݭޫ֫׽׭ݽ֫ڿݫ׶뻮߻߫۽ۭޭ׮뮮֫߫۫ڶ۾ޫڻڿֺުժުժߺߺ׶ۻڮۺں߶ݵݺ߻֫ݮ뮷뭶߶޷ׯֿګڿ۫޻ޫֺ߷֭ګֽ޷ݷګ׭ګڮ꫺֫ֺުժުժ۵뮽۷׫ﶵ׽׵֭ݶ۾֮߫۫ݾ۷گ֫֫ګ֮뺫ֻ߮׾۽ڭڿ־뿿۫ڭ߫ﭿݮݮ׻ֽުժުժݿڶ۶ڷֻֽ굿۶ֶ߭뻭׵ګ־ں߮뭭カڷۺڻ֫ګ֫֫ڭݯ֯ڿֽݶ֫ڻ۶ֽݶ۫ڿڻګڿﺺګުժުժ۷۷޵ݻݺڮ֯ڮ֫׶׶ڷޭֽۭڶ뭭۫ڶ۾ګֽۭګ߯ڵֿ뭭ۺ֫۷֫ۭݷֺֿުժުժڻ޿ںݻ޽޶ګ׷뫭ۻ׵ګګ뿿ګګݽ۫۫ڶ߿ڮ֫֫ګޫ׷ڷݯ߫߾ݫ֫ګ߫ګڮ֮ުժުժ뮮ڿۿֻ꽶뺵ߵݮ뻵ۺ޻ڵ߮￿߷گ߶ﷶ߻ۯ׮־߫۫޵ֺګ׭־֫ڶꫫ֫ګ뵾׿޷뵺֭֮ۻޫުժުժݿۻֶ߮׮׵޷ڶݮ׷޷붭ھ믿ݺ뷿ޭڿݯݮֶ߯﫫ֻ۫ڽݫ־֫߾ݫ׺ڮ߿߭߿꫽֭۷׵꫽ګޫ߫꫽޻ުժުժ޿ݵڮ߫޿ګꮯ׭ھ׭ﭺֶݽڶ֫궷뮭׷۫׮֮ߺ֭ګ޶ݯ֮֫꺷߶﫫֮֫ׯ֯뻭֫ݷںׯ֫׭ۯުժ޿ݵڮ߫޿ګꮯ׭ھ׭ﭺֶݽڶ֫궷뮭׷۫׮֮ߺ֭ګ޶ݯ֮֫꺷߶﫫֮֫ׯ֯뻭֫ݷںׯ֫׭ۯުժުժڿ۾ﵷ۶ۯۭݯۯ߮꽽۵ڻ۽ݾۮ궽֭ۯ߫뮫޷֭۫߯ۯ֫꫽ޫگګګ֮ݫުժުժֽݭ׺ڵ뷯ߵޭ־ׯַݮ޵߮׭߭۵ڿ뮮֮֫ڿڮڮ֮ݫ֮֫׭ڭ֭֫׫׭׭׶ׯڮ׫׭ڷޭﭵگ׮֮֮֫ڿ֮ުժުժ׷޽ﮮ߽꯻ګݮۻگ֮뫿ݾ֮뾻֭׿ګڶݿڶֽﭫݻݻݻ׵ޫگﭭ﫫ソڿݭۭڭݫ׭ګۺڮ׭ݻۯ߿گֽުժުժ뿯ݯ֭֭۵۷ﯺڻ۵ݻ޷߮ۯ׮ۭׯޫڮۭ֯ݫֽۯ֫ۯ׭ۯ׭ګ޻ڮګ֮﫫ު窹ժުժ޻֮ڶݮگݺݵ߮굵ݮ뽽ׯޯݾ뮺ڽ޶ڮߺ뫭޽֭﫫ڮگ׫֮֫뽵گګۻ޽뻵֫ުժުժګ֯ݻ߷׿뭷߶߭ڻ߿ַ߽뭶ޫ뭻귭߾޶ݻ޽뮭׻뫫ڮ֭뻻붶֭ڭ߫֫ګ꯭޿߫گۮ֯֫׫֭޾ںׯ߭ڮڭ믯ׯ׷ֽުժުժオ߽﫾޶ﺽګۿֵ׶ڿׯ߾꭫뮺֫ߺﯶ֭߫׫گ׫ګڮ׶گ׮֫ګ۷ڿ֭׽ֿ֭֮֫귷ګڿֿ۫֫ں׭֫ުժުժުꮭժުժ꿭ޭ귵֫گ׾ݷ׻۵→ڵۺۮꫫֺ֭֫֫׫ڵګ׫뫮֭߫׫׭߶ֽ֫ﭫ۫گ߫׫߫ުժުժ޻߻޾ֺھ֫ݫۮݽ뾷ݯߺカ߮ݺ޶ڽ޽뫮׷ݫﷵ׽ޮ֫뷺֫׫귺ֵ֫־ڿޫګݷڶݷۭ۫ުժުժۯ޶ھ׿ֺ߭ﷺ۶ֿ߻ݶ޷ڿ֮޽߾׺֭֮ڭݮ֮֫޿֭ڵ׿ڽ׫ׯګڮޫ뮫߯߭ޫ׫뷵뫫ڮ֭ګުժުժڶ޿ھֿ֯ݷ֭ޮݵݭ֮׺׭ֵۯ֮߷׮뮫꫽﫯뮺ժުժڻݭַݷ߶߻ꮮݮݮ֯ݫݵ꯻ݯ뫿׵گ֭֮ګڮ֯ׯگ֭׭׫֫뮮ڮګ֮׫ׯ뺷׮֯ڮ׫֮ګ֫׶ުժުժݫݫ޶ݭ߽ݫ߮ݭꫯݮݮݻݮݮ޽ݮݮ޽ݮݮݻꫭݻ׭۫۫۫۫۫۫۫۫۫۫۫۫۫۫۫߫۫۫۫۫۫۫۫۫۫۫ޫ۫۫۫׫۫ګ۫ުުժުժݯ߫ڷֶ޽޶ׯ֯޵ݫ׫׫ݶֵګڮ֫ݮ׭׫۾ޯ׶֮ׯׯޯֿ׻־۫ګڮڮݭ߫ڮګڮުժުժ߫﮺۾֫޻־߷֫꿷ݭֶګﭫ○۫׭֭֮ޮֿ׫ڻֺڮڿ׮ګګޭ޺ޫֺ뽻뫻׷׷֫׾֮޻ۮߺۮުުժުժݺڿ߫ں֭ڮ޿گݭ׿ۭ֯뫵ׯ׫׫֫ۮ﷾׭߿׫׫׭﫫ַֽ֫ꫯ߫߫ۮ֮ޫﭯ֮ޭުժުժݫݽݫݽݫݫګݫݫݫ֫ݭݫڻ׽߫ޭݻޭ۫۫۫۫۫۫ޫ۫ޫַ֫۫۫۫۫۫߷ֶݫ۫۫ݫ۫۫֯꫿ުջժުժۮ߷߿߯뮮ޭݵ꽾ڿݯڵ߷ޯݯںֶ߭׫ꫫ֫׫۷ֻ׽뮮׫ڮݯ꺯־ݷګڮ뮶ޫݫ֫׫߯׭붽ݷޯ۶ګۯگ߿ݾުժުժ׭߾뫯ݿݷ߮׿׿ڭۻڮ޽޻ݷڵݷڻֺ޷ڻ֫޻׾۷׿ֽޯ֮޷֫׫޽֫׮껾ֻ߶֫﫶ھڶݷڮֻޯګުժުժ׭﮻ֻ׶޶ֽڭ۫֫ڵڭ׽֯޾׫ۺ꿫֮ꮮޯ۾ޭڮֺ׫ڮںֽڮݫ޺֮ݷ߯ݮﯿڻ߷ﶺھַ֭֫ުժުժ׽ݭᄏ׮׵֯֯ߺۭﭫ۫׫֮گ߽﷾ַ۵׫֯׫֫ۯ֫޺֫׫֭֫ޫ֫֫֫֫ګ֫׭׫֫֫ګ֫ݫ뭯꭭گ֫֫֫ۮڮ֫֫֫֫֫ޮۯ׫ުժުժ﫯ݶ֯ݵޭޮ߽ۻꭵ뭻ݭڶ׶ﯯֺ߮굶ھ֫޶׮ګګ׷ڭ֫׫ׯ׫믮׫׮׮֫ڽ귮׭ޮ׫֫ݭګ֭ګګګڮ֮ګުժުժߵޫں߽޷޺گޭַ߫޵߻׷믿ޮ׫ֿۭ֯׭۫־ںۯ֭߭޶ڮۯ׭޶ڽޯֵֶֿګګ׫۫֫֯ݭ֫ݷꭵޯֵֽުժުժ֭֭ݫ۵ꫭ־ﯮۯݮګ޿ֵ뽽ﶽ뵮׶޵޺ߵ֫֫׫ګګ׽ׯׯ뻺ۮگ׫֭֭׫ڮ֮ڮګۭ߷֭֫ڮۯ֮֫ުժ֭֭ݫ۵ꫭ־ﯮۯݮګ޿ֵ뽽ﶽ뵮׶޵޺ߵ֫֫׫ګګ׽ׯׯ뻺ۮگ׫֭֭׫ڮ֮ڮګۭ߷֭֫ڮۯ֮֫ު׺֫׻֫׺޵ޯ׶߷־֮ޯۺ֮־߮߮뫫ޫֺ֫꭯۾֫׫ﭺ߮ﭫޯګ׮ַۻگګ֮ڻ֫ګ۵׫޶﫫ޮ֭֮޺ުժުժ֫ۯګ۶ڽ꫻֯ޯ߻ڿַ֭֮ݾګ޶ֺֽڭ׮֫ڻֵۺ۵ۮڻ׭ꮫֵ֫ۮ޺޽ۭݻڷֵ꿫׮뮾۫ۻުժުժ׶۾ޭ۾߷׶ֻ꽾ַﵫ׻۶뿺ֶ׽޾޶꽾׽޿ھݭ֮֫뫽ݿۻޯַ׶ۯ֫ڵ۽޶֭ֶֺ궶֭ڮ߻ڿ׽﫾۶붯ֺֻުժުժݫﺭ﷫믶ﯷ꺻ڮޭݮ޶뭶ݮ֮ߺڷ뮫ꫫ뫮믿ڵھݽ߮ꮺ׽ޮ޶ޫ߫޶ݯޫ޵߫ۿׯ۫ۻުժުժꭾ߾ֽ֮ݯ꽶ڿ޶޽ݿ׾ڵֺ֮ޫַֻګڮ֭֮߻׭֮֫ګ׫ںޯ߻֫ڶ뭮֭֫﫫ګ׫뿮۷ڿ߫֫ںޯ׫ۯڶ﫫ۯڿڻުժުժ޻׿ڵ֫ڵֿۭگޯׯھ߾߿ۿֵֽ߯۫ޫ֫޻֫ۮ׶޷֫ﯯֻﭫޫ޻֮뫵֫޻ڶ뫫ֿڶޮޫުժުժ׵޺ۺگڷ׶ꭻڷݫۻݷھֽ׽ַ֭׫֭꺿ݭޮ׵ַڮꫭګׯڮ׭֫ګ֯߭ګ֫ݻګ֫׮ׯگ߻ګ֫֫ׯ۫ګ뺽꭯ۯۮ۫ګޫޮ֮߻ުժުժׯں׾۵ﯺݷ뵵ﷺ۶߿ֵ뮮۷׻گݫ׿ꮺ޻޷뽯޺޷ߺ޶޷ꫫݿ߫ݺݺ޷ߺﯯޫ꾫ݶ߮껺޷ޫݿ궵ުժުժۮߵֵݫڻڿ֮߷ׯۺݭ۵ׯ׭ڷֺ׫ڮ֫ݯֿ֫ںګڮڮ޶ֺڻ꫾׭ݻڭֿֿ֮■۾붮ֽګֺֺ֮꺮붺޶ۺ꭭ݫ֫ުۮߵֵݫڻڿ֮߷ׯۺݭ۵ׯ׭ڷֺ׫ڮ֫ݯֿ֫ںګڮڮ޶ֺڻ꫾׭ݻڭֿֿ֮■۾붮ֽګֺֺ֮꺮붺޶ۺ꭭ݫ֫ުժުժݿڶ֭ھڻݿַۭݭ޵ڽڽںڮۯ޾ݮַ뮽ں֭ڶ߫ݫޯݫݷ֭֭ꮫڶ֫޻ۮݻޫڶ۫߻ڶګݫ޺߻ڶݫުժުժ۷ޮ׫껷ݮ߿گݫۿڭڽ׫ַ뭭۵﫯ڮ߫߷׽֫׭֭۫뫫ޫ޶۽֭꿫ꮯګ۫뮫ڭ޶ڭ۶ַޮ֭֫׺޷ګ﫯׺߯ުժުժ׵޿ۯڭڵ۽ۿ׷ֿ޵ںݻۮڵֽ֫꿻֫ﺻ۫ݷݻ뮯߫޾ګڵݷ۷ڷ׭ڻھﺻ֮߭޶ګ۷׺޶ګުժުժݫݮ׻׾޻ݭۮꭾ뮵ݵڶ׻ׯ׫ޮ׿ֽڷ꫷֫ڷۮ﫫ݯۮ޶۵֫ޮݫ۫۷ڮׯ믫ުժުժڵ׵޵׺گ֮֫۫۫ڮګ֫ڶ׫֭ۯ֮׭׫޶׫֫ۯުۭ޶ݾۭ߷׽޻ݫ߷ۯګ֮֫گګڮ׮گ޻ׯ뫫گ֭֫׭޻׫֫گ֮֫۫۫ڮګ֫ڶ׫֭ۯ֮׭׫޶׫֫ۯުժުժ޶믭׾׽ޮ߫֯۷޿޻뫷ꮫۺۭ֫ݯ޶׾ڮ֮꫿ۯ뫫׫뫫ڮۮݻګڭګ޿ֺ뿮ݾ۫޺֮ګުժުժ뭮׿뫮߫߻ޭݻֶݷޭ֭׭ګ߿ׯګ뭭֫گ֭֫ׯګ߯ګ۾֫ׯ֫֫֫׫ۮ֫֫׫֯뭫ڮ꯮﫾׫ۮ֮֫޶ުժުժ޺ֽڭޫ׿ޮﷵ׵ۮ֮ﶵ껫ۮﻯׯ׫׫߻߯ڻݯ֫֫ګ޺֮ޭګڮ߷߻ֿ֫ׯ꫶֮׫׫֫֭׭ګڭګ֮ުժުժֿ־ڷ߭궾ﶿڷ߿֫ݯ뵷ݽޭ׾ֺޯ߾ﵭݷ֮ۯׯ֭֫ۯګګ޻֭ڮݭ߭ڭ߫ݮ׫گݭګۭۭڮ֮֯ݫ߫ۮ֭֫ګޫꫮ֫׫ګ׫֭ުݷժުժﮫ޶ﻫ֫׮֫ڮ֫뫫֭ڮުժުժڵﭫ붻޻׿ۻ׭׺߫ڽگ߷߻ޫֶۺ׵޶ݾګ޶֮گꭶ۫گڮݷ֮ڮۯ׭ڵګ׫׫گ޶ڽ֫׫ꫮުժުժ׿گ޷޶֫׻֯޵۷ݭڭ﮽߽ڮ׮׭֮ڭۯڭګۮ׭֫֫֫֫گګ޶ޮۮۮ׫ۯꮫ׫ڭުջժުժ޶޻ׯۯ޾۫۾׻߮ޫ׻뷮꽵ޮۿۿۭׯ߭ޫڮڮ֮ګ׫뮯گ֫֫ګޮ֫߯ګ֫ګ׫֮֫ګ׶ުժުժۿڽڵ־ֺ޶ݻ޺뮽۾뻷޿׵ڮ߾ݷڽ֮ݫ׫޺۵ݿߵ۵ڿ׫ֻ֮߫ڽڿުժުժ޶뫭ݫֺ۫߿߽׫ݶ■߭ﺻ׮ݵﻷ֫ۯ֫֯ڮ֭׮꭭ڮ֭֫ګݷۭ֭ګ׭ׯ뫮֭׫߮ګݫ֫گ׫ڿݽۮ׫֫׭֫ڮ߽꺺׫֮گ֫ׯ֫۫ުժުժ׫ֺ޺ꭽֵ޾ݾݵۭ߮ݶ߭ݽݽڵݫݵݺ߮֫֫ݷ߽ڷڮַ֮֮׫ޫ֮׫֯֫ګ޺ַگ֭߭׻ګݷ֮߫ڭׯ֫ګ֮ݷުջժުժݷڮֵֽڮڻֺڶ߿گگ޽־޿۷׮֭֫ڮۮޮַګ֯ګڭ׻ڭ׷ڭ׿׫֮ׯڭڽ׭ֺ׷֫ׯ֫߿֫ګګ֭ުժުժۭ޶ݾۭ߷׽޻ݫ߷ۯګ֮֫گګڮ׮گ޻ׯ뫫گ֭֫׭޻׫֫ުժުժ׻֯ۺݿ֭֭ޭݮݮ귭ֶ޾֮ݮﵯޮֽ׫ֺ֫۫ڮ߽֫׫ֵ߫߫꿾֫뫫֫֫ׯ֮﫵ޯۿֺޭ׭߫ުުժުժ붮ﮫ믿ֵ믭뵭۫֫֫֫ڽޫݶꮫۮۯ۫ګ׭꭫ګ׫۫۫ڮګڮ֭֫ڭ֫߭׫֮گ֫ݫݯ۫֫׮گ߭֫뺫ޯڮުժުժݫګ۫ުժުժ޺޻뫫뫫֫֫뫫گ׫׭뫫׭׫֮ۯުժުժ֭߯ݾֵ߷ݽ֯ݵﯵ꽻۽۫ڶ߭ﻯݶݷݫ׭ޫ֫ۯ֭ޮڭ׭ڮۭ֭֮گۭ׫ڮ׭ګۯ뮯֭׭ުժ֭߯ݾֵ߷ݽ֯ݵﯵ꽻۽۫ڶ߭ﻯݶݷݫ׭ޫ֫ۯ֭ޮڭ׭ڮۭ֭֮گۭ׫ڮ׭ګۯ뮯֭׭ުժުժڵ뽿ݽꭵݮ꭮޻ߺޫ֫گݽڽݶڭ׽֫ں֫ګ֭ۯ߫߻֫ڮ֫֫֫ݾ޶֫ݵ׭ﵫګ֫گ׫ޫ׫뺫֫뽫ׯޫޫ׭֫׫׶֭ުުժުժ޷ַګ߫﫭ݷ߮ݫ߮ޫߵ֭׫뾺ڵ׶׫ۮ֫۫ݻ֫ګׯګګ֯߻֭֮֮߯׭֮ګگׯګګګۯ׫׫׫׫֫֫ׯݻ׫֮֫߫ﺮ֮߭ڮުժުժ뷫뫫۵׫޺׫ݫ۫ګ޵ݫݫ뫫׫뫫گ뫫ׯ뫫֮뫫ׯ֫뫫ګ뫫ݫ׫﫫ګ﫫ګ﫫׫׫׭֫뫫ׯ뫫׫뫫׭֭׭ڮֻ׽׭ھګ׫ֻݫ﫫ׯۯ﫫ׯ߫ׯ߫ۯ﫫ުժުժۿ߻ֶ׽׷۷޿ڭ޷ݭ׾ڽݵ޵׺֯ޫۭ۫ݯ۫گ뫫׭׭ꫫگۭګݯگګګޮګګګݽުժުժ׭֭ޫ׾߷߶߫ڻ׷ڻ۾ޯګ֫۵׶ۮ־ۺ߫ֽګګꫭޫׯݭ׺׫ׯ߯ꮫ׽ګ֫ݭޫ׫ګ궻ۯ߾ۯ֫ުժުժ߮ڷ֯ޭ뺫ֶ֮ڵݷޫݫڵ߭ڮ׫ﵭ׫֭֫׮֭֫뺫ׯ޻֮گޯگ֮߫֫ګ֮׭ګ֭֭֮ګݻگ׫ۮګުժުժ꫶߫߫߶ﵫ۾ݫ߫ݾֻګ뫫ݫ֫߫ׯ뫫֭뫫뫫뫫گ뫫ګ뫫뫫گ뫫֭ګڮ׫֭׽ׯ־ֻ׭׽ݫ֮߫׭߫뫫ުݮժުժ뺺뾭ꫫݷݭֺ붫ުުժުժ뻾ګں׽׶߷꭫޶۽ֵ믵﫽߽ޫֺޫ׽޵ۻۻ޵ڮڮݶֽ׿ߵޭݫݶ׫׻ݫ׫۫ݵݯ뻽ַ׫꫶ֵֶڵުժުժڿֶ뮫ڮ﮾﫭߮ھޫگֵ֭ݯֵֻ֭ڻ۫뫫ֶ꯫ޭݶݻݿ׾۶׻ݿݿګݵڭݫۻ׷ݵ﮾ުժުժ۫뾯ۯ߷۵ڵ۵֯۵ֽݷݫ׷ݻۮڵֶ߿֭ڶ߮ޫֺ۾ڶ׻ڻݽ߫۫뷵߷ުꮽժުժ뫫߭ݺ޻߽뫫ﭻﷺ߫ﭯ׷ݯ׫ﮮﮮ۫׫޻߽ﯽ﫯￿߮ﺯ߮ﮯ﫫ֿﯶުժުժޫߺڻ굯گۻ꺻ݫޫ߶ֽ֮֫뻶ۭݯ۫۫޺߭ڮֶֿۭ֫֫߫뷺׫ֽ֫ګۭڮڮ뫫ۯڷ۫ݵ۵޷ڶ׭ﮮުުժުժڭ޺ۺ֮뿭ڻۺ֮ﭭ׭귻׭귻޺׷گֺ뻾گֺ߶ۿ߶뵯붭뺿ֻ꯾޻ݿֻ꯾޻붵ھݿھ׭߽뻵ۭ￵ۭݫׯڿ߯׫׻ުժުժﵫګֿ֫׿ۻ֯굫ۭ֯ׯݯֽۭ֮ݻ߫ޫݭ߫۫뫷׶ֵ߮֯ޫ߫۫뫽﫷׫׷׷޿ګ뫷۫뷫뫷׺ޫޫۯݫ뫷۫뫵뻯굫ޫ׫ﷵ뫷ۯݫ޺׻ګުժުժֻׯޮ뭯־߾֫ݫߺサ۾ߵ߭꯯ݯﺺꮭꫫޮ뫯޶ݭ߫믿ݫ굫߿ݯݯݫ֮뻽ުժުժ뽿֫ު뽿֫ުժުժݾ۫ޮַׯݵګ֮뫯߷ھ꽺ֶֻ۾֮뵵ڽ޵■ߺ֮ګ׫ޭ׫׽ھڷֻ޾׭ګޯߵサ뮻ںﷶݯݫֻڮ꭭۶ﺯׯꫫުժުժݾݫֵ߽׾ڽ޽ګ߮߫꭮޷ݫګߵݻ굫߫뫫ꫯ۫߾ݯޭ뫯굫޵׭ޭݵ֫ݺ߯꯺ݮݫݿ޿߭־׭ݫۭꫫڭ۷ݺ׫׫ݵ׫׵ުժުժ꭫׺׻꾾ڿ׫گۮ뫫ֻګڿֺڿ믻ݽڻ׻믮߫߫۵۽ݫު꫿ժުժַֺﭷ׿ޫֽֽ۽ޫۺᆴڷֵﷺ뮷߫ׯ޺ﶶ׫ݯ뫭ޫݶ׾﷫۶޿޶޶ݮ֭֮׫֫꺫֫ޫݫ֮֫֫ޯޯ֫߿ߺ߻ڮݫ۫޻֮֫ڮ֮ުժުժݫ߽׷꯻꯶ַ֫׿޵뫮׿߷ݵֿ߫ڭ֯ڮ֫ۯګ߫׮֫گ׫֫گޫޫگ֫֫گ߫֫ڮګ֫꽮ׯުժުժ׻߯޽޻ֶݵ߾۷گ뮽߻׷굫׶ֶۿ뫾ݵֻݵ۽ھ޺ګ׫׫߫ڻگګ߫ݭ׮ګۮ۫ݻ޺۾ݷ߫ݮׯگׯ޶ګڵ׶֯گڭުꫮժުժ뿾֫߮֫۵۶ֺ׮껫֯߿׭׽߷﻾ںۻֻ֫ڵ޶׭ۯ߫ׯ޷׭ڻڭׯޯ׫޶ګ׫֭֫޶׭֫ڿڮ뮯ګ뭿ֺ߫ޫ֭߯ڭު뿾֫߮֫۵۶ֺ׮껫֯߿׭׽߷﻾ںۻֻ֫ڵ޶׭ۯ߫ׯ޷׭ڻڭׯޯ׫޶ګ׫֭֫޶׭֫ڿڮ뮯ګ뭿ֺ߫ޫ֭߯ڭުժުժ޻ޫׯ߫׵޺֫ڻޭݵַݫַۭޫﺶ߫׫ڮ֭߭׫ߺ뫫ֵ֭֯ڮڮޭ֭׫ׯ뽮ުժުժ߯ڿ۫ڭ޻ֽ뫫ޯۺڽ֫ﭭ֫߫߷ۭڮ۫گ뫫߯ڽ׷֫ׯڮ꿷׽ֵګ뫻ۯ뫫׫ګ޺֮ݫޫֿ֫꯮߫ުǫժުժ뿿֭ޫݿߵ׻ۻ߿ݻڵ߫ュۺ귫꫻׷׺޷گޭ꾷ׯۭ֭֭֭֮֮֫ׯ궮֭׭ګګޮ׫֫گگ֫֫ګ֮֯׫ڮ׭֫ׯ֮֮ګުժުժ۽뮺޷ݷ뮮뫫֮ުۯժުժ붺۶ۺ޽۽֫ڭֺﯵ޺뾶꯷߶۾ݻ׽ۭ֯ׯݷ۫֫ګޫ뫭׭ۯ߮۫ۯ֫ڮ߻ګھڮ֫֫ګګگۯ֫֫뫫֭׾ۯ޺֫뽶ުժުժۻ޷ݯۺߺֶꫭڽۭޭںڭۭ۫޾ګ߯ﯫ뷻׫ޯ֭ګ֭֮֮֮߮ݫ׫׫۾ۯۯ߻گݯݻګڮ־׫֮֫׭ުժުժݵۭֻݽ۽ݵ붮ګݷں뵻뺺׮ݻۭ֮׫֭֫گڮګׯڭ֫֯ۻ֫׫ڭׯ߻ޭ׭ۯ߷ڽׯ׫ۮ׫߫ׯު޽ժުժݻ׿޾ַݾ׵޺޶߮۵ߺサݿޫ֮ݺֶ޷ݺ뫮߶׺ֶݶ׫ڮ׭ׯګۻ֮ޯگֶﮫګ׭ݭ޺֯־ڮڮۯ֫﫶֭ׯުժުժַۭ۶ݫ֫뭯ڻ׿۶귫뽽߮ﯻ뫯ۻݿ뷷֫۫֫ګֺۭ֫ڮ֯׫׫گ߭ګׯݮۭ֭׫ׯګۯ޽ۮګ׭ڮ׮֯گ׻ޫުժުժ߿޶ݫᆴ֫ڮֶ߻޺ݾݺ֭ڶګ׭֫׫ׯ֮گݻ׫ۮ޻߻ݾ֮߭׭߫֫׭ׯޯڭ۫׭֫ۮ׫ڮޫ֮׫֫׫֫ުժުժڮޫ׾׷ڿ޺ۭۮۿۮڵ߮ڻﯯ׭֭׫گ֭׭֭֮׭ګݭ׫֭׫׫گ֭￿׫׭׮֫׫׫ڷگ׫ׯگ֭׭޻ުժުժ׭ݺۻ۶ۿ׺ݻַ֫߻ڵ׶֫߯޵ַ߽ݫ׭֫ڮ֮֮֫֫׭۫ھ޾׫֮׫گ֭ׯ֭ﺮׯگگ֮ګ֭޻ׯ׭ۯ믷꭭ﯷޫ۫׭֫ڮ۫ګ﫫ުժުժ֫׭ڭ߯꯶߻ګݿݵݫ뵫߿۽ֽ﮵۷ۭ׮ڭۮ߫۫׫ׯׯګۭ֮ׯﺽ׫ۯ׫ګۯׯ׭ڮ֮ׯڮ׫׫޿ޯׯ֯ݻ֭گުժުժ֫ݫۿֻ֫߭޺׭֯ݶ굫ֶ֫믿ݷ֮߭޿ݭ׿ګޭ߯꭭۫ګ׭ګݻݭ֭ׯׯޮ뫫׭׮߻֮ڭޮ֮뷯ꫭׯ֫ݻݭ֮֯۫֫׫ׯުժުժ꺭۽ޮ־뭯޽־꯺׾꽶ڶ﫫گګﯯۮگ޶ڮ֫۫ڿ߽ۯ׮۫֫꽶֮֫֫ګ֭믮ڭݮګ֫ڿڿﯯګ߫ުժުժ֭֫ﻫ߭־ݭھ׫۫ޫ붶ګ뾮ߺﶻ׶ޯ׽ׯ׮ޫڭ׭֫ڮꫫޫޫ֮ګ֫֫׫֯֫ޫ֮۫׭ۮ޻֫֫֫ګޫޯګ֭֭ۮ֫ުջժުժ뺷ګ뭶ֽ߮֫ݯݵݭݫﶮߵ޶ݫګֽ߿ھ޽۫گگ֭گ֮뾽߭ޫ֭ګ֮ڮ֮۫֯֫ڮگݻ֮ڮׯ֮޻ׯڭگ׮׮ޫ׭گ֫뺵ݭޯڭ֭ުժުժݮݶݯޯ֫׭ڶ귵ߵ֮ݵ߻ݭ۫ڿګڷ֮֮۫֫ګڮگ׫֭ޫڭޮ߻֫ݮﷻڭ߽֫ݻݭ֮֯׭گޫޯ߻ݭ޻ڮ׫ުժުժ߯ﻮߵۻֶݯ֫֫ں֯ڷھ߫߫ݫڮޭ޿꿫ݫݶׯߵ﫫ݫۯޫޮ֮ڿ߭׭׫֭ޫުժުժ۵ᄏ۵ݶ۾ݺݻﷻ׵׾ڭ۶׽ۿۭ֫ڷޮ޺꫺֫ګگ֭ۯ֮ۯۯݭڮګ߭ڿګ׭޿뭫گۯڷ׿֫۫ׯ׮ګ֫׻֫޽׻ުժުժֽ޵֫׭뵵꿶ݭ߯߻믯ֻ߽ڶ궵֫֮۫߯֫۫ڭ߫گ׫֫֫ڮ׭֭ݻݭޫګڭ߭ڭ߽ګޫ׫߻߽ުֽ޵֫׭뵵꿶ݭ߯߻믯ֻ߽ڶ궵֫֮۫߯֫۫ڭ߫گ׫֫֫ڮ׭֭ݻݭޫګڭ߭ڭ߽ګޫ׫߻߽ުժުժ޻ݷﻫַۭ۫ޭݯֻڵޭݫ֭޾گޮ֫ګ֫گ֫֫׫ګޮ׫ګ֫֫߻ڭګׯگ֭߫ݭׯ޻ۭ֫뺮ڮگﶫޯګګڮڮުժުժ߷׭ݺޫ۵ޭݷۺھݷ뻺߯ھڵޭ׽׺׫ڽֻ֫۫ﮭ׷׵׻ꫫ۶ֻګޮ׮뫫コֻݫ۵ݵֺ׽コ껯֫ꫫ׫뮵ګֵ뫻ګォުժުժﶷ׶۫߶ֶ׽ֿ߾߫޺ݮݮޭ߫۾߮ޮ޿׫ֺ׮׫ޮ֫گګׯګ׫ۭ׫߯ݮ֭֭֭۫֫ګګ뮯֭֭ޯ֮֫믮ګ׭֮֯گݫ۫ު׫ުժުժ﫽ڶ־ۺ޵׮۽뻺ׯڷ޾ֽ׿׻ګ׭׮サ߷֭ﭫ׭֯ޫ߭׫֭ۯڮ֮֫ֺ֭߫ݽۭ׫֯뫫׭֮֫ꫫݫުުժުժګ߭ﯭ믾ߺ׵ֶ۫֫۶﷽ݫ֫֫굯׽֫׮뾵ݭۯۮ֯뫭֭߫ݫ֯﫭߫ګ֯ݽ׫ګۭۺ׫߫׮ޫ֫ۯ֯ګ׫ުժުժ뽿ګ޵뵫ުժުժׯֻ߶۵۷޻޿߭꺭ڮ׵߮޽ݺڵַ۷ޮ׫ګﮮ֫ڮ۫֫ﯯ֫ڭﯯ۫֫۫ګ׫ګުժުժ޾ڷ׽굽ݿޭ׫۷׮ֽ׮ڶ۫ڮۯ׻ګݻ޷֮߻֫߫֫ޫ߫ۯ֭֫֫֫ڶݫ׫꾯ګ׭׫뮭ۭ֭ުժ޾ڷ׽굽ݿޭ׫۷׮ֽ׮ڶ۫ڮۯ׻ګݻ޷֮߻֫߫֫ޫ߫ۯ֭֫֫֫ڶݫ׫꾯ګ׭׫뮭ۭ֭ުժުժ֫׷۽ݽڻֽ߽ۭ֯믽׽֭֮֫ׯׯ׫ۮ׫֮ۯޭ׭ݫݮׯ׫۫׭֫֯׫ګ׫ګ׫׫ۮׯުժުժߺ޷뻻ڿ׫֫׫׶ګ꫺׮뫫֯ުժުժݿ߻۷߭֯۽ۺ߫֫޻߫ݽ뺫޿֫ۯֺ֫׮ۭڷ۷ۭۭ۫ުժުժ׵׵׵׵׷ޮڮ߻ڻݿڽ׭ꫯݶ׭ׯ߫뿺֭֫֫ꫮۯ۽ۻ۾ݷګ֫۫֫ګ֭߫߶֭߫߫ݽ֫۫뮫۫꺺֫뫫׮ۺ뿵׵ުժުժᄑׯ۾޾۷ۯڿۺֽݯ߻ݫꮷھ֫۷گۯ׫֮֫֫ڮ׫׫׮׫ڭ֭ۯګ֫ׯگ֫ڮ֫׫گڮ׫֫گ֯׫ڮ߭ުժުժߺ׻ڿޫޭ׭ߺ֫꺮׮߯ݫ֫ۺ꾵ﵷ׵꾺ڻ׫گߵ֫꭯ﷻ׵뿽ݭ߭׮׾گ۫֯ڿޯ꭫֮ޫޯ۫߻ۮުժުժݵ׾ޭݾ۵֮ꫭ֫֫ۮۭ߫ݻުժުժھ޶ݺ֮޻ֿګ֫ۯ׫ں׾뽷֭ۯ߭뮫֭ڭ֮֮߭ۯ֭֫뮭֮֮߷֭֭߷ުھ޶ݺ֮޻ֿګ֫ۯ׫ں׾뽷֭ۯ߭뮫֭ڭ֮֮߭ۯ֭֫뮭֮֮߷֭֭߷ުժުժ߽ׯ׫گۺ޺ꮺᄋݯ뽶׫ۮ֭߯뻺ڷޮ׮׮߭߫뮭߷۫۫׭ګﮫݫ뮭֫۫ݭֵ߾﮿ݭֶ۫ުժުժ׽뿫뺫ݿ뿿׭ݶ۵׮޻뫫ۻޫ뫺֫ޫݫ۫۫۫֫֯֫׭ڽ֭֫߫֫֫֫ڮ֫׮ޫګ֫׭޵ݫުժުժݿﵶګ۷߷ߺ߷޾ߵ۶ۿ뮫ڵ׭׭ׯ޽׭֭߭֫ݻڮ֫߮ڮ֯׫ۭ߯ݻ֫׭ꮫۮ֫׫޻ۭ߭޻ׯڮۯ߻޶ުժުժ֮뽫ݵګۮ꿯۷ۯۯ۫ۮں۫ݫ۵붶ڮۭڭݶ׫׫ګڮڮݭݯݭݭ߮֫߫׭֮֮֮ֵۭׯުժުժޯڭݷ׻گֵ߶ݯ۫߽߭ݵ߷֯ڵޭ֫۫֫ݯޫګۺ﫫귷֮֯۵ֻ֭֫֫뮮֫۶߭׿ުުժުժګݫۺ׾ݮ뿫ꮮ۵׭ݺ۫뵭ֽׯ֫׮֫֫׭۾ݫ֫޷ꫫ׺֫޿֯ڮ﫫ڭګ޷֭߿ݯުվժުժݭݭޯݶ޽۾׻ޫﭵꫫ۽ݶ߷޷ֵ׺޿ں޻޾׫߫׻﫫׺국߭ﵺ׭ޫݫݷ׶޾ګڮ߻߾߮׫ڶ׷ުժުժڭݷ׻ڭݭ߯۷ݿ߽߭뫭ڮ׭֮֮۫ݯޫګۭ귷ګ۵֫׫׫ֻۭ֫֫ޮݭ۫׿ڮުժުժֶݽ׭ګۮ׭ڮֺ﾿߫뽯޻ݶֵ޽꺵־ֶ֫ݫ֫ݫֻݫ߫׿ޫ׭֮֫߫۫꺫ݯ֫߭﮵﫮귷֫׫ުժުժ׮ׯڿۺᄋگ׵߯޿ݭׯֻ޵ֶ׽־ںګګگ뮭۫׫֫ޫڮ֮뷷뮭뽵ޫګ֫֫ުժުժ׻ھۭߺ﻽ݫ׮뭺׷ݿ޵꫿֫֫֫֫ګڭ֫֫֫뮭֫ݫ֭֫֫֫֫߫֫ڭ޽֫֫֫֫ۯ֫ګ֫֫֫뮫֫ۯ뿽ުժުժ߷ַݵޭ߮߽׵○ݻ޺붯ַݫݮֽ֫޻֮ۯ֫֫߫ڮ֮۫߫׭ګۯۭ߫ݻ֮ګ֫߻֫ժުժ߭﫾믻׭ڶگ꯫׾꯫ۮֵֻ׵꺿ﺽݮګ֫׫֫֫ޮ뭫֫ׯ۫֯׫֫֫뭫֫׫׫׫֮ުժުժگګڵ۽ޯ׭ﮭߵ۾׵׿ޮޭۯ׮֫֫ڭ߫ۯڮ֮ޫ׫ۯ֮ګ׮ުժުժ뿶뻯ۻֿݷ޷֭֭ګ֭֭꺫֭֭֭֭֭֮߫߫׭ꫫֵ֭֭֭ﮫ֭֭뷫֭߫߷֭ߺ֭֭֭ں֭֭뷫֭֭֭֯߫ުժުժֶ׽뭵ں߿߾ֻ޺뫾׮꺮ޯݷ֫귷ڽݵꫫֺڿֺں֮ۺֿ귫׫֫꺫׭ުժުժ׿ݷݽ޶۵ݻ껷׺ݫׯߺߺݯ׿ݷݿ߶گگ޻׫ڮ߯֫ꫮ޾֮ޫ꭭޻߻߭ۯڮݫ֮߻ݻ޻֭֫֫ڮ׭׫ګުުժުժ޶뮯ڵڶスݷֶ뽫ݿ뷵ڽߺۻ뻫߶۶ޫޮھݯ֫ڮ޺޻۾ګޯᄒھݻֽ֫ݷګޫ׭ַ۾֮ݽ۾گݯݫ֭ުժުժݯ޿׺ڵ߷߮֭߮ݺ֭֯ݮ֭ݺ֭֭֭֭֫뭭֭֭֭ۭ׫֭گ֭ݫ֭ޯۯ׮֭ݫ֭֭뮫֭׫֫꭫ުժުժ׷׷﫮ݫ﫫ޫݫ﮻ޮ꫻ߵ޿ꫮ뻫ޫ뭽֫뫫ګ֫ꫫꫫ޽۫۫ڽ۫ڽޫֺֺ߶ۻڭ׫ֺ֯۫׫ֺ۫뻷ުժުժھׯۿۭߺ޺׮ݶ۵ޫ޻ݵ궯׻ֵݿߵߵݯ߭ݻ޻߻۫޻ݻ꫺ݻ֫ޮ߻ݻ֭ޮݻݻ֫ݻ߫߭׭ުժުժֶׯ۵ݭݵ޵گڶֶ꽻֮￾ۯ뷺ۭ֭֫֫뮫֫֫ڮ׫ګ׫ڭ׫ګ׫ݮڮۭ뭫֭֫ۯުժުժۭݯ߿ۿֺ߽→ں۾۫޾ݮ޿꭮֫뮵뫮ګڮ֭ׯﶻۭګگ۫ߵ۫ڮګ׭֫׭֭׫뫫گׯ֫뫫گ֯۷ݫ۫֫ڶުժۭݯ߿ۿֺ߽→ں۾۫޾ݮ޿꭮֫뮵뫮ګڮ֭ׯﶻۭګگ۫ߵ۫ڮګ׭֫׭֭׫뫫گׯ֫뫫گ֯۷ݫ۫֫ڶުժުժ귮ַݿ׺޶׵ڮ۫﷾ۺ׺߮ھگׯ֮ߵޫ֮ݻ֮֯֫ޮ׫߻֮ݻګ߯ګֺ֯߫ګ׫߻ުժުժꭵ߮߷붶ꮾ۽޿׶׾ݻֶֽ֫޾׽׫ڷݷ۫׫ڮ޺ۭ뭭ֺֻ뮫ګ뮺뮫گ׫ֻ߿ګުݻׯ﫫ڮڮުջժުժ߫ۮڻ׶ﯻ׷߻׺ﷵ׷ںݵֻګڵݵ׫׫־ګګ׿ݶ궾߾ۯ޻׮־ڮ޺֫׫ګڽڵ׭ںگ֫ۯ־ں۾ݻݶ޺ۯ߮֫ׯݿ֮޽ھުժުժ޶ګڿۻֻ֮֮߫۫뵯ݯ׶֫߾ګ߯ݯ׫ﵶ־ݯޮگ׫֫޻׭ַݶ֭֮ޫ׮ޫݯۺ֫ګڮڮֻ׭޷֫ګֻ޺뫺ګګګ׫ުժުժ޷뻾޶ַݮ֭֭ڻݫ֭֭֭֭֭֭׻׽ֻ֭֮߫߫꺫֭֭׷֭֭׫߫ݻ֭֭֭֭ڿ֭ڵݫֺ֭֭ުչժުժ߭ׯֽ뭺׻ڻں׺ڮޭگ޶޺֫׫ڮۮ֫گ뺫ݷ֮֫ۮ֫۫߭ګ޻׫׫֭֯׮ۻۿ׭ުժުժ뻾߷߷ޫߺ֫ݭֵ۷޶׮ﺺۮ뵵֯߫ޫ׫ڮګګګ޻ګ׫֭۫뫵֭޵׭֭׫ڮ߫뭿֮۶ڮ뫾꾫ޫׯګ﫯ުժުժݻ굮ڮھݷ߫ޫֽ߽굫ھ߮ݯݭ޷ڶ֮׫֫߫ׯ֫׫ڮ֭۫֫׫֯֫׭֫ۯڮޭ֫ׯ֭ުժުժۻۻ߷セョڭֺݷֿ֭֭֭֭֭֭֫꽫֭֭֭֭֭۫ګֽ֭֭֭֭֭֭֭֭߫ֽ֭֭ګګֶ֭֭֭֭ުժۻۻ߷セョڭֺݷֿ֭֭֭֭֭֭֫꽫֭֭֭֭֭۫ګֽ֭֭֭֭֭֭֭֭߫ֽ֭֭ګګֶ֭֭֭֭ުժުժ׺ݽ﷯־ڶׯߺ߽ݶֻݭ־ﵫַ޵־ﭶݭھ׺ݽޯګ޶߿۾֫ׯݫׯګޯ߻۶ꫯޫ޺׫ַڻ뷶׭ګ֮֫ڷگ߯۫ګ꺺ڮުժުժڵ׽ڿߺ׽ׯڽ׭֯ګ߽׶޻ׯݽ꯶޾ڵ߭ﻫ޷ֻ֮׮ׯֺ֫߮ګޫޫۯڮ֫ݻ֮۫ۯ߫ׯׯݯ֫֫ګڮުժުժֿ۶޵ֻ߭׺ګﮯ׶ڻ굿ݫޫ֫׫ޫ۫֭֮֫뭫뭿ꭵֿݭ֫ڿۯ뻿۵ުժުժ﻽߷گ߫サֻ֭֯߮֭֭֭ݫ֭֭֫ں֭֭׺֭ޮֺ֭֭֭֭֭֭֭֭֫۫ޫ֭گ֭뫫ֺ֭֭֭۫ꮫַ֭֭֫ުժުժ뮷۵ֺ׷۫ݭ޺ڶߵ׫׮ׯޯۯֽߺ޽ֻ֭뫮׿뺫֯׫֮޺޿ګ֫֫֫ݷݵ׾֮֮֯۫֫֫ݯ׫ֺ֫ުժުժ߻뷶ֺ﮵׷ڶֵ֯ޮ۶޺ڷ߫֫ꫮ׫֫֫ߵګ֭ڮݮׯګڮڮ޶ۮꫫ֭ۯۯ׫뮫۫ׯۯ۫־گ﫯޷֭ۺ֫ڶޫֵګݾڮ֭׵ݫڷڷ۷ުժުժ׵ׯޯݫ۽ֺֿۿںׯ뵮껷֮ݽݭﷷֻ߫޷׭ֻ֮֫֫ݷֻګ׮֮֮ۮګݭꫫۭۭ֮֮֫ުժުժֽڮڮ֮ݷ귵׫ڵ۶ݾ޵ֵ֮ݶ۵ڵ֫ݶۭ꿫߫뺫ݻۮ֫ꫫݶ۵ں֫ݶګۭުժުժ꺶׻ݺ꯵ݷ붶ﶮֿ׫ޯֵֽ֮߻߮ګۭگޮ׫޺ޫ׫۫뫶뻾ګڵ߭֯֫׭ڻڮ궫ﭫ۫뾾ޯֿ׫ׯ߶޿ڿֿ뫫ުժުժ궻뭯﫫ھ޵ުժުժַﯺ붭֮߭ڭ뷻ۺꫫھ߾֭׮ۺ믮ﶭ֭껶߾ڷ׶뮯߽߯߿޾ֻګګ޿ګګګګګﶶګګޫުժުժ׵붫ڻ߫׺ַ꯻뵫ڮ뷯ݵ׽ޭ뫫ݽ֭ﵮַ֮ڶ߫ݫ׺֮۫ݮ޶֫ګﭫڭھھ֮ڿޫڿֿ뷷ֽ׮ުժުժۻֺ۫֫﮿߮ݭޫڿ֯ݯ־ֵֻ֫궿֫׫֫߻׷֫֫ګݵڽޫ޵뺾۾޷׻ֽ߾֮ګۺֽ뿻֫۫ۯ޺ֻ뫷ުժުժݭۿ׿ݵݺ۫ޫ꫽ַ֭߭ۮۺ֫ߺꫫֿݶ꺺ڿ֫޺ޫֺ﫫ګުժުժڻ޿׽֯֯۫߫ڮڮ꫷ݮߺ޻ڭ߾ݺ֯گ֭֫ۮۭݷ׫ګۭګݯڵ֭ګޫ׫۫޺֯ޮڭ֫׫ޫݭ֭֮ڮ֮߯ګݷުժުժݺݷڮﯮ￶ݮݵݶݷڷ޽׵׾۶ֽ߾޶ֺݽ۫ګ֭﫫ګ۫ں׫ݽ׫֯﫫ﭽ꫿߿ﺮުժުժ궷ڮﭭڮ׫޶߷궶׫ֻ޵֮ݵڵ޵֮ݾګ׫ޫꫫ֮֫ګڿ֫꫿ګ꫿뮫ݽګֺުժުժ޵֭ݶֺ߮޺׾ޭֺۭ֯ݽ߽֮޶뷮ڮ뷺֫ݶۭۭ뮮֫꯫߭׫ڷں֫ۯ﻾֫ګׯݯۯ믫ׯݷ֮۫֫ުժުժھݶۭݶ߾ꮽݾ뭺ַݻڵ۫޵޶־ֺ֭߭׫׭ݫګׯֵֵګ׭֯֫ڷޫׯ֫׫֯ڷڵֶ֫ڶޫֵګݾڮ֭׵ݫڷڷ۷ުھݶۭݶ߾ꮽݾ뭺ַݻڵ۫޵޶־ֺ֭߭׫׭ݫګׯֵֵګ׭֯֫ڷޫׯ֫׫֯ڷڵֶ֯ޭݵۺ߷֫߯ޮ޶ޫ׭׫ڮڮ߫ׯګֻ֭֫׮߷ꫫ￷۫۫꫿޺ֶ߭ۮ֫۷ݮުժުժߵݿ׾ݽ߷۫׾۷߾꯷ꭽۭ޿߷۶޶ֶ߽۫ۯۯ׻ګ뵷׮׭֮﫽׾ꮫޯޮ֮ޫ뵺־޺گݭ׫۫ۮޭ׫ֻުժުժޯꫮ׶ֿ֮ꮮ뭫߭ﶭݺ߭ﭫګ֫׭꺷֭׫ګ꺷֫޶ֻ뷶۷ڿۮ֭ֽꮫ߭׮ګ߻ުުժުժ޾޵ڵ߾꯮۵ݫݷַݮۺ붫뺿ګޫۮګ꿿߫ګ꿫ګ֭ګۯֺڭۯ꿫뽶ګ߫ۿުժުժ׾޶ݻ޵۫߯گꮷۭꫯڻݵֽ֯׭׽׭ֺګګ֭߫گ߯޶ׯݶޫֺګ֫ګݭݫڮݭ֮ݯ뺭֮ڮݮޫگݭ߿ުժުժڶڿ֫ݯڭ߭ޫ߮߻۫ۯ۾֭گڮۻ֯ڮ֭׭ڮޫۮ뫻޶ֿۮڭګګ֮׫뫾ݫ֮ݭݭ֭۽ުժުժ׵ݭﺭ귻߻ݷ޶﫫ַ○޻߻뮫뫭گ߶׵뿿ۮ߫뮽ֵڭ﮺ګۯ׷ۺۭݮ۷۫ڭ궻ꮫ뫫ڿۮ뷶֭ުժުժ׻ֻڮڶۮڵﶭ꺻޽ޫݿֻ꫷޻߾׫߷߮ګ׭׫ۯګۭ֭ݮ۷ַۮ﫫꺷꿫߻ׯ뷶ڿﭷ֫ۮ߫ުժުժ޻ֺڭۮꭽݭ֭׮۽뻯꽯ݺݾ߻߻޵ֻ׵׽׷ګ׫׻ޫڿֵֽ֭׫ګ֭֭׮ڮۺ׫﫷߫ֵڮ׭ګުۿժުժޫֿڮ׷߭ޭݷ׾ڿ׭۽ַ޷ׯ޽ݭ߾뵺ݶ׵ݺ׫ڿ߿گگ׮ڭګֽ֮֫ޯ׫ګ׭ڮڮ޶֭׫ޯګׯުժޫֿڮ׷߭ޭݷ׾ڿ׭۽ַ޷ׯ޽ݭ߾뵺ݶ׵ݺ׫ڿ߿گگ׮ڭګֽ֮֫ޯ׫ګ׭ڮڮ޶֭׫ޯګׯުժުժ޵ޯڿ׻׮ڻڿֶۭڽ۷ۺޮڻֿ뭭ݺݻߵ۽ޯګ֮ڶ﮾޾׮֮߻ﮭ֯׭ֺڭߵ޺ۺֶֺڶ﫫ַ߭׷ׯֺڶ붯ݺ֫گ뮮ުժުժڶֿݻݮݶﮫޭݵ޺޾뿿ֽ߯߭׮֭׭ۭݮﭫګ֫޶ֻ֫ﮫ֭׫߯׫ګ꺷ﯯ߻ۮ߫۷ڿڭۯުժުժߵ޵ݷ߿׭뫫ݮݶ뵶ݷڶھۭׯ۫ޫگ׫׫ޫׯ߮ګ׮ڮ߫ڿ۫붾׫ݷ֮׫֭׫֫ڿ׫ۺ֫گگ֭߮ުժުժ׭־ݭ׾ݯ־߷ڶ֭׾ۯݮ뭫߯뾮֮ګݫݭׯڭ֭۷׽گ뮷ڮ굺׫֮֫گ׶׶֫׶֫ګ뺯뫫ޯֽ߯ۮ붶﷫֭׫߷ުժުժޫ꺫ֶﭯ߯ݮڵ߷֭߭ڵۭޯ֮߯׫޺ڮۯ۷׽֭׫ַگ׶ݫ׫گ֫뫫گ֭뫷붶׭ުժުժֶ۾۶ޯ־ݿں߿ꮫڽڶ꭮ھޮֵݽ׫׾׫׫׫׫޽ګ׾﾿׫׫ﷵﯯ׫׵ۮ׫׫꫷ުժުժۿڮ߿۾ںֺ׶ֵۭںگߺݭ׮ֻګڷ׮ۮ֭߭֫ݮߺ׶֭֫ׯ֭߫׭뫶׶ڵڮֶڿ۫ުժުժڽ۫サﶫ֮޾ګ޾ݵ߿־׷޻ڷ׶׫ݮߵ֫־ۯ׶ֺګګ֫׶ֵ֮ޮ֭ھ֭ۯֺڷ׭ګݫ뵷ֵڶׯꮫ֫ݭުժުժޮ߯ޯޯ׮޷ﯮ׿߿ݽں믫۾ھ׵ֺ믶ڮ߽ޭګ﫫֫뭭֮߯ڮںޭڮڮ꯭ګ޺׫֯ڮꮭ߭֫ݮ׫޶ݫگګگׯ껮֭֭ުժުժޮڿֶ׭ݭ뭶ݾֶ޵۶ֶݽ׵ֶ﮵׫֭뭯ڮڮگݫ֫׶߫޾֮֫߾ۯ߮޺ޭ߮ޭ߮ުժުժ۾ڵ׶뮻֫׺ݿں뷵ۺݻݯ굻׷߮꯫ڽ׭߭ݭݫ귶ڮڷګ׫߫׭֯ڮ۫׫޷۶׽֯֯׫뫫׫׭ڮگ֭׫׫ުժުժ۫뵯ڿں׭ݺַ׿߶ߺګ޶߯ڭ׶ڶ﫻߯뫶ַ֫׶ꭺַ߯ڿ֮ڭ׫ڿꫫڭֿ뫶ުժ۫뵯ڿں׭ݺַ׿߶ߺګ޶߯ڭ׶ڶ﫻߯뫶ַ֫׶ꭺַ߯ڿ֮ڭ׫ڿꫫڭֿ뫶ުվժުժݮ﮾ڻں׮߮޶ݷ뾻ݮ믮߫꯭コ޿֫گꮭ޺گگݫگ뫽﫫߫گݫ֫ޭ߯׭ڭګުժުժۮݾ޶ڶ믿ֶ۷뮮޶߿ݻ߭뭫߯۫߫ﯵꭷ֮֮뫭ޭޭׯڭ֭׶޻֫׫֮֫گַꫫ֫ګ뫫ګ꯫߯ۮ޶ުުժުժ־ھ۶׶ڷꮭ޻߯ۿֿ׷ںֵ꭮ޯ׫׫׫׫׽۽׫ޫڻ׷׻꿫ۮ׫׵׫׫ުժުժݫ߫ߺֽ뺯޻ݯ߫׭﫵꺭꺭۾׫ڿꫫڿ붫ۿ׭ֽگ޷붶ֺݫںޫޭګڭꭺݷ뫶֫ݷުժު˷ժ޿ߵڷۯ޿ۮݾֺ߫ꭺֻ۵߿߭׫֭ڶֻֻݭ޷ޮﭭ֮궭ׯ߮׫ڽֵ׽ۮުժުժׯ֯־ݭ׵ۻ׽߽׺׫ݭ׻ݽ߯ݫ뮫꽫꽺꾵ֿꮯڿګޫ׭֮ګޫֺުުժުժ֮ׯڿֽꮿ׵߾֮ۿ׿߶޻۷֫ׯګ޽ݿַ﫭֮ګ׷ګ߿֫ڶګ꫾뻵ݻګު֮ׯڿֽꮿ׵߾֮ۿ׿߶޻۷֫ׯګ޽ݿַ﫭֮ګ׷ګ߿֫ڶګ꫾뻵ݻګުժުժݷߺ۷ݻ߫ޮ귶귵׻ޮ׾뵯ݽ׭۫گֻ֮߮ޫ׭ֽگ׫֫۷֫گ׭֫ޫ֮ޫګگګ֯گޮުժުժ߽굷뺭ݷݿڵ׾ݯݺۻ޺۽꾮֭ڶ뺫߫ޭޫګڮ뽵׷گۯޫ߭믮ׯۮ׫ڮ׮ګگޮ߯붫ׯﭭުժު·ժۭ޽ۭۺڶۻ׽뮮ﮫ߶ֽ۫ۭھֵݽ֭￵ݮ۷ֺﭺ۫﫫꺷۵ںۮ뷶֫ڭۮ߫׭ڭګֽ뮺׭ުժުժڵֶ뾻ڮֶַۺڷگ߫ڶڽ׭׫޶ֺֻ߶׫׽׭׷뿿ֺ׫׾߫׮ڮگުժުʯժڷ޺ﵾۭ׭뷮뾽׷ݽ﷭꯯ݻڮ׫뭯ګ׭ګ֭ޫگ֭׫ۯګ֮֫֯׫׭޽֭֫߯ۯۭ֭׫֫ۯ뭫ڮ׭گݮګ׫׫֯ުժުժڷ߮ڶݮۿھ߭ݶ뵻ݫ֭߷֯׫ڮگ뮫ׯګݯڮ׫֫߮ګ߯붫֫۫ګ֮ޭޭڻںگګݮުժުժ۶ڽߵڷݫ߯ޯ뾷۾׮گ֮뻾ݫꮻ֭߮߮׶گګֵ׫ׯ׫ֻ޵گ׶֫׫۫ں믵߫꫽׵뿿ުժުժ۽߫׮۫뫾گݷ׭׶ֽֿ׭׮ݻݿ֯ݫֺ߫ﶭݿںꮮ߭֭۵ݷݻ굾ڵ߾ﮮ֯ݽꫯ׶ު꫽ժުժﵫ֫۫گڮݮۮڻݻݺޮ뵮֮׫۫ݵڮ޾ګ꭭ޫ߫ۮ֫֮ﭵ޽߶߽߯ݽ߾׭֮߷׫޶֮ګ۵ުժުժۮگソ߽ߵݭ׭߯ڻ۽޻ݻ׫ַֻ﮷ݷ׮۫ڮ뮫ۺֻ֭﫫ھ׫ګ߮ڮݯګ֮꾾׺֮߭ګ߿ުުժުժ߽ݷ꺺ﵾھ굾ݯݿﭶݿֵ߫׶ַ۽ֽ֭ݯ뽽ﭫֻֻ֮ޫֻ߯׭֫֫뵻궵ݯګުժުժݫݫݫޫݻޯ޾߭֫ުժުժ֯ڽ۶ޭߺ׫׵ۯ֫ݫ׭ګ׭׵ݫޭ׫֭߭߭ݫ߫׫֫ݫ׭ګ׭ݫޭ׭֭߭߭ݫ߫׭ުۭժުժ޻׭ﮫ׷޻۵ֵֶޯ޵ھݾګڮ֮ׯ޷ֶۮ߫ڮַ߯߭׫گޭׯݽۮ׫׫޵ݻ޽꫶ݵު꫷ժުժ﫻뫫ֵ޶۫뫫ݫگڮ۫뫫ުժުժݫݫݻݫݻ߮ݭݫ뫵ݯݫݻݭַުժުժ߷ﷷݽֿݫ׾궺گ߮ޮ֯ڿ׻֮ګﭫַۭ߾ڻֻޫݭ꺮ֿھ֮ޫڭگֶֻۭګֽ۫ۻު請ժުժ׾߶߶ߺ궻޾궻꫻ֿݺޫݭ׾ޭ֫گݵݶﭫڿڿޮڮ޵궮ڿޫڶ֮뮮߶ګۯުժުժۺ׵ھ뵫꿫ޫֻ޺֭ۻ߮޶ݵڮ뫫ۻׯګګڿں﫫ڶݷ뫫ۯۭޫ۽﫮۫ګݫ׭뫫׫֫׮֮ھ۫ݫ߿ګުժުժݻ޵ګݺ޾﫵޵ﮫ֮ڭ궫ڷ﫺߯ڭڿ﫷׶߭ۯ߯֫뫽ֽ֯ݷꮽ֭֫۫ݮ۫׻뮯ڷڮ߭ޯݫ뫮ڿ׮﫫ުժުժֿ﫽ޭݮ뻫ݯׯ߷ݽڵڵ۷껶֫ڵַޫﯫֽݭݶ뾶֫꺷ֿ޷꯿޶ﷶ߫ݽݭުջժުժݾ߿޻뫻ߵߺݻ꾯֫뮮۫׿뫯֮֯ڭ۾߭ڭޮگۯ׵ݵګ߭ڭۿ׭֮޵ۭۭ֭۫߭ۯ֭ޮޭۯ׶ޭ߯׭޶ھׯ׫޶ުժުժ߮뵶֮ޮګ׶׶׷ֽ߮֫־ۺ߽߯֫ޯݯ׶׭ޫ꫽߽﫫ۯڶֵݫֻ꫽֫߫ުﯷժ߮뵶֮ޮګ׶׶׷ֽ߮֫־ۺ߽߯֫ޯݯ׶׭ޫ꫽߽﫫ۯڶֵݫֻ꫽֫߫ުﯳժުժުժުժޫݫݫޫݫޫݫޫݭݫުժުժۯ׭ݫ֫ڮݫ۫ھ۫֫֫ګۭګ۫֫֫۫ګ۫֫۫ڽ֫۫֫֫֫ګګ۫֫ު꫿ժުժݫڮݫ߯֯߮۫۫۫ۯ۫ګ۫۫֫۫֫ګ۫۫ڽ۫ګ۫۫֫۫֫֫۫۫֯۫۫ګުժުժֿڷ߻ݫۿݭޯ߷߻۽߯۷ۺ뾾뿿߽׮߻ݻ׺￿ַ޻۶߾ުժުժ۵﫫뫫ݮݾ뫫ݫ߫ޫޫݫ߫ޮݶ޵ֻ뫫߫ݫݫ߫ޫڭۮݫ߫ﭫݫݫ߻ګֻ뵫꭭߫ݫޫ߫ڭꫫ߫ݫݫݫ֮߫֯گު宻۵﫫뫫ݮݾ뫫ݫ߫ޫޫݫ߫ޮݶ޵ֻ뫫߫ݫݫ߫ޫڭۮݫ߫ﭫݫݫ߻ګֻ뵫꭭߫ݫޫ߫ڭꫫ߫ݫݫݫ֮߫֯گު宻ժުժݫݭݫ֭ڮݭݭݭ֫֫֫۫ڭ۫۫۫֫ګ۫۫֫֫۫۫۫֫֫ګ۫۫֫֫֫֫۫۫۫ުժުժ߮ݫݭݮ۫۫֫ۺ۫֫۫֫۫֯֫۫۫ګۺ۫۫۫֫ުժުժ۫ޫݯݭݭڮ׶ڭڵֽۮ۾ꮻׯ׭ګׯ֯꺫޽گ۫ﯫݻ߿׭ڮ׫ݻګ֫ﻫ֯ުժުժ߫ڻ޽뻮޽뻵ׯ߾ھڻۭڻ߮ݮ޶뾮־֮ڭۯ׫ۭ֭ۯ׭ޯڭ֭ޮۭ׭֭ׯ֭׭֫֯ۯڭׯ׫ޮګׯ߯׭۫ׯۯ֫׭ګׯ֫ګׯ֭ޯުժުժ߾׭׭ֵ֫۫۫ګ۫ڷګ۫֫ުժުժ׭ݭگ֫֫֫֫֫۫۫۫۫۫ګ֫ګ۫۫ׯ֫۫۫۫۫֫֫۫۫۫۫۫֫ګ۫۫۫۫ުݽժުժ׭߫ݫ֫߮֫۫֫۫ﻫ۫۫֫֫۫۫֫֫۫׫֫֫֫۫ګ֫֫֫۫֫ګ۫֫֫۫۫֫֫ުժުժ޾޽뻮ַگڻۭݯڵ޽׻־ݫݵ뫶׭ڮ׫׫ۭ֭ۯׯګ޺ڮۭ׭֭߭ۯׯ׭֯ۯڭ֭׫ׯ֯گ׭۫ׯ߫گ۫֫ګݶ۫֫꯶߮ڮݫګۻ۫뭯֫ުժުժ뵶ڵ۶ߺ߾޷ݫ׾޷ݮڷڮޫ׫뫭ݫݭ֭ڮ߶ޯګֻ֮޺֫ݮﮭ׮޻ﯫ߿ګ﫫ުުժުժﮫگ׮׫־߫׿ݫگ֫ߺ޷־֫ڵ뮻۽۽߫׫뫫뿭׫۽۽֯﫾֫ުժުժ߮޾ַުժުժ޽ڵ߮ݻ뷭ޫ׻۶۾ګڷ֭뷯ݷ߭۫ګ޽ᄎ֮ں֫ۯ֫ں۫ޫֿ֫ڮ۫뭯ۺگ֮֮֫ګ֫ګުտժުժ׻ۯֻݶ﷽ֵꫫݫ꯷뿮ۻ֭߿߭ݵ־ֵھڮ֫ݺ֫ھ궾۶׭޿֯߯ڭ߶ﵶ׮޽뫫ڽڭֶۭ뫫뷾ֽ޻ڮֻګ׮ﯫ֭ڿ߿ުժުժ޿ڵڵ޻ꮫ޽ۯ֮߷ݷګ֫ۭۯޫگ۫޷ꮮ׫ۭ֭׫׭ڮ׫ۯګ֫ޮ׭ﷺ뫶ׯ׭ۮ֫ׯׯ֯׮ުժުժֽڿݿݿֿݽޯ׫ڮ뻭ڽޫ׭ۮ׭ںڻڭַ֮ַ޽޺ں߭﫫ַ׭ڮ۫޺ڮڶުժުժ뻯׵ڻﯾڿۿڶ۽뽶ڭ귯޵޽֫ڽۮ֫֫○۫֮׮۫֫ںׯ޺֫뫫۫֫ޫ޺֮ުժުժֻ֮֫ݵݻ޽ۭڮֺ߭꾺߭޵뫶ֻۯ߮׺ݻۿֿֵ֫֫ڻ׿꫻޺ڷ߫ݫ뷻׭﫫ۭﮫ׵־ުժުժߵ޷ۯֶ߫߾꾿֭޾귫ڵޯ۫޽߽뭺ݮ﫻ַֻګݽޫ﫷﫫׵֭׺֮֫ݻַ۫׫׫׿۫֯ުުժު˳ժֻ־ڵ߻׻۫ޭޫֽ׿־ޫֽֿ۫뮮ڷ׶׷ݷݫګګ߻߿֫֫ڷ뷾֫׭֮֫ު뽿ժުժ뫫ުժުʿժ֯޷߮ڮ֫ݷݵ׽۽ګ뺿ڷֻݮޮ׮޶޽ֺ﫫ګﭮﭯ֭֮ګڮ۫֫ۯݶ۫֫꯶߮ڮݫګۻ۫뭯֫ުժ֯޷߮ڮ֫ݷݵ׽۽ګ뺿ڷֻݮޮ׮޶޽ֺ﫫ګﭮﭯ֭֮ګڮ۫֫ۯڻ߷׮֭֮׵۫֫ڭڽݭֵڽݷ׮ޯޯھֽ﷫ګ۷֫׫궫ڿֻ֫׿ھުۿժުժ뫯꫷ݾֶ굫֭֫ﭷ뫫۫ۯ뫫ߵ޵ګ֭ޫ֫뮭֫ݫ֮۫׫֫֫߫֫׭ڭ﫫֫֫׭֮ޫׯڭ֫֫뮫֭֫ګګ֫֫ګުժުժ׷ۻꫫۻڮ߾ݺ߾׫ﻫݫګ֭֭۫ګ׭֫֭֮۫ڭۻֺڭ֫׮ګ׭֭ڿگڮۭ֫ڮ֭֮ۺ֫֯׫ڮ׭۫ګުժުժ׮޵ګ۶׶׿믾ֽߵ׷ֶھݿ׿׷޷ڮݫֶַۭ۫뮫뺫ׯ۫ݮ֭߿ۭ궫ګ۫߯ݽުުժުժڮ֫׮׻ֻڽ׭ֶ֭ڵֺޭ׮۶ݷ޺߫޾귻ֺ޶ᆵڭֽڻֺ֫׫֮׶ﯮ֮ߵ׫޶ۭ֫׫ګ׭׫ݷۮ׭֯׫ުժުժݶ߿׽뺶ֶݯݻگ꿯׭׭ݮﯵ׷ׯ֫ګ֫ﯮگګ֫֫뷷֫۫۫ڶ֫ޫ޶֫֫ݫﯯުժުժֶ﫫۫޺뫫֯ݵ껫߮껭ݵﭶ뿾뮭뿾޻޺뵫ګ֫۫޵۫ګ޻ګֿ׭׭ݿ׺ׯګ׺׺֫ݵ֭׭ުꮿժުժߺ޾֮֫ﵽۮޯݫ꺻ڵݶ޵ݻ뮭ګֿ֯뵫ݺֶۮ۫ۿگ֫ޮ֮ݽ׮ۯ뮫뺫ۭ֭뿭֮֫۫׫߾֯ު窿ժުַժ۾׿굶ڷ׿ֵׯ۵۽뫮׫߶ۿݽݽ߯׮޵߿ݯ޵۾ڻֻޮ׭֫֯ګ۫۶׫ګ֭뮫֫׫گۭ׫֮֫۫۫۫뮫۫ګ֭붭ުժުժڿڽ۾ڷ׾۾ۯݶڵֵַںڮ׫֫߫߮ݯ֫߷۫޿޷ݯֿڮڭۮڭڭ֭߭ޮݷۭ׮ݷުժڿڽ۾ڷ׾۾ۯݶڵֵַںڮ׫֫߫߮ݯ֫߷۫޿޷ݯֿڮڭۮڭڭ֭߭ޮݷۭ׮ݷުժުժ۽ڿ۷ڮ۽ݻ꿺߾ݵ޿ݫ֫׽޺֫ڻݽ뷾߭߯֫믫֫߶ګ֯֯ڷݫݻﭮ﫫׾߻ުժުժ꾫ڿ߫ުժުժ׵׫ۯڶ֭׫ݻ޷ګޭ뫵ݶںڭ߻ګۭڷ뵫ݾ߷֫ߵ֯ݭ֮֫ں׫޺֫׫ںֵ֮׫ݵֻ߫֫ګ֮֫׫߫붺ުժުժ׿ַ޻׿ݶ׽׶ֺݺ궫꽫ۭݽۯߵݮڻ׻ׯ޿ߺڿڮޭ뫮ժڭ߮ڽڮ׽ֶᆳڿ믶ڵ֯֫ޮֶ׽﫫ޫڭ۫׫׫۫ګ׫ګڵ֫ڿ꾮붿﫫׫ֿګ׫޺׫ڿֶڿ֫ڿׯ׫֫׫ު請ۿժުժ֯޺ݭ׷뮭ګݻサֽڻڮ߶ۮڵۿݿ֮ڻֵֵڿ֯۫׫뮫֫߫׮׫ۮګ׫߫ګ߯뮫׫׫ڷ׫׫뮫뫮ֶ׫ߵ׫׫ֺ֫߫׫׫ުժުժگ־ڷޮ߫֫ګ׻ڻݵګߵֶ׻׺ݿګ׷֮ګֺګֽ֫޺֯ګ֫۫ګھުժުժݭ꾫۫굺꽶׫ݾֵֿ߯׫׫ޮ۫׭ֻ֫׫׫߿گ֮ڽ׫߫׫믫ۭ׭׫گ۫׫߫ݽګ֫ׯުջժުժ껫ڭڭګڻ۾߮ھڶݿ־޿ڵگׯޮ׫׫׫߫߫׫ֵ߫׫׫׭׫׫뫫׫׫׫׫׫׫߫׫׫߫׫׫ޫ׫֮׫׫׫׫׫뫫׫׫׫׫׫ުժުůժګֺ۫ޮڽׯګֽݯ޷ﮭュ׶꽯ڮڻ뽭׫׫޺붿׫׫׫߫׫׫׫ݻ߯׵߫׫֫׫޷׫֮׫߫׫׫׫߫׫ګ֫ު罫ժުժ뾷￷ׯ߯߾ݷ߭ݶۿꮶ־۾ۭڵ߯گ׾׾֫ڮ֮֫޿ۺ޺ֺ֭֮ﯯ׽ګ֮붵֮ګ֮ު뾷￷ׯ߯߾ݷ߭ݶۿꮶ־۾ۭڵ߯گ׾׾֫ڮ֮֫޿ۺ޺ֺ֭֮ﯯ׽ګ֮붵֮ګ֮ުժުժַڻ־ַ꽮ۿڮۻ޿ڮֵ׫֫ڵۮ֫ګۺֻ޽֮믫ַ׫׫߫׫׫׫׫߫׫ګޭ֫׫׫׫붿׫믫֫߫׵׫߫׫ޫ׫߫׵߫׫֫׫޻ުժުժサ޺ֶ׶ۺگۻۿ۾۾ڿ۾붮ߵ֫֫ڷڷޫ׫ׯ׫֯׫׫׫׫뫫׫﫯׫֭׫׫׫׫׫׫׫֯׫׺ݭ׫׶׫׫׫׫﫮֭׫׭׫׫׫׫׫ުުժުժ۵ںۻھ߿サַ֫ۮ޷߻ڻۻ֮׺ڻڮݯ۾֫붿ګ׫׫׫׫׫׽ګ׫߫׫֫׫ݭ׫׫׫ں׫׫֭׫ګ﫫׫׫߫׫֭ުժުժۮګڭ뺶뵶֫ں붽ֶ뫻ֶ뫻ڿۭݯ׾ڮڽګڵ֫ڿ꾮ֿ׭ֿګڿڿֶڿ֫ڿׯڶޫޫڭ۫׫׫ֺ۫ڿ׫ުֿժުժ뺶ۺ׺ڵ߽֯߾뫻ھ۶ڻ׭ڿڻ﻾۾ڵֵ׫ګ֭׫ޫګڮޫګֽۭ׫﫫ֿ궫׫׫﫫﫭ڿڮ߮׫ߵ׫ֿޫݯ׽׻׫׫׫ڿ׫׽ުժުժڭ߮׵ۮڷ۷ڻڻֵ߫׫׫׫׵߫׫׵߫׫׵֮׫׫׫׫׫׫׫׫߫׫׫߫׫׫׫׫׫׫׫׫׫׫׫׵׫߫׵׫߫׵ުժު׽ݮ߾꯵ַ߷߽޶ڿ뮿ۮ߫ׯۺ߭׭ګ׫ޫګ֭ګ׫׭޶֭׮ڮگڮڮ֫׭ݮګۯ֫׭ޯ׫ڮ׭ګׯڮ֮׫֮֫֫֫߭ުժު˫ժۮ۾ᄒֻ߾۵֭߭޺޻ڿֵﵻޫ޷ݮۺﶮﺫڽ׭֮֫ݮ֮׭ۮ֫׫׭ګ߽ݭޮ֫֫ڭڮ׫믫ۯ׫ݮ׫׫ڮ֯ګ֭֫ګׯڮګگ֭ުժުժ۵궿ۺ׮֭ګۮ֮޵꽽֫޶ޫֿ߽޻۫׫׫֫֯뫫ޫ׫׫ޫ뫫߽߫ݮ֫ګׯ뫫뫾ݽڭ뫫۫ڮ׮ۮۮުժުժ׽֯׻﷫ڽ߽뷿׷뫽ߵ׻ֵ뮮꫶ں׫߮֯׾֭ڮ׽ۯ׭붶ׯ׫޷׫뫭ޫ뭭ׯ뫽׮۵֮׫֮ުժުժﯶ߻믭ﶫ꺾ݫۭ־ߺ뻫ꭵ׮޻߽֭֫׫ںޭ׫׮ޭګ֫ۯگݫ֯֫߾ڮۭں۫뫫֮ׯۭ֫֮֯ۯ֯֫ﭫ޶ު޿ժﯶ߻믭ﶫ꺾ݫۭ־ߺ뻫ꭵ׮޻߽֭֫׫ںޭ׫׮ޭګ֫ۯگݫ֯֫߾ڮۭں۫뫫֮ׯۭ֫֮֯ۯ֯֫ﭫ޶ު޿ժުժ޵ﺯھ߭ޫ޶ۮۻֺڶ޷ۭ֭֫׮ۯڭ֭֫֫֫֫׭֫ګׯڮ׭ۯ׮׭׫֫߫ۯ׮ګׯޯګګ׭֯ڮ֫ګ׭ڭڮ֫ۯۭ֭֯ڮ׮֮۫׮׫׫׫ުժުժڷ޾۽۾۽֭߷׵ݭޯ޾֫׭ڮ׫ګ׽ڮڮݫ۫׮֯֯ګ֮ګ֫ۯ׭ڮگ׫ګ֭ޯ֭֯ګگگ׮֮ڮۯ۫ګګڮ׭뿫֭گ׫֮׫ުժުժݭۿ꯶׵ݭ֫ڵ׵׶ڻ׫뾽׫ֶ߶ߵﷵ﮶ֻݻ޺ߺޫֵޯ־ھۭ֫֫ګۿۮ궾ۮګڮ޻߾ګ֮߫׵ֿݷڽڵڿڮުժުժݻݽ׫۷ڽ־뭶߾껻ֻ뭭ޫ߫޶뫫֫ں߫޶֫ﭭ޽ﭭﭭﭻڮުꮮժުժ޶ڶںֻګ߮ꮺ֮ڷۻ׻꺫ݷ۫ﵿگ޷֮ׯ֭ګׯګ֭׭ڮׯڮ׫ڮگ֫׮گ׭׭ګ֮߮׫ׯ׫گׯꫯ֭׫׫֭֫ڮڮڭ׫ګ׫ׯު罫ժުժ߾ޫׯݫ׺ֻݫڷ׽ַ׾׺ۿֽۭ߽ݻݷݮ߫޾ں߾ݾ֭׭׫֫۫׫ׯ֭֯گ׫֮ګګ֮֮ګ׫֮׭֮ګ֫֫֫ګ۫ꫭׯګڮ׭߫ګګ֭֫׫֮뮫ۭ֭֮֫֯֫گׯׯ׫֮ګڮ׭֫׭ުժުժ߽ꮿֺ߮޵׫ޭ֫׺ޮ궫޶׿׭ڮׯ֫ۮַֽ֮׫ޫ׫׿ۯ׭֮붶ګ׫ګ֭ڮׯ׫ޭ߫ݷڮ֭֮֫׫ڮުժުժ޷ڭ׿޿־۾۶ߺݿ֫ݿֵڻݫ○ګ׫׭ޫ߫׭׫߫֯׫뫫ֵ߫׫׫ں뫫׫׫߫׫׵׫׫׫׫߫׫׷۽׫׫׫׫׾ުժުժޫ֯뽽֫׺ \ No newline at end of file diff --git a/softSwitches2.go b/softSwitches2.go index 08e1db3..7c85a6e 100644 --- a/softSwitches2.go +++ b/softSwitches2.go @@ -89,7 +89,7 @@ func buildNotImplementedSoftSwitchR(io *ioC0Page) softSwitchR { } } -func buildNotImplementedSoftSwitchW(io *ioC0Page) softSwitchW { +func buildNotImplementedSoftSwitchW(_ *ioC0Page) softSwitchW { return func(uint8) { // Do nothing } diff --git a/storage/WozSupportStatus.md b/storage/WozSupportStatus.md index 7921e8b..5a7da3c 100644 --- a/storage/WozSupportStatus.md +++ b/storage/WozSupportStatus.md @@ -4,7 +4,7 @@ ## With the sequencer: - How to begin - DOS 3.3: Works -- DOS 3.2: **Unknown, 13 sector disks boot not supported** + - DOS 3.2: Works with 13 sectors ROM - Next choices - Bouncing Kamungas: Working - Commando: Working diff --git a/storage/diskette.go b/storage/diskette.go index 497531b..cd0f57b 100644 --- a/storage/diskette.go +++ b/storage/diskette.go @@ -10,6 +10,7 @@ type Diskette interface { PowerOff(cycle uint64) Read(quarterTrack int, cycle uint64) uint8 Write(quarterTrack int, value uint8, cycle uint64) + Is13Sectors() bool } // IsDiskette returns true if the files looks like a 5 1/4 diskette @@ -19,14 +20,18 @@ func IsDiskette(data []byte) bool { // MakeDiskette returns a Diskette by detecting the format func MakeDiskette(data []byte, filename string, writeable bool) (Diskette, error) { + if isFileD13(data) { + return nil, errors.New("files with .d13 format not supported for 13 sectors disk, use .nib or .woz") + } + if isFileNib(data) { - var d diskette16sector + var d disketteNib d.nib = newFileNib(data) return &d, nil } if isFileDsk(data) { - var d diskette16sectorWritable + var d disketteNibWritable d.nib = newFileDsk(data, filename) d.nib.supportsWrite = d.nib.supportsWrite && writeable return &d, nil diff --git a/storage/diskette16sector.go b/storage/disketteNib.go similarity index 61% rename from storage/diskette16sector.go rename to storage/disketteNib.go index 30521dc..598ff3b 100644 --- a/storage/diskette16sector.go +++ b/storage/disketteNib.go @@ -6,19 +6,19 @@ See: https://github.com/TomHarte/CLK/wiki/Apple-GCR-disk-encoding */ -type diskette16sector struct { +type disketteNib struct { nib *fileNib position int } -func (d *diskette16sector) PowerOn(cycle uint64) { +func (d *disketteNib) PowerOn(cycle uint64) { // Not used } -func (d *diskette16sector) PowerOff(_ uint64) { +func (d *disketteNib) PowerOff(_ uint64) { // Not used } -func (d *diskette16sector) Read(quarterTrack int, cycle uint64) uint8 { +func (d *disketteNib) Read(quarterTrack int, cycle uint64) uint8 { track := d.nib.track[quarterTrack/4] value := track[d.position] d.position = (d.position + 1) % nibBytesPerTrack @@ -26,8 +26,13 @@ func (d *diskette16sector) Read(quarterTrack int, cycle uint64) uint8 { return value } -func (d *diskette16sector) Write(quarterTrack int, value uint8, _ uint64) { +func (d *disketteNib) Write(quarterTrack int, value uint8, _ uint64) { track := quarterTrack / 4 d.nib.track[track][d.position] = value d.position = (d.position + 1) % nibBytesPerTrack } + +func (d *disketteNib) Is13Sectors() bool { + // It amy be 13 sectors but we don't know + return false +} diff --git a/storage/diskette16sectorTimed.go b/storage/disketteNibTimed.go similarity index 66% rename from storage/diskette16sectorTimed.go rename to storage/disketteNibTimed.go index 51ca6ad..a330a26 100644 --- a/storage/diskette16sectorTimed.go +++ b/storage/disketteNibTimed.go @@ -1,18 +1,18 @@ package storage -type diskette16sectorTimed struct { +type disketteNibTimed struct { nib *fileNib cycleOn uint64 // Cycle when the disk was last turned on } -func (d *diskette16sectorTimed) PowerOn(cycle uint64) { +func (d *disketteNibTimed) PowerOn(cycle uint64) { d.cycleOn = cycle } -func (d *diskette16sectorTimed) PowerOff(_ uint64) { +func (d *disketteNibTimed) PowerOff(_ uint64) { // Not needed } -func (d *diskette16sectorTimed) getBitPositionInTrack(cycle uint64) int { +func (d *disketteNibTimed) getBitPositionInTrack(cycle uint64) int { // Calculate how long the disk has been spinning. We move one bit every 4 cycles. // In this implementation we don't take into account how long the motor takes to be at full speed. cycles := cycle - d.cycleOn @@ -20,7 +20,7 @@ func (d *diskette16sectorTimed) getBitPositionInTrack(cycle uint64) int { return int(position % (8 * nibBytesPerTrack)) // Ignore full turns } -func (d *diskette16sectorTimed) Read(quarterTrack int, cycle uint64) uint8 { +func (d *disketteNibTimed) Read(quarterTrack int, cycle uint64) uint8 { track := d.nib.track[quarterTrack/4] bitPosition := d.getBitPositionInTrack(cycle) bytePosition := bitPosition / 8 @@ -35,6 +35,11 @@ func (d *diskette16sectorTimed) Read(quarterTrack int, cycle uint64) uint8 { return value } -func (d *diskette16sectorTimed) Write(quarterTrack int, value uint8, _ uint64) { +func (d *disketteNibTimed) Write(quarterTrack int, value uint8, _ uint64) { panic("Write not implemented on time based disk implementation") } + +func (d *disketteNibTimed) Is13Sectors() bool { + // It amy be 13 sectors but we don't know + return false +} diff --git a/storage/diskette16sectorWritable.go b/storage/disketteNibWritable.go similarity index 63% rename from storage/diskette16sectorWritable.go rename to storage/disketteNibWritable.go index e9f8870..36e53aa 100644 --- a/storage/diskette16sectorWritable.go +++ b/storage/disketteNibWritable.go @@ -6,7 +6,7 @@ See: https://github.com/TomHarte/CLK/wiki/Apple-GCR-disk-encoding */ -type diskette16sectorWritable struct { +type disketteNibWritable struct { nib *fileNib position int @@ -15,21 +15,21 @@ type diskette16sectorWritable struct { dirtyTrack int } -func (d *diskette16sectorWritable) PowerOn(cycle uint64) { +func (d *disketteNibWritable) PowerOn(cycle uint64) { // Not used } -func (d *diskette16sectorWritable) PowerOff(_ uint64) { +func (d *disketteNibWritable) PowerOff(_ uint64) { d.commit() } -func (d *diskette16sectorWritable) Read(quarterTrack int, cycle uint64) uint8 { +func (d *disketteNibWritable) Read(quarterTrack int, cycle uint64) uint8 { track := d.nib.track[quarterTrack/4] value := track[d.position] d.position = (d.position + 1) % nibBytesPerTrack return value } -func (d *diskette16sectorWritable) Write(quarterTrack int, value uint8, _ uint64) { +func (d *disketteNibWritable) Write(quarterTrack int, value uint8, _ uint64) { track := quarterTrack / 4 if d.hasDirtyTrack && track != d.dirtyTrack { @@ -43,9 +43,14 @@ func (d *diskette16sectorWritable) Write(quarterTrack int, value uint8, _ uint64 d.dirtyTrack = track } -func (d *diskette16sectorWritable) commit() { +func (d *disketteNibWritable) commit() { if d.hasDirtyTrack { d.nib.saveTrack(d.dirtyTrack) d.hasDirtyTrack = false } } + +func (d *disketteNibWritable) Is13Sectors() bool { + // It amy be 13 sectors but we don't know + return false +} diff --git a/storage/disketteWoz.go b/storage/disketteWoz.go index dbca16d..aac1a60 100644 --- a/storage/disketteWoz.go +++ b/storage/disketteWoz.go @@ -31,9 +31,6 @@ func newDisquetteWoz(f *FileWoz) (*disketteWoz, error) { if f.Info.DiskType != 1 { return nil, errors.New("Only 5.25 disks are supported") } - if f.Info.BootSectorFormat == 2 { // Info not available in WOZ 1.0 - return nil, errors.New("Woz 13 sector disks are not supported") - } var d disketteWoz d.data = f @@ -98,3 +95,7 @@ func (d *disketteWoz) Read(quarterTrack int, cycle uint64) uint8 { func (d *disketteWoz) Write(quarterTrack int, value uint8, _ uint64) { panic("Write not implemented on woz disk implementation") } + +func (d *disketteWoz) Is13Sectors() bool { + return d.data.version == 2 && d.data.Info.BootSectorFormat == 2 +} diff --git a/storage/fileNib.go b/storage/fileNib.go index 7e3d622..011c965 100644 --- a/storage/fileNib.go +++ b/storage/fileNib.go @@ -21,6 +21,7 @@ const ( nibBytesPerTrack = 6656 nibImageSize = numberOfTracks * nibBytesPerTrack dskImageSize = numberOfTracks * numberOfSectors * bytesPerSector + d13ImageSize = numberOfTracks * 13 * bytesPerSector defaultVolumeTag = 254 cyclesPerBit = 4 ) @@ -52,6 +53,10 @@ func isFileDsk(data []uint8) bool { return len(data) == dskImageSize } +func isFileD13(data []uint8) bool { + return len(data) == d13ImageSize +} + func newFileDsk(data []uint8, filename string) *fileNib { var f fileNib